Curriculum, Teaching and Learning, and Assessments for Introductory Programming Course

Learning to program involves acquisition of various skills including problem solving, fundamental design techniques as well as critical thinking. Generally, most of the novice programmers struggle to develop all these important skill. The research community has addressed the problem in many different ways while involving improvisations in curriculum, pedagogical methods, cognitive aspects, supporting tools, and in designing assessments. This research aims to analyze and synthesize the existing literature in the aforementioned areas. Research articles pertaining to the area of Introductory Programming Courses (IPC) have been found using appropriate search queries, while nearly 60 research articles, published in last ten years, have been carefully selected by employing a systematic filtering process. The scope of this work only covers the research conducted for IPC in higher education. Main findings of this study show that “solution proposal” and “evaluation research” have been reported as two main research types adopted by these studies. Moreover, pedagogy, language choice and students’ performance analysis are the most frequently addressed aspects of IPC; whereas, curriculum contents, assessment design, and teaching/learning through tools have appeared as less addressed aspects of IPC. Furthermore, a taxonomy of IPC has been presented based on the studied literature. Lastly, general considerations and future research directions have been presented for the practitioners and researchers in this area.

[1]  Gayatri Venugopal-Wairagade,et al.  Study of a Pedagogy Adopted to Generate Interest in Students Taking a Programming Course , 2016, 2016 International Conference on Learning and Teaching in Computing and Engineering (LaTICE).

[2]  Mirjana Ivanovic,et al.  Introductory Programming Subject in European Higher Education , 2016, Informatics Educ..

[3]  Robert D. Macredie,et al.  Teaching Introductory Programming: A Quantitative Evaluation of Different Approaches , 2015, TOCE.

[4]  Lauri Malmi,et al.  A Review of Generic Program Visualization Systems for Introductory Programming Education , 2013, TOCE.

[5]  Michael Kölling,et al.  Meaningful categorisation of novice programmer errors , 2014, 2014 IEEE Frontiers in Education Conference (FIE) Proceedings.

[6]  Olly Gotel,et al.  A Motivation Guided Holistic Rehabilitation of the First Programming Course , 2011, TOCE.

[7]  Graham Cooper,et al.  Trends in introductory programming courses in Australian universities: languages, environments and pedagogy , 2012, ACE 2012.

[8]  Taciana Pontual Falcão,et al.  A Systematic Literature Review on Teaching and Learning Introductory Programming in Higher Education , 2019, IEEE Transactions on Education.

[9]  Luis J. Manso,et al.  LearnBlock: A Robot-Agnostic Educational Programming Tool , 2020, IEEE Access.

[10]  Meghan Allen,et al.  Designing an Introductory Programming Course to Improve Non-Majors' Experiences , 2018, SIGCSE.

[11]  Won-Gyu Lee,et al.  The analysis and application of an educational programming language (RUR-PLE) for a pre-introductory computer science course , 2016, Cluster Computing.

[12]  Mirjana Ivanovic,et al.  Students’ perspective on the first programming language: C-like or Pascal-like languages? , 2017, Education and Information Technologies.

[13]  Ásrún Matthíasdóttir,et al.  The novice problem in computer science , 2011, CompSysTech '11.

[14]  Andrew Cain,et al.  SplashKit: A Development Framework for Motivating and Engaging Students in Introductory Programming , 2018, 2018 IEEE International Conference on Teaching, Assessment, and Learning for Engineering (TALE).

[15]  Pearl Brereton,et al.  Lessons from applying the systematic literature review process within the software engineering domain , 2007, J. Syst. Softw..

[16]  Sohail Iqbal Malik Improvements in Introductory Programming Course: Action Research Insights and Outcomes , 2018 .

[17]  Ali Idri,et al.  Requirements engineering education: a systematic mapping study , 2013, Requirements Engineering.

[18]  Ercan Top,et al.  Factors Affecting Students' Attitudes toward Computer Programming , 2019, Informatics Educ..

[19]  Mark Guzdial,et al.  When Life and Learning Do Not Fit: Challenges of Workload and Communication in Introductory Computer Science Online , 2012, TOCE.

[20]  Adnan Abid,et al.  A Framework for the Assessment of First Programming Language , 2012 .

[21]  Viera K. Proulx,et al.  Introductory Computing: The Design Discipline , 2011, ISSEP.

[22]  Ryan T. Wright,et al.  IS 2010: Curriculum Guidelines for Undergraduate Degree Programs in Information Systems , 2010, Commun. Assoc. Inf. Syst..

[23]  Debzani Deb,et al.  Does language choice influence the effectiveness of online introductory programming courses? , 2013, SIGITE Conference.

[24]  Robert B. Allen,et al.  The Impact of Different Teaching Approaches and Languages on Student Learning of Introductory Programming Concepts , 2016, ACM Trans. Comput. Educ..

[25]  Raad A. Alturki Measuring and Improving Student Performance in an Introductory Programming Course , 2016, Informatics Educ..

[26]  Igor Mekterović,et al.  Building a Comprehensive Automated Programming Assessment System , 2020, IEEE Access.

[27]  Onyeka Ezenwoye What Language? - The Choice of an Introductory Programming Language , 2018, 2018 IEEE Frontiers in Education Conference (FIE).

[28]  Lisa M. Olivieri,et al.  Reducing the learning curve in an introductory programming course , 2012 .

[29]  Daryl J. D'Souza,et al.  Relationship between perceived problem-solving skills and academic performance of novice learners in introductory programming courses , 2019, J. Comput. Assist. Learn..

[30]  Jeffrey L. Duffany Application of Active Learning Techniques to the Teaching of Introductory Programming , 2017, IEEE Revista Iberoamericana de Tecnologias del Aprendizaje.

