Colleges and universities are experiencing record enrollments in introductory computer science courses, presenting new challenges in keeping up with demand while also offering a quality educational experience.
In particular, larger classes make it harder to ensure that every student gets the practice and detailed feedback they need to learn difficult new concepts.
Scalable, online tools could play an important role in meeting this challenge.
Current tools available to intro CS students, however, often provide very limited feedback, such as whether their solution to a practice problem is correct.
A large body of research supports using worked examples as an effective pedagogical technique.
A worked example consists of an example problem and step-by-step instructions leading to the solution.
They have been shown to improve learning in a variety of domains, including LISP programming and statistics.
Worked examples have been shown to be even more effective when the transition between viewing demonstrations and independent problem solving is faded.
This means that the step-by-step help is gradually removed over the course of several worked examples (it fades away), transitioning the student to solving problems on their own.
Hand-authoring these faded worked examples is challenging and time-consuming on the part of educators, which in turn limits students' access to them.
Fortunately, researchers at University of Washington and elsewhere developed a framework that can automatically generate interactive faded worked examples from example problems.
This framework was used to build Practicum, an online system providing faded worked examples for several kinds of Java practice problems in an introductory CS class.
Your task for this project will be to create a similar practice system for Carleton's CS 111.
You will leverage the existing Practicum system and adapt it to provide practice relevant to Carleton students.
The Project
In this project you will adapt the existing Practicum system to provide faded worked examples that meet the needs of Carleton's CS 111 course.
In particular, you will need to complete the following steps:
Needs assessment.
Interview lab assistants, prefects, and instructors for Carleton's CS 111 course about what kinds of additional practice might benefit 111 students (e.g., common stumbling blocks and misconceptions).
Based on these you will select several appropriate problem types to implement.
Study the existing system.
Familiarize yourself with the current practice problems in Practicum and the codebase that implements them.
Write problem-solving procedures.
The framework Practicum uses is based on procedural knowledge, meaning problems that have a step-by-step thought process for solving them.
Thus, you will write down the procedures for solving your chosen problem types.
Design problem visualizations.
Design the visual feedback students will receive at each point in your problem-solving procedures.
Adapt Practicum for the new problems.
Modify the existing system to implement the new problem types.
Conduct user tests.
Assess the usability of your version of Practicum with a round of user tests.
Recommended Experience
All seniors are likely to have the background to succeed with this project.
Practicum is an online browser-based tutoring system, so web programming experience (e.g., JavaScript/TypeScript, HTML) will be helpful, as will experience from Software Design (CS 257) and/or HCI (CS 344).
Since you will be designing new educational content for novice programmers, experience as a prefect or lab assistant for CS 111 will be highly relevant.
References/Inspiration
Existing systems for practicing/visualizing introductory programming concepts:
Bauer, A., O'Rourke, E., Thayer, K., Butler, E., Brand, W., & Reges, S. (2018). Practicum: a scalable online system for faded worked examples in CS1. [pdf]
O'Rourke, E., Andersen, E., Gulwani, S., & Popović, Z. (2015, April). A framework for automatically generating interactive instructional scaffolding. In Proceedings of the 33rd annual ACM conference on human factors in computing systems (pp. 1545-1554). [pdf]
Sorva, J., Karavirta, V., & Malmi, L. (2013). A review of generic program visualization systems for introductory programming education. ACM Transactions on Computing Education (TOCE), 13(4), 1-64. [link]