Designing and deploying programming courses: Strategies, tools, difficulties and pedagogy

Abstract

Designing and deploying programming courses is undoubtedly a challenging task. In this paper, an attempt to analyze important aspects of a sequence of two courses on imperative-procedural and object-oriented programming in a non-CS majors Department is made. This analysis is based on a questionnaire filled in by fifty students in a voluntary basis. The issues of the programming courses that are investigated refer to: the strategy selected for the introduction to programming; the sequence of the programming techniques and languages taught and the transition from the one to the other; students’ difficulties with programming in general and with imperative-procedural and object-oriented programming in specific; the teaching and learning design of both courses; and the material that students rely on for learning programming. Based on the analysis of students’ replies on the questionnaire, related work and the instructor’s experience on teaching the courses, conclusions are drawn regarding all the aforementioned aspects of designing and deploying programming courses. The main contribution of the paper is the fact that all the important and interrelated aspects of a sequence of two programming courses are investigated in conjunction, providing realistic implications and guidelines for improving the quality and effectiveness of existing programming courses and designing and deploying new courses. The main results refer to the usage of a pseudo-language for an introduction to programming, the transition from procedural to object-oriented programming, the intrinsic difficulties of learning programming, and practices for a more successful teaching and learning design of programming courses.

This is a preview of subscription content, access via your institution.