[31]  Richard Zanibbi,et al.  Moving away from programming and towards computer science in the CS first year , 2011 .

[32]  Gabriela Silva-Maceda,et al.  More Time or Better Tools? A Large-Scale Retrospective Comparison of Pedagogical Approaches to Teach Programming , 2016, IEEE Transactions on Education.

[33]  Bassey Isong,et al.  A Methodology for Teaching Computer Programming: first year students’ perspective , 2014 .

[34]  Ali Alammary,et al.  Blended learning models for introductory programming courses: A systematic review , 2019, PloS one.

[35]  Sohail Iqbal Malik Assessing the Teaching and Learning Process of an Introductory Programming Course With Bloom's Taxonomy and Assurance of Learning (AOL) , 2019, Int. J. Inf. Commun. Technol. Educ..

[36]  James H. Davenport,et al.  An Analysis of Introductory Programming Courses at UK Universities , 2017, Art Sci. Eng. Program..

[37]  George Ghinea,et al.  On the Domain-Specificity of Mindsets: The Relationship Between Aptitude Beliefs and Programming Practice , 2014, IEEE Transactions on Education.

[38]  Raymond Lister,et al.  Early relational reasoning and the novice programmer: swapping as the hello world of relational reasoning , 2011, ACE 2011.

[39]  Salihu Ibrahim Dasuki,et al.  Undergraduate Students’ Failure in Programming Courses in Institutions of Higher Education in Developing Countries: A Nigerian Perspective , 2016 .

[40]  Muhammad Ateeq,et al.  C++ or Python? Which One to Begin with: A Learner's Perspective , 2014, 2014 International Conference on Teaching and Learning in Computing and Engineering.

[41]  Iulian Neamtiu,et al.  Assessing programming language impact on development and maintenance: a study on c and c++ , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[42]  Kristin S. Benli,et al.  Implicit Theories and Self-Efficacy in an Introductory Programming Course , 2017, IEEE Transactions on Education.

[43]  Karen Anewalt,et al.  A snapshot of current languages used in industry , 2012, 2012 Frontiers in Education Conference Proceedings.

[44]  Ying Liu,et al.  Assessment of programming language learning based on peer code review model: Implementation and experience report , 2012, Comput. Educ..

[45]  Raina Mason,et al.  Why the bottom 10% just can't do it: mental effort measures and implication for introductory programming courses , 2012, ACE 2012.

[46]  Edna Dias Canedo,et al.  An Assessment of the Teaching-Learning Methodologies Used in the Introductory Program-ming Courses at a Brazilian University , 2018, Informatics Educ..

[47]  Neil Brown,et al.  Investigating novice programming mistakes: educator beliefs vs. student data , 2014, ICER '14.

[48]  M. Farooq,et al.  An Evaluation Framework and Comparative Analysis of the Widely Used First Programming Languages , 2014, PloS one.

[49]  Liz Bacon,et al.  Understanding Computational Thinking before Programming: Developing Guidelines for the Design of Games to Learn Introductory Programming through Game-Play , 2011, Int. J. Game Based Learn..

[50]  Andreas Stefik,et al.  An Empirical Investigation into Programming Language Syntax , 2013, TOCE.

[51]  Anabela Gomes,et al.  A teacher's view about introductory programming teaching and learning: Difficulties, strategies and motivations , 2014, 2014 IEEE Frontiers in Education Conference (FIE) Proceedings.

[52]  Emanuel de Jesus Teaching computer programming with structured programming language and flowcharts , 2011, OSDOC '11.

[53]  Kasia Muldner,et al.  An Incremental Mindset Intervention Increases Effort During Programming Activities but Not Performance , 2020, ACM Trans. Comput. Educ..

[54]  Juha Sorva,et al.  Notional machines and introductory programming education , 2013, TOCE.

[55]  Arto Vihavainen,et al.  Predicting Students' Performance in an Introductory Programming Course Using Data from Students' Own Programming Process , 2013, 2013 IEEE 13th International Conference on Advanced Learning Technologies.

[56]  Silvia Mara Abrahão,et al.  Usability evaluation methods for the web: A systematic mapping study , 2011, Inf. Softw. Technol..

[57]  Linda Marshall A Topic-Level Comparison of the ACM/IEEE CS Curriculum Volumes , 2017 .

[58]  Divna Krpan,et al.  Introductory programming languages in higher education , 2011, 2011 Proceedings of the 34th International Convention MIPRO.

[59]  Pearl Brereton,et al.  Systematic literature review: teaching novices programming using robots , 2011, IET Softw..

[60]  Michail N. Giannakos,et al.  Introductory programming: a systematic literature review , 2018, ITiCSE.

[61]  Joint Task Force on Computing Curricula Computer Science Curricula 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science , 2013 .

[62]  Dalton Serey Guerrero,et al.  Learning styles in programming education: A systematic mapping study , 2017, 2017 IEEE Frontiers in Education Conference (FIE).

[63]  Carlo A. Furia,et al.  A Comparative Study of Programming Languages in Rosetta Code , 2014, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[64]  Shi-Jinn Horng,et al.  A flowchart-based intelligent tutoring system for improving problem-solving skills of novice programmers , 2015, J. Comput. Assist. Learn..

[65]  Claes Wohlin,et al.  Guidelines for snowballing in systematic literature studies and a replication in software engineering , 2014, EASE '14.

[66]  Yizhou Qian,et al.  Students’ Misconceptions and Other Difficulties in Introductory Programming , 2017, ACM Trans. Comput. Educ..

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

[68]  Cecily Heiner Mining student responses to learn answer models: a case study using data from an introductory programming course , 2013 .