Teaching a University-Wide Programming Laboratory: Managing a C Programming Laboratory for a Large Class with Diverse Interests

Programming is an essential and compulsory subject for all engineering and physical sciences undergraduate students in our institution. The teaching, in C, is covered through two subjects that are separately enrolled and assessed, but closely coordinated: one subject is lecture-based and the other is laboratory-only. The diverse interests, backgrounds, and previous experiences of over 700 students in each class constitute both a challenge and an opportunity for innovative teaching practices. This paper describes experiences following recent changes in the organisation and management of the laboratory-based programming subject. The change to a less traditional organisation has reduced the number of failing students in the subject from over 100 in 2017 to just 14 in 2018. The new arrangements provide a clearer recognition of the students' programming abilities through their grades in the programming laboratory subject, while allowing us to provide suitable challenges and enhanced programming skills to the students who already have significant computer and programming experiences from their school studies.

[1]  Dan Budny,et al.  Four steps to teaching C programming , 2002, 32nd Annual Frontiers in Education.

[2]  Judithe Sheard,et al.  Assessment in First-Year ICT Education in Australia: Research and Practice , 2015, ACE.

[3]  Judithe Sheard,et al.  Understanding the Teaching Context of First Year ICT Education in Australia , 2015, ACE.

[4]  Raymond Lister,et al.  Learning programming, syntax errors and institution-specific factors , 2018, ACE.

[5]  Daryl J. D'Souza,et al.  Student concerns in introductory programming courses , 2013, ACE '13.

[6]  Daryl J. D'Souza,et al.  Benchmarking a set of exam questions for introductory programming , 2014, ACE.

[7]  Fred S. Keller Engineering personalized instruction in the classroom , 2017 .

[8]  Angela Carbone,et al.  Helping first year novice programming students PASS , 2011, ACE 2011.

[9]  Burkhard Wünsche,et al.  Intelligent tutoring systems for programming education: a systematic review , 2018, ACE.

[10]  Angela Carbone,et al.  Implementation of a smart lab for teachers of novice programmers , 2012, ACE 2012.

[11]  Abhiram G. Ranade Introductory Programming: Let Us Cut through the Clutter! , 2016, ITiCSE.

[12]  Andrew Luxton-Reilly,et al.  Common logic errors made by novice programmers , 2018, ACE.

[13]  Matthew Heinsen Egan,et al.  Program visualization and explanation for novice C programmers , 2014, ACE.

[14]  Donna Teague,et al.  A people-first approach to programming , 2009, ACE '09.

[15]  Michael Winikoff,et al.  A process for novice programming using goals and plans , 2013, ACE '13.

[16]  Peter Andreae,et al.  It's not them, it's us! Why computer science fails to impress many first years , 2014, ACE.

[17]  Ewan D. Tempero,et al.  Understanding semantic style by analysing student code , 2018, ACE.

[18]  Peter Vamplew,et al.  An Anti-Plagiarism Editor for Software Development Courses , 2005, ACE.

[19]  Daniel Shawcross Wilkerson,et al.  Winnowing: local algorithms for document fingerprinting , 2003, SIGMOD '03.

[20]  Patricia Haden,et al.  What Are We Doing When We Assess Programming? , 2015, ACE.

[21]  Jacqueline L. Whalley,et al.  How difficult are novice code writing tasks?: a software metrics approach , 2014, ACE.

[22]  Andrew Luxton-Reilly,et al.  Worked examples in computer science , 2014, ACE.