The intellectual merit of this proposal is to address these issues with innovative pedagogical and technological contributions. The project objectives are threefold: (1) To provide students with short-duration online courseware to support unsupervised learning of the C language through state of the art peer learning, active learning and cognitive apprenticeship approaches; (2) To integrate this online material in a virtual package which will also offer a remotely accessible development environment leveraging open source software tools which have been developed to address the specific pedagogical hindrances of the C language (e.g. clarification of compiler error messages, detection of common novice programmer bugs, validation against test-harnesses, etc.); (3) To facilitate adoption by packaging the solution as a downloadable, portable, VMware image running on a Windows or Linux host allowing students to access to the above-mentioned development environment and allowing the instructor to collect data on students' activity to assess student learning. The dissemination effort is includes running workshops both locally and in national computing education conferences.
The broader impact on educational practices is meant to reach a national level. From a qualitative perspective, C is not only key to system-oriented upper-level courses but also to develop students' understanding of the link between the programs they write and computer systems as a whole as well as strengthening their coding discipline. This project improves retention and performance of students in mid- and upper-level computing classes.