Abstract
Teaching of programming has long been dominated by language-oriented approaches augmented by industrial design techniques, with little attendant pedagogy. However, an influential alternative has been Papert’s constructivism, through playful exploration of constrained microworlds. The archetypal microworld is based on turtle graphics, as exemplified in Papert’s Logo language. Here, students compose and repeat sequences of operations to steer and move a turtle that leaves a trail behind it. Contemporary graphical environments like Alice and Scratch augment the turtle world with colourful interacting animated avatars.
Computational thinking (CT), as popularised by Wing, offers an approach to problem-solving in which programming is the final stage. CT has been widely heralded as a new pedagogy of programming. However, interpretations of CT vary widely from a loose assemblage of techniques to a systematic discipline. In this chapter, I will argue that microworlds and objects first build superficial programming skills at the expense of deeper competences in problem-solving. I will further argue that systematic CT offers a way to refocus on problem-solving for programming.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Barnes, D., & Kölling, M. (2003). Objects First with Java: A practical introduction using BlueJ. Upper Saddle River: Prentice-Hall.
Berger, M. (2005). Vygotsky’s theory of concept formation and mathematics education. In H. L. Chick & J. L. Vincent (Eds.), Proceedings of the 29th conference of the International Group for the Psychology of Mathematics Education (Vol. 2, pp. 153–160). Melbourne: PME.
BBC Bitesize. (2017). Introduction to computational thinking. http://www.bbc.co.uk/education/guides/zp92mp3/revision (inspected 16/5/17).
Berkley, E. C., & Bobrow, D. G. (Eds.). (1964). The programming language LISP: Its operation and applications. Cambridge, MA: MIT Press.
Booch, G., Rumbaugh, J., & Jacobson, I. (2005). The Unified Modeling Language user guide (2nd ed.). Upper Saddle River: Addison-Wesley.
Brusilovsky, P., Calabrese, E., Hvorecky, J., Kouchnirenko, A., & Miller, P. (1997). Mini-Languages: A way to learn programming principles. Education and Information Technologies, 2(1), 65–83.
Cass. S. (2017). The 2017 top programming languages, IEEE Spectrum, 18th July, 2017.
Dahl, O. J. (2004). The birth of object orientation: the Simula languages. In From object-orientation to formal methods. Berlin: Springer.
Denning, P. J. (2017). Remaining trouble spots with computational thinking. CACM, 60(6), 33–39.
Denning, P. J., Tedre, M., & Yongpradit, P. (2017). Misconceptions about computer science. CACM, 60(3), 31–33.
Ehlert, A., & Schulte, C. (2009). Empirical comparison of objects-first and objects-later. In Proceedings of the Fifth International Workshop on Computing Education Research (ICER’09), ACM (pp. 15–26).
Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1995). Design patterns: Elements of reuseable object-oriented software. Boston: Addison- Wesley.
Google. (2017). What is computational thinking? In computational thinking for educators. https://computationalthinkingcourse.withgoogle.com/unit?lesson=8&unit=1 (inspected 16/5/17).
Gosling, J., Joy, B., & Steele, G. L., Jr. (1996). The Java language specification. Boston: Addison Wesley.
Guizdal, M. (2017). Balancing teaching CS efficiently with motivating students. CACM, 60(6), 10–11.
Hu, C. (2004). Rethinking of teaching objects first. Education and Information Technologies, 9(3), 209–218.
Kao, E. (2011). Exploring computational thinking at Google. CSTA Voice, 7(2), 6.
Kay, A. C. (1993). The early history of Smalltalk. ACM SIGPLAN Notices, 28(3), 69–95.
Kieren, T. E. (1984). LOGO in education: What, how, where, why and consequences. Planning Services, Alberta Education.
Kölling, M. (2016). Lessons from the design of three educational programming environments: Blue, BlueJ and Greenfoot. International Journal of People-Oriented Programming, 4(1), 25–32.
Kölling, M., & Rosenberg, J. (1996a). Blue – A language for teaching object oriented programming. In Proceedings of 27th SIGCSE technical symposium on computer science education, Philadelphia, Pennsylvania, USA (pp. 190–194). SIGCSE Bulletin, 28(1).
Kölling, M., & Rosenberg, J. (1996b). An object oriented development environment for the first programming course. In Proceedings of 27th SIGCSE technical symposium on computer science education, Philadelphia, Pennsylvania, USA (pp. 83–87). SIGCSE Bulletin, 28(1).
Kölling, M., & Rosenberg, J. (2001). Guidelines for teaching object orientation with Java. In Proceedings of the 6th Conference on Information Technology in Computer Science Education (ITiCSE 2001), Canterbury (pp. 33–36).
Kölling, M., Koch, B., & Rosenberg, J. (1995). Requirements for a first year object-oriented teaching language. ACM SIGCSE Bulletin, 27(1), 173–177.
Lister, R., Berglund, A., Clear, C., et al. (2006). Research perspectives on the objects-early debate. In Working group reports on Innovation and Technology in Computer Science Education (ITiCSE-WGR ‘06), ACM (pp. 146–165).
McArthur, C. D. (1973). LOGO user’s guide and reference manual, Bionics Research Reports: No. 14, Bionics Research Laboratory, School of Artificial Intelligence, University of Edinburgh.
Michaelson, G. (1992). Elementary Standard ML. UCL Press.
Michaelson, G. (2015). Teaching programming with computational and informational thinking. Journal of Pedagogic Development, 5(1), 51–65.
Minsky, M., & Papert, S. (1971). Artificial Intelligence Research Report, Memo AIM-252, AI Laboratory, MIT.
Moors, L., & Sheenan, R. (2017). Aiding the transition from novice to traditional programming environments. In Proceedings of IDC 2017: ACM interaction design and children conference (pp. 509–514). Stanford University.
Murphy, E., Crick, T., Davenport, J.H. (2017). An analysis of introductory programming courses at UK Universities, The Art, Science, and Engineering of Programming, Vol. 1, No. 2, 2017, Article 18; 23 pages.
Papert, S. (1993). Mindstorms. (2nd edn). Basic Books.
Reek, M. (1995). A top-down approach to teaching programming. SIGSCE Bulletin, 27(1), 6–9.
Rumbaugh, J., Blaha, M., Premerlani, W., Eddy, F., & Lorensen, W. (1990). Object-oriented modeling and design. New Jersey: Prentice Hall.
Scottish Qualifications Authority. (2015). Reference language for advanced higher computing science question papers. http://www.sqa.org.uk/files_ccc/ComputingScienceReflanguageSpecificationsSQPAH.pdf. (consulted 17/5/17).
Stroustrup, B. (1987). The C++ programming language. Addison-Wesley.
Sweller, J. (1988). Cognitive load during problem solving: Effects on learning. Cognitive Science, 12, 257–285.
Tedre, M., & Denning, P. (2016). The long quest for computational thinking. In Proceedings of the 16th Koli calling conference on computing education research, November 24–27, 2016 (pp. 120–129). Koli.
Turing, A. (1936). On computable numbers, with an application to the Entscheidungs problem. Proceedings of the London Mathematical Society, 42(1), 230–265.
Vygotsky, L. S. (1962). Thought and language. Cambridge, MA: MIT Press.
Vygotsky, L. S. (1978). Mind in society. Cambridge: MIT Press.
Wallace, C., & Martin, P. (1997). Not whether Java but how Java. In Proceedings of Java in the computing curriculum conference (JICC 1), South Bank University.
Weir, S. (1987). Cultivating minds: A Logo casebook. New York: Harper and Row.
Wing, J.M. (2006). Computational thinking. CACM viewpoint, March, pp. 33–35.
Wood, D., Bruner, J. S., & Ross, G. (1976). The role of tutoring in problem solving. Journal of Child Psychology and Psychiatry, 17, 89–100.
Yadav, A., Stephenson, C., & Hong, H. (2017). Computational thinking for teacher education. CACM, 60(4), 55–62.
Acknowledgements
I would like to thank Nancy Falchikov for valuable discussions about constructivism, development and cognition.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer International Publishing AG, part of Springer Nature
About this chapter
Cite this chapter
Michaelson, G. (2018). Microworlds, Objects First, Computational Thinking and Programming. In: Khine, M. (eds) Computational Thinking in the STEM Disciplines. Springer, Cham. https://doi.org/10.1007/978-3-319-93566-9_3
Download citation
DOI: https://doi.org/10.1007/978-3-319-93566-9_3
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-93565-2
Online ISBN: 978-3-319-93566-9
eBook Packages: EducationEducation (R0)