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.
Are you a researcher? Would you like to cite this paper? Visit the ASEE document repository at peer.asee.org for more tools and easy citations.