Teaching How to Design Programs
We solve many problems by writing computer programs. To solve a problem, we need to understand the problem, to formulate the problem into a specification, and to write a program that satisfies the specification. Many of programming courses at school focus on the last step. However, we desire to teach the whole steps, what we call “designing programming,” as an essential skill to solve problems through programming.
We are interested in teaching how to design programs, in particular developing tools that support teaching. Towards this goal, we are investigating programming/development environments that assist Felleisen’s design recipes.
Program design recipes are sequences of steps for defining functions. They were introduced by Felleisen et al. as a solution to the Blank Page Syndrome, a situation in which the programmer faces an empty editor due to the lack of instructions on how to advance. While program design recipes are used in many universities, there has not been enough support for this concept. As a consequence, the programmer could skip certain steps, or make mistakes in the course of program development, and thus lose the opportunity to take full advantage of design recipes.
In this project, we develop a programming environment that gives novice-friendly instructions for each step of design recipes. Currently, we have implemented a browser-based environment for defining functions based on structural recursion. We are currently extending the environment with support for more advanced function definitions; more specifically, those involving nested data structures, generative recursion, and accumulators.
News
- Kumamoto Presented a Poster on Programming Education Tool at JSSST Conference
- IFL Presentations on CPS Translation, Delimited Control and Programming Education
- Poster Presentations at PPL 2024
- Five Members Presented Bachelor’s Thesis
- Sakai receives a Student Presentation Award from the 40th JSSST Annual Conference
- Two Talks on Education and Computers at JSSST 2023 Conference
- Kiuchi and Sakai Presented Bachelor’s Theses
- SPLASH-E Paper on Block-Based Environment for Program Design
- PPL2022 Paper on Monadic Equational Reasoning (along with other paper and poster presentations)
- Fathul, Arai and Nose Presents Master’s Theses
- Talk on a Hybrid Programming Environment (@ Scheme 2021)
- Paper & Poster presentation at PPL’21
- Presentation on Beginner-Friendly Programming Environment at Lambda Days 2021
- Two Lightening Talks on Programming Education at Scheme’20
- Poster & Demo Presentation at PPL2020
- Presentations on Keyword Programming, Graph Layouts, and Educational Programming Environment at SIGPX7
- Bachelor’s thesis defense by Nose