Authors: Minh Ngoc Ngo
Abstract: Traditional lecture-oriented approaches to teaching programming begin with a lesson on the building blocks of a program. Continuing on in a detail-oriented manner, they reach the end of the course without ever introducing students to sample projects that are rich enough to illustrate the system construction concepts and skills that software engineers must master to be successful in professional development. This academic approach stands in contrast to industrial practice, where programmers are equipped with a set of system skills for the development and maintenance of existing applications, open for adaptation to new needs and for reuse some of their components. In this paper, we present a project-based approach to teaching introductory programming fundamentals to undergraduates with little or no previous programming experience. We designed a curriculum patterned after the industry approach, where we begin by providing students with a working version of a game written in the C programming language. In laboratory assignments, students comprehend and improve the game, incrementally adding new features each week. Each laboratory task is designed to accomplish the learning outcome for one week of the course. We begin by highlighting the challenges in teaching programming to students from a wide variety of backgrounds. We then describe the course content and organization including lecture delivery, laboratory design and assessment design. Finally, we give an evaluation of the efficacy of our method based on initial experience in implementation of the course.
Keywords: programming; project-oriented; introductory programming; C language; pedagody; assessment design;