Welcome to Practicum 2.0!

What is this project?


Our project is Practicum 2.0: An Interactive Tool for Practicing Introductory CS Topics. With a record enrollment of CS students, there are not enough professors and TAs to give students individualized instruction. Thus, our goal is to provide a meaningful online tool that offers practice and detailed feedback to support students outside the classroom. This project started at the University of Washington in 2015 and was converted from Java to Python by a comps group in 2020-2021. Practicum allows students to learn procedures on their own time, visualize program execution as variables change in the variable bank, and walk through problems in a guided or independent mode. One thing that makes Practicum unique is the TPL framework, which describes a procedure for working through problems of a given type. This allows for easy expansion such that we do not need to write prompts manually for each problem.


Coming into this project, our goal is to extend on Practicum to cover other challenging CS 111 topics, and show that our contribution is effective with an experiment. We chose to focus on creating investigations on Objects and Classes. After interviewing Intro to CS Professors at Carleton, we found Objects and Classes to be important because it is commonly one of the more challenging subjects for students, is important for Data Structures, and is taught in time for our comps deadline, allowing us to show our final product to students in the spring term. To create these investigations, we first brainstormed variable representation with concept designs, focusing on object representation and scope. Next, we made changes to Practicum by modifying the TPL and parser to accommodate the changes needed for working with Objects and Classes, such as line changes and scope. Also, we worked with D3 to visualize the objects in the variable bank based on their stage of creation, using elements such as color, shape, value, and location to distinguish between different types of variables and objects. Finally, we conducted an experiment to evaluate whether the mass feedback and interactivity of Practicum is effective for learning. We recruited current CS111 and previous CS111 students to participate in our research. We had students engage in a study session with Practicum and measured their improvement by having them complete a test before and after the study session. Students currently enrolled in CS111 showed a significantly greater improvement in their test scores after the study session with Practicum, whereas students who had already completed CS111 prior to the students did not show any significant improvements. Our results suggest that the mass feedback and interactivity of Practicum may be more effective for students who are still in their initial stages of learning. Overall, we think that Practicum has the potential to be an effective study tool. However, our experiment does have limitations such as its relatively small sample size and the fact that it does not necessarily compare Practicum to real life resources. These should be addressed in future research.


Future work can include a skip button to avoid redundancy on topics that the user feels confident in, TPL improvements, further visualization around method representation, more CS 111 topics like functions and recursion, and exploring other visualizations. Ultimately, given the changes we have made to the system and the feedback received in the experiment, we feel that Practicum has the potential to be a meaningful resource for students at Carleton taking CS 111.