Two-Phase CS0 for Introductory Programming
CS0 for CS1
DOI:
https://doi.org/10.53560/PPASA(59-1)710Keywords:
Programming, introductory programming, pair programming, CS0, motivationAbstract
Computer programming is the heart of computer science and thereby an important skill of the students. However, comprehending programming is extremely hard and introductory courses on programming are notorious to cause issues and challenges for learners, which affect their motivation and consequently cause high dropouts and low retention. This paper introduced CS0 as a precursor programming course to teach beginners, the fundamental notions of programming before the first course on programming. The proposed CS0 is grounded on two-phase learning strategy and equipped with a collaboration strategy. The results of the initial evaluation of proposed course are reasonably encouraging to motivate and prepare the novices for the first course on programming. The statistical significance of a proposed course is observed in improving the academic outcomes of novices in a first programming course. The normality of data was checked using the Kolmogorov-Smirnov and Shapiro-Wilk tests. The findings were analyzed with one-way ANOVA test and Kruskal–Wallis H test, indicating that the suggested course is statistically significant in enhancing the academic achievements of beginners in their first programming course.
References
J. O’Kelly, and J. P. Gibson. RoboCode & Problem- based Learning: A Non-prescriptive Approach to Teaching Programming. ACM SIGCSE Bulletin 38(3): 217-221 (2006).
M. V. McCracken., D. D. Almstrum., M. Guzdial., D. Hagan., Y. B. Kolikant., C. Laxer., L. Thomas.,I. Utting, and T. Wilusz. A Multi-national, Multi- institutional Study of Assessment of Programming Skills of First year CS Students. ACM SIGCSE Bulletin 33(4):125-180 (2001).
B. Sabitzer, and S. Pasterk. Brain-based programming continued: Effective teaching in programming courses. Proceedings of IEEE Frontiers in Education Conference: 1-6 (2014).
C. Ott. Decoding Feedback: Improving feedback practices for students in introductory programming courses. PhD thesis, University of Otago, Dunedin, New Zealand: (2014).
S. M. Taheri., M. Sasaki, and H. T. Ngetha. Evaluating the Effectiveness of Problem Solving Techniques and Tools in Programming. Proceedings of Science and Information Conference: 928-932 (2015).
A. Sen. Using Code Analysis Tool in Introductory Programming Class. Issues in Information Systems 15(1): 1-10 (2014).
A. Ali, and D. Smith. Teaching an Introductory Programming Language in a General Education Course. Journal of Information Technology Education: Innovations in Practice 13: 57-67 (2014).
G. Gárcia-Mateos, and J. L. Fernández-Alemán. A Course on Algorithms and Data structures using On-line Judging. ACM SIGCSE Bulletin 41(3):45- 49 (2009).
M. Brown., C. Hu., C. Burch, and M. Nooner. CS0: Why, What, and How?: Panel Discussion. Journal of Computing Sciences in Colleges 25 (5):79-81 (2010).
K. Howell. First Computer Languages. Journal of Computing Sciences in Colleges 18(4):317-331 (2003).
A. Riker. Natural Language in Programming An English Syntax-based Approach for Reducing the Difficulty of First Programming Language Acquisition. Master’s thesis, Department of Computer Science, Graduate School of Arts and Sciences, Brandeis University: (2010).
M. Konecki. Introductory Programming Education for Visually Impaired. International Journal of Research in Engineering and Technology 3(17): 65- 70 (2014).
K. Price, and S. Smith. Improving Student Performance in CS1. Journal of Computing Sciences in Colleges 30(2): 157-163 (2014).
A. Settle., A. Vihavainen, and J. Sorva. Three Views on Motivation and Programming. Proceedings of the 2014 Conference on Innovation & Technology in Computer Science Education: 321-322 (2014).
A. Robins. Learning edge momentum: a new account of outcomes in CS1. Computer Science Education 20(1): 37-71 (2010).
R. H. Sloan, and P. Troy. CS 0.5: A Better Approach to Introductory Computer Science for Majors. ACM SIGCSE Bulletin 40(1): 271-275 (2008).
A. Robins. Novice programmers and introductory programming, S. A. Fincher & A. V. Robins (Eds.), the Cambridge Handbook of Computing Education Research. Cambridge, UK: Cambridge University Press: 327-376 (2019).
P. Y. Amoako., K. A. Sarpong., J. K. Arthur, and C. Adjetey. Performance of Students in Computer Programming: Background, Field of Study and Learning Approach Paradigm. International Journal of Computer Applications 77(12): 17-21 (2013).
L. M. Serrano-Camara., M. Paredes-Velasco., C. Alcover, and J. A. Velazquez-Iturbide. An evaluation of students motivation in computer supported collaborative learning of programming concepts. Computers in Human Behavior 31: 499-508 (2014).
R. Anderson., M. D. Ernst., R. Ordonez., P. Pham, and S. A. Wolfman. Introductory Programming Meets the Real World: Using Real Problems and Data in CS1. Proceedings of the 45th ACM Technical Symposium on Computer Science Education, pages: 465-466 (2014).
U. Nikula., O. Gotel, and J. Kasurinen. A Motivation Guided Holistic Rehabilitation of the First Programming Course. ACM Transactions on Computing Education 11(4): 24:1-24:38 (2011).
A. Tafliovich., J. Campbell, and A. Petersen. A Student Perspective on Prior Experience in CS1. Proceeding of the 44th ACM Technical Symposium on Computer Science Education: 239-244 (2013).
K. Al-Tahat. The Impact of a 3D Visual Programming Tool on Students’ Performance and Attitude in Computer Programming: A Case Study in Jordan. Journal of Cases on Information Technology 21(1): 52-64 (2019).
A. Marron., G. Weiss, and G. Wiener. A Decentralized Approach for Programming Interactive Applications with JavaScript and Blockly. Proceedings of the 2nd Edition on Programming Systems, Languages and Applications Based on Actors, Agents, and Decentralized Control Abstractions: 59-70 (2012).
M. Seraj., E. Katterfeldt., K. Bub., S. Autexier, and R. Drechsler. Scratch and Google Blockly: How Girls’ Programming Skills and Attitudes are Influenced. Proceedings of the 19th Koli Calling International Conference on Computing Education Research: 1-10 (2019).
J. M. Costa, and G. L. Miranda. Using Alice Software with 4C-ID Model: Effects in Programming Knowledge and Logical Reasoning, Informatics in Education 18(1): 1-15 (2019).
Y. Matsuzawa., T. Ohata., M. Sugiura, and S. Saka. Language Migration in non-CS Introductory Programming Through Mutual Language Translation Environment. Proceedings of the 46th ACM Technical Symposium on Computer Science Education: 185-190 (2015).
K. Powers., S. Ecott, and L. M. Hirshfield. Through the Looking Glass: Teaching CS0 with Alice. ACM SIGCSE Bulletin 39(1):213-217 (2007).
A. Stefik, and S. Siebert. An Empirical Investigation into Programming Language Syntax. ACM Transactions on Computing Education 13(4): 19:1- 19:40 (2013).
M. A. Bakar., M. Mukhtar, and F. Khalid, The Development of a Visual Output Approach for Programming via the Application of Cognitive Load Theory and Constructivism. International Journal of Advanced Computer Science and Applications 10(11): 305-312 (2019).
X. Zhang., C. Zhang., T. F. Stafford, and Ping Zhang. Teaching Introductory Programming to IS Students: The Impact of Teaching Approaches on Learning Performance. Journal of Information Systems Education 24(2): 147-155 (2013).
S. I. Malik., R. Mathew., R. Al-Nuaimi., A. Al- Sideiri, and J. Coldwell-Neilson. Learning problem solving skills: Comparison of E-learning and M-learning in an introductory programming course. Education and Information Technologies 24: 2779- 2796 (2019).
C. Farrell. Predicting (and Creating) Success in CS1. Issues in Information Systems 7(1): 259-263 (2006).
M. Panitz., K. Sung, and R. Rosenberg. Game Programming in CS0: A Scaffolded Approach. Journal of Computing Sciences in Colleges 26(1): 126-132 (2010).
M. V. Dyne, and J. Braun. Effectiveness of a Computational Thinking (CS0) Course on Student Analytical Skills. Proceedings of the 45th ACM Technical Symposium on Computer Science Education: 133-138 (2014).
S. Uludag., M. Karakus, and S. W. Turner. Implementing IT0/CS0 with Scratch, App Inventor For android, and Lego Mindstorms. Proceedings of the 2011 Conference on Information Technology Education: 183-190 (2011).
M. Haungs., C. Clark., J. Clements, and D. Janzen. Improving First-year Success and Retention Through Interest-based CS0 Courses. Proceedings of the 43rd ACM Technical Symposium on Computer Science Education: 589-594 (2012).
D. Gudmundsen., L. Olivieri, and N. Sarawagi. Using Visual Logic: Three Different Approaches in Different Courses - General Education, CS0, and CS1. Journal of Computing Sciences in Colleges 26(6): 23-29 (2011).
M. S. Naveed., M. Sarim, and K. Ahsan. Learners Programming Language a Helping System for Introductory Programming Courses. Mehran University Research Journal of Engineering & Technology 35(3): 347-358 (2016).
J. Q. Dawson., M. Allen., A. Campbell, and A. Valair. Designing an Introductory Programming Course to Improve Non-Majors’ Experiences. Proceeding of 49th ACM Technical Symposium on Computer Science Education: 26-31 (2018).
Z. J. Wood., J. Clements., Z. Peterson., D. Janzen., H. Smith., M. Haungs., J. Workman., J. Bellardo, and B. DeBruhl. Mixed Approaches to CS0: Exploring Topic and Pedagogy Variance After Six Years of CS0. Proceedings of the 49th ACM Technical Symposium on Computer Science Education: 20-25 (2018).
S. Mishra., S. Balan., S. Iyer, and S. Murthy. Effect of a 2-week Scratch Intervention in CS1 on Learners with Varying Prior Knowledge. Proceedings of the 2014 Conference on Innovation & Technology in Computer Science Education: 45-50 (2014).
J. J. Merrienboer, and J. Sweller. Cognitive load theory and complex learning: Recent developments and future directions. Educational Psychology Review 17(2): 147-177 (2005).
T. Babbitt., C. Schooler, and Kyle King. Punch Cards to Python: A Case Study of a CS0 Core Course. Proceedings of the 50th ACM Technical Symposium on Computer Science Education: 811-817 (2019).
J. Parham-Mocello., M. Erwig, and E. Dominguez. To Code or Not to Code? Programming in Introductory CS Courses. Proceeding of IEEE Symposium on Visual Languages and Human- Centric Computing: 187-191 (2019).
M. Klassen. Visual Approach for Teaching Programming Concepts. Proceedings of the 9th International Conference on Engineering Education: M4H-5-M4H-10 (2006).
V. Isomoottonen., A. Lakanen, and V. Lappalainen. K-12 Game Programming Course Concept Using Textual Programming. Proceedings of the 42nd ACM Technical Symposium on Computer Science Education: 459-464 (2011).
R. Garlick, and E. C. Cankaya. Using Alice in CS1: A Quantitative Experiment. Proceedings of the Fifteenth Annual Conference on Innovation and Technology in Computer Science Education:165-168 (2010).
L. Jarratt., N. A. Bowman., K. C. Culver, and A. M. Segre. Proceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science Education: 176-181 (2019).
M. Ayub., O. Karnalim., R. Risal., W. F. Senjaya, and M. C. Wijanto. Utilising pair programming to enhance the performance of slow-paced students on introductory programming. Journal of Technology and Science Education 9(3): 357-367 (2019).
M. S. Naveed, and M. Sarim. Didactic Strategy for Learning Theory of Automata & Formal Languages, Pakistan Academy of Sciences, A. Physical and Computational Sciences 55 (2): 55–67 (2018).
C. Tsai. Improving students’ understanding of basic programming concepts through visual programming language: The role of self-efficacy, Computers in Human Behavior 95: 224-232 (2019).
M. Noone, and A. Mooney. Visual and textual programming languages: a systematic review of the literature, Journal of Computers in Education 5: 149-174 (2018).
M. N. Demaidi, M. Qamhieh, and A. Afeefi. Applying Blended Learning in Programming Courses, IEEE Access vol. 7: 156824-156833, (2019).
M. S. Naveed, M. Sarim, and A. Nadeem. C in CS1: Snags and Viable Solution, Mehran University Research Journal of Engineering & Technology 37(1): 1-14 (2018).
J. Figueiredo, and F. J. García-Peñalvo. Intelligent Tutoring Systems approach to Introductory Programming Courses. Proceedings of the Eighth International Conference on Technological Ecosystems for Enhancing Multiculturality: 34-39 (2020).
M. S. Naveed, and M. Sarim. Analyzing the Effects of Error Messages Presentation on Debugging and Programming, Sukkur IBA Journal of Computing and Mathematical Sciences 4(2): 38-48 (2020).
S. Papadakis, and M. Kalogiannakis. Using Gamification for Supporting an Introductory Programming Course. The Case of ClassCraft in a Secondary Education Classroom, Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering 229: 366-375 (2018).
U. Omer, M. S. Farooq, and A. Abid. Introductory programming course: review and future implications, PeerJ Computer Science 7: e647 (2021).
T. Teodosiev, and A. Nachev, Some Pitfalls in Introductory Programming Courses. Informatics in Education 11(2): 241-255 (2012).