js-parsons - a JavaScript library for creating Parson's problems; language independent, with additional support for Python code
JavaScript HTML CSS


Parsons Programming Puzzles

Parsons programming puzzles are a type of scaffolded program construction tasks where the learner is given a set of code fragments, blocks of a single or multiple lines of code, and the task is to piece together a program from these.

In js-parsons, learners not only select and order but also indent code fragments. This variant of Parsons programming puzzles is called two-dimensional (2D) Parsons problems. In Python, code indentation has a semantic meaning, as an indented statement falls into the surrounding control structure, which has lower indentation. That is, code blocks are defined by indentation instead of start and end symbols like curly braces.

Publications based on js-parsons

Petri Ihantola and Ville Karavirta. Two-Dimensional Parson's Puzzles: The Concept, Tools, and First Observations. Journal of Information Technology Education: Innovations in Practice, 10:1–14, 2011.

Juha Helminen, Petri Ihantola, Ville Karavirta, and Lauri Malmi. 2012. How do students solve parsons programming problems?: an analysis of interaction traces. In Proceedings of the ninth annual international conference on International computing education research (ICER '12). ACM, New York, NY, USA, 119-126. DOI=10.1145/2361276.2361300

Ville Karavirta, Juha Helminen, and Petri Ihantola. 2012. A mobile learning application for parsons problems with automatic feedback. In Proceedings of the 12th Koli Calling International Conference on Computing Education Research (Koli Calling '12). ACM, New York, NY, USA, 11-18. DOI=10.1145/2401796.2401798

Juha Helminen, Petri Ihantola, Ville Karavirta, and Satu Alaoutinen. 2013. How Do Students Solve Parsons Programming Problems? -- Execution-Based vs. Line-Based Feedback. In Proceedings of Learning and Teaching in Computing and Engineering (LaTiCE), 2013 DOI=10.1109/LaTiCE.2013.26


  • Ville Karavirta
  • Petri Ihantola
  • Juha Helminen
  • Mike Hewner