References

  1. Bennedsen, J. & Caspersen, M. (2004), Programming in Context – A Model-First Approach to CS1, Proceedings of SIGCSE’04, 477481

  2. Brusilovsky, P., Calabrese, E., Hvorecky, J., Kouchnirenko, A., & Miller, P. (1997). Mini-languages: A way to learn programming principles. Education and Information Technologies, 2, 65–83.

    Article  Google Scholar 

  3. Carter, J., & Fowler, A. (1998). Object oriented students? SIGCSE Bulletin, 30(3), 271.

    Article  Google Scholar 

  4. Cooper, S., Dann, W. and Pausch, R. (2003). Teaching objects-first in introductory computer science. In Proceedings of the 34th SIGCSE technical symposium on Computer science education (SIGCSE’03). ACM, New York, NY, USA, 191–195.

  5. Decker, R., & Hirshfield, S. (1994). The Top 10 Reasons Why Object-Oriented Programming Can’t Be Taught In CS1. ACM SIGCSE Bulletin, 26(1), 51–55.

    Article  Google Scholar 

  6. Du Boulay, B. 1989. Some Difficulties of Learning to Program, Studying The Novice Programmer. E. Soloway & J. Sprohrer (Eds.), Lawrence Erlbaum Associates, 283–300.

  7. Eckerdal, A. & Thuné, M. (2005). Novice Java programmers’ conceptions of “object” and “class”, and variation theory. In Proceedings of the 10th annual SIGCSE conference on Innovation and technology in computer science education (ITiCSE '05). ACM, New York, NY, USA, 89–93.

  8. Fleury, A. (2000). Programming in Java: student-constructed rules. ACM SIGCSE Bulletin, 32(1), 197–201.

    Article  Google Scholar 

  9. Freund, S. N., & Roberts, E. S. (1996). THETIS: An ANSI C programming environment designed for introductory use. ACM SIGSCE Bulletin, 28(1), 300–304.

    Google Scholar 

  10. Garner, S., Haden, P. and Robins, A. (2005). My program is correct but it doesn’t run: a preliminary investigation of novice programmers' problems. In Proc. of the 7th Australasian conference on Computing education - Volume 42 (ACE '05), Alison Young and Denise Tolhurst (Eds.), Vol. 42. Australian Computer Society, Inc., Darlinghurst, Australia, Australia, 173–180.

  11. Georgantaki, S., & Retalis, S. (2007). Using Educational Tools for Teaching Object Oriented Design and Programming. Journal of Information Technology Impact, 7(2), 111–130.

    Google Scholar 

  12. Hadjerrouit, S. (1998). A Constructivist Framework for Integrating the Java Paradigm into the Undergraduate Curriculum. ACM SIGCSE Bulletin, 30(3), 105–107.

    Article  Google Scholar 

  13. Hadjerrouit, S. (1999). A constructivist approach to object-oriented design and programming. ACM SIGCSE Bulletin, 31(3), 171–174.

    Article  Google Scholar 

  14. Hoc, J. (1989) Do We Really Have Conditionals In Our Brains? In Studying The Novice Programmer, Soloway, E., Sprohrer, J. (Eds.), Lawrence Erlbaum Associates, 179–190.

  15. Holland, S., Griffiths, R., & Woodman, M. (1997). Avoiding object misconceptions. ACM SIGCSE Bulletin, 29(1), 131–134.

    Article  Google Scholar 

  16. Kahney, H. (1989) What Do Novice Programmers Know About Recursion? In Studying The Novice Programmer, Soloway, E., Sprohrer, J. (Eds.), Lawrence Erlbaum Associates, pp. 209–228.

  17. Kaplan, R. M. 2010. Choosing a first programming language. In Proceedings of the 2010 ACM conference on Information technology education (SIGITE '10). ACM, New York, NY, USA, 163–164. DOI=10.1145/1867651.1867697 http://doi.acm.org/10.1145/1867651.1867697

  18. Kessler, C. & Anderson, J. (1989) Learning Flow of Control: Recursive and Iterative Procedures. In Studying The Novice Programmer, Soloway, E., Sprohrer, J. (Eds.), Lawrence Erlbaum Associates, pp. 229–260.

  19. Lahtinen, E., Ala-Mutka, K. & Jarvinen, H. 2005. A Study of Difficulties of Novice Programmers. In: Innovation and Technology in Computer Science Education 2005, 14–18

  20. McIver, L. and Conway, D. 1996. Seven Deadly Sins of Introductory Programming Language Design. In Proceedings of the 1996 International Conference on Software Engineering: Education and Practice (SE:EP '96) (SEEP '96). IEEE Computer Society, Washington, DC, USA, 309-.

  21. Or-Bach, R., & Lavy, I. (2004). Cognitive activities of abstraction in object orientation: an empirical study. ACM SIGCSE Bulletin, 36(2), 82–86.

    Article  Google Scholar 

  22. Pane, J. F. and Myers, B.A. (1996) Usability Issues in the Design of Novice Programming Systems, Technical Report CMU-CS-96-132, School of Computer Science, Carnegie Mellon University (also available as: Human-Computer Interaction Institute Technical Report CMU-HCII-96-101).

  23. Parker, K., Chao, J. T., Ottawa, T., & Chang, J. (2006). A Formal Language Selection Process for Introductory Programming Courses. Journal of Information Technology Education, 5, 133–151.

    Google Scholar 

  24. Putman, R., Sleeman, D., Baxter, J. & Kuspa, L. (1989) A Summary Of Misconceptions Of High-School BASIC Programmers. In Studying The Novice Programmer, Soloway, E., Sprohrer, J. (Eds.), Lawrence Erlbaum Associates, pp. 301–314.

  25. Ragonis, N., & Ben-Ari, M. (2005). A Long-Term Investigation of the Comprehension of OOP Concepts by Novices. International Journal of Computer Science Education, 15(3), 203–221.

    Article  Google Scholar 

  26. Roberts, E. (1994). The Art and Science of C: A Library Based Introduction to Computer Science. Prentice: Hall.

    Google Scholar 

  27. Robins, A., Rountree, J., & Rountree, N. (2003). Learning and Teaching Programming: A review and Discussion. Computer Science Education, 13(2), 137–172.

  28. Rogalski, J. & Samurcay, R. (1990) Acquisition of Programming Knowledge and Skills. In Psychology of Programming, Hoc, J., Green, T., Samurcay, R. and Gilmore, D. (Eds.), Academic Press, pp. 157–174.

  29. Samurcay, R. (1989) The Concept of Variable in Programming: its Meaning and Use in Problem-Solving by Novice Programmers. In Studying The Novice Programmer, Soloway, E. and Sprohrer, J. (Eds.), Lawrence Erlbaum Associates, pp. 161–178.

  30. Sanders, K. & Thomas, L. (2007). Checklists for grading object-oriented CS1 programs: concepts and misconceptions. In Proc. of the 12th annual SIGCSE conference on Innovation and Technology in Computer Science Education (ITiCSE '07). ACM, New York, NY, USA, 166–170.

  31. Sanders, K., Boustedt, J., Eckerdal, A., McCartney, R., Moström, J., Thomas, L. & Zander, C. (2008). Student understanding of object-oriented programming as expressed in concept maps. In Proc. 39th SIGCSE technical symposium on Computer science education (SIGCSE '08). ACM, New York, NY, USA, 332–336.

  32. Sleeman, D., Putman, R., Baxter, J. & Kuspa, L. (1988) An Introductory Pascal Class: A Case Study Of Students’ Errors. In Teaching and Learning Computer Programming, Mayer, R. (Ed.), Lawrence Erlbaum Associates, pp. 237–258.

  33. Smith, D. C., Cypher, A., & Sprohrer, J. (1994). KIDSIM: Programming Agents Without a Programming Language. Communications of the ACM, 37(7), 55–67.

    Article  Google Scholar 

  34. Spohrer, J. C., & Soloway, E. (1986). Novice Mistakes: Are the Folk Wisdoms Correct? Communications of the ACM, 29(7), 624–632.

    Article  Google Scholar 

  35. Teif, M. & Hazzan, O. (2006). Partonomy and taxonomy in object-oriented thinking: junior high school students’ perceptions of object-oriented basic concepts. In Working group reports on ITiCSE on Innovation and technology in computer science education (ITiCSE-WGR '06). ACM, New York, NY, USA, 55–60.

  36. Tempte, M C. (1991), Let’s Begin Introducing the Object-Oriented Paradigm, ACM SIGCSE Bulletin, Vol. 23, No. I, 338–342.

  37. Thomasson, B., Ratcliffe, M. & Thomas, L. (2006). Identifying novice difficulties in object oriented design. SIGCSE Bull. 38, 3 (June 2006), 28–32.

  38. Tsompanoudi, D., Satratzemi, M. and Xinogalos, S. (2013). Exploring the effects of Collaboration Scripts embedded in a Distributed Pair Programming System. Proceedings of the 18th ACM ITiCSE Conference, 1–3 July 2013, Canterbury UK, 225–230.

  39. Wick, M. (1995). On Using C++ and Object-Orientation in CS1: the Message is still more important than the Medium. ACM SIGCSE Bulletin, 27(1), 322–326.

    Article  Google Scholar 

  40. Xinogalos, S. (2010). Difficulties with Collection Classes in Java – The Case of the ArrayList Collection. Proceedings of the 2nd International Conference on Computer Supported Education (CSEDU), 7–10 April, Valencia, Spain, 120–125.

  41. Xinogalos, S. (2012a). Programming Techniques and Environments in a Technology Management Department. Proceedings of the 5th Balkan Conference in Informatics (BCI 2012), 16–20 September, Novi Sad, Serbia, ACM, New York, NY, USA, 136–141.

  42. Xinogalos, S. (2012b). An Evaluation of Knowledge Transfer from Microworld Programming to Conventional Programming. Journal of Educational Computing Research, 47, Number 3/2012, 251–277.

  43. Xinogalos, S. (2013). Using Flowchart-based Programming Environments for Simplifying Programming and Software Engineering Processes. In Proceedings of 4th IEEE EDUCON Conference, Berlin, Germany, 13-15 March 2013, IEEE Press, 1313–1322.

  44. Xinogalos, S., Satratzemi, M. & Dagdilelis, V. (2006). An Introduction to objectoriented programming with a didactic microworld: objectKarel. Computers & Education, 47(2):148–171.

Download references

Author information

Affiliations

Authors

Corresponding author

Correspondence to Stelios Xinogalos.

Rights and permissions

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

Cite this article

Xinogalos, S. Designing and deploying programming courses: Strategies, tools, difficulties and pedagogy. Educ Inf Technol 21, 559–588 (2016). https://doi.org/10.1007/s10639-014-9341-9

Download citation

Keywords

  • Programming course design
  • Teaching and learning programming
  • Procedural programming
  • Object-oriented programming
  • Pedagogy