Instruction of introductory programming course using multiple contexts

This paper describes the experience of redesigning a traditional CS1 programming course, utilizing traditional coding practices as well as microcontroller units (MCU) based coding, to provide multiple programming environments. The objective of this redesign is to improve the programming skills for engineering students by 1) providing them with program development experience in multiple contexts and 2) relating the initial programming experience to the typical notion of engineering through significant hardware experience. Typical CS1 courses are designed with an instructor led lecture focusing on the introduction of specific computer skills and languages while programming assignments and laboratories help strengthen these skills in the students. For this remodeling, in addition to the typical programming exercises, supplementary MCU based lab exercises were used to provide an additional, different programming target for increased learning and highlighting the complementary relationship between hardware and software. The outcomes of this effort demonstrate that the addition of a MCU to an introductory programming course can work as an effective motivator, providing the students with a secondary context to reinforce programming skills developed during the course, and that providing multiple contexts (traditional desktop programming and hardware-based programming) together can aid in learning and the transfer of knowledge.

[1]  Barry S. Fagin,et al.  Teaching computer science with robotics using Ada/Mindstorms 2.0 , 2001, SIGAda '01.

[2]  Carlos Delgado Kloos,et al.  Impact of learning experiences using LEGO Mindstorms® in engineering courses , 2010, IEEE EDUCON 2010 Conference.

[3]  Lynda Thomas,et al.  Learning styles and performance in the introductory programming sequence , 2002, SIGCSE '02.

[4]  Victor Adamchik,et al.  Adaptive book: teaching and learning environment for programming education , 2005, International Conference on Information Technology: Coding and Computing (ITCC'05) - Volume II.

[5]  Frederick W. B. Li,et al.  Failure rates in introductory programming revisited , 2014, ITiCSE '14.

[6]  Jens Bennedsen,et al.  Failure rates in introductory programming , 2007, SGCS.

[7]  John P. Dempsey,et al.  Collaboration between Engineering Departments at Clarkson University for a Freshman-Level Engineering Programming Course Including an Experimental Lab Experience , 2007 .

[8]  Louis S. Nadelson,et al.  A Comparison of Two Engineering Outreach Programs for Adolescents , 2011 .

[9]  Eladio Gutiérrez,et al.  E‐assessment of Matlab assignments in Moodle: Application to an introductory programming course for engineers , 2013, Comput. Appl. Eng. Educ..

[10]  Mark Goadrich Incorporating tangible computing devices into CS1 , 2014 .

[11]  David E. Clough,et al.  A Change In Approach To Engineering Computing For Freshmen Similar Directions At Three Dissimilar Institutions , 2001 .

[12]  Michael Davis,et al.  Thinking Like an Engineer: Studies in the Ethics of a Profession , 1998 .

[13]  Jorge E. Gatica,et al.  An Alternative Route For Teaching Process Synthesis And Design , 2000 .

[14]  J. A. Schumacher,et al.  Teaching introductory programming, problem solving and information technology with robots at West Point , 2001, 31st Annual Frontiers in Education Conference. Impact on Engineering and Science Education. Conference Proceedings (Cat. No.01CH37193).

[15]  Deepak Kumar,et al.  Games, robots, and robot games: complementary contexts for introductory computing education , 2008, GDCSE.