New Orleans, Louisiana
June 26, 2016
June 26, 2016
August 28, 2016
Computing & Information Technology
There are many teaching tools that help students learn programming. However, guiding students to move smoothly from beginner to professional programmers presents many challenges. Modern software development requires knowledge of multiple tools and skills, such as creating a developing environment and mastering a series of tools to detect and remove bugs, profile performance, perform unit and integration tests, evaluate test coverage, and conduct version control. These concepts might be too intimidating for students who have only recently learned the basic programming knowledge like loops, arrays, or functions. The current teaching style can be generally categorized into two branches. First, the instructor explains programming tools at the beginning of the course and expects students to use them, before the actual needs arise and hence lacking the context of the tools. Second, the students focus on coding without learning these concepts for software development and management; they are unaware of these concepts and tools. This approach is insufficient when the students leave school and enter the workplace where knowledge and skill in using these tools are expected.
This paper presents a system designed to guide student learning of coding techniques within the context of specific coding skills, so that they can move to more advanced programming level smoothly. The system provides a web interface to both instructors and students in two different views. An instructor can post programming assignments and configure available tools on the system, whereas students can write their programs on a different view. All the programming tools are hidden behind the web interface and run on cloud instances. Students gain practical understanding of the valuable information presented by these tools without learning how to install, configure, execute, and update them. The system can analyze and test students’ programs based on a set of specifications from the instructor, and provide personalized feedback about the mistakes each student makes, including performance profile, test coverage, memory access violation, and resource utilization. Furthermore, the system can help the instructor identify common mistakes students make while writing their programs before the assignments are submitted for grading. The advantage of this approach is that it monitors students’ learning progress, not only the final submissions. The system is available to many users with various background and thus creates a learning community beyond the boundaries of classrooms.
The core functions of this system have already been implemented through alpha testing in an intermediate level C programming course with 35 students. We will conduct a survey and an in-person focus group at the end of this semester. The survey will measure students’ perceived value of and satisfaction with the system, particularly in comparison with existing methods of coding instruction. Utility of our system is gauged with a detailed focus group, conducted by an external interviewer. These focus groups follow Kruger’s framework to identify benefits and potential limitations of the tools, as well as suggestions for improvement.
ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2016 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015