Once this customized design recipe is introduced at the beginning of the CS0 course, students follow and complete several guided and open-ended examples during class to understand how to use it. Homework assignments and class projects both require the use of this customized design recipe, which is often assigned with a submission deadline before any programming begins. Students are also given a printed copy of the design recipe and can use the recipe’s website for guidance at any time. Feedback is collected regarding the number of students who used this customized design recipe throughout their attempt at completing a programming assignment. When steps have been unclear, it explanation in the recipe was either elaborated or split into easier steps. This customized design recipe is currently in version 4, has 15 steps, and is filled with encouraging thoughts and hints – including conducting research if needed, thinking positively, documenting assumptions, and adding comments and submitting the resulting code and steps toward solutions. It also includes space where students can express opinions about their performance on each step using emojis and long text descriptions.
Students’ abilities to reason computationally, convert ideas to coding logic, and express thought patterns improved tremendously throughout the first few weeks of use. Students use this customized design recipe in varying ways and with varying consistency. Some still need to be reminded to use it and what each step is asking them to do, while others think they no longer need it. Overall, those who use it regularly have the most success in completing a programming challenge, have extremely readable code emphasized with appropriate comments, and are less hesitant to start coding. Some students use it to help them formulate questions. Additionally, those who prefer not to speak and/or ask questions during class, use the emojis and text reflections to offer more elaborate descriptions and performance opinions. When students need to express their ideas and answer questions about their code, they often refer to their response to the steps to help guide their responses. This was introduced as “battling,” a technique designed by the makers of BootStrap, which helps students express their ideas, reasoning, and problem-solving paths. Moreover, knowing students’ assumptions and being able to follow their ideas from start to finish provides more insight into what they understand and what they do not. Students are not as reluctant to speak in front of the entire class about what they did to solve and complete their assignments when their ideas are in tangible form and within reach. This customized design recipe also assists students with asking each other questions about challenges and final results as each is already familiar with the steps needed to accomplish a task. This familiarity helps them focus on what is important when reading and understanding one another’s code during code reviews.
Since its initial use, this customized design recipe helps to highlight that students have varying problem-solving, reasoning, and coding abilities - as expected. However, it and the results it encourages provide great insight into the exact skills students need to strengthen, those they can help one another with, and areas that need improvement related to attitude and to approaches taken (or not taken) when embarking on a programming project. Students’ ability to regulate their learning is increased as well as insight regarding plans for and implementation of differentiated instruction. .
Overall, however, students realized that this customized design recipe helped them get started, stay organized, and ensure the completion of every required step. Some student sentiments are captured in the following feedback:
- “It helped me create a program to do what I intentionally want it to do.”
- “The design recipe really helps me personally. This isn’t my field of interest, but it has become very interesting. I am very thankful that you provided this for us.”
- “It helps me understand the process easier.”
- “The design recipe helps me organize my thoughts as well as my code.”
- “I never thought about making sure that others can read and understand my thought process. This helps me do this easily.”
- “I finally solved my problem. Step 7 really helped me figure out what I was doing wrong.” [Step 7 advises students to notice what changes from example to example to determine logic and what should be represented as variables.
- 1. This Customized Design Recipe was created and is being maintained by Dr. Leshell Hatley, an Associate Professor at Coppin State University.
- 2. This is a living document and will improve on a constant basis.
- 3. The current version is v5.0.
- 4. You can record and submit your responses to each step of this Customized Design Recipe using two interactive forms.
Follow instructions carefully for each:
- 5. This customized design recipe was submitted for publication on 11/6/2017 to help spread the word about it and to help other novice programmers.
- The steps were updated with considerable feedback from the Fall 2020 COSC-221 class (James, Ashriti, Sha'naya, Elijah, Cid, and D'Andre).
History of this Customized Design Recipe in Computer Science at Coppin State University
The current version of this Customized Design Recipe is in two (2) interactive formats and is designed for students to document their responses to each step as they progress through them:
- 1) as an interactive Google Spreadsheet and
- 2) as Google Form. NOTE: This google form is sent to Dr. Hatley.
The best part about this Customized Design Recipe is that it has morphed into its current form since the Spring 2016 semester, as Dr. Hatley watched Coppin's CS students learn how to program in COSC 199, 200, 221. These are the beginning computer programming courses at Coppin State and are the prerequisites for all other CS courses. In the four semesters that followed, steps, hints, and maybe even a bit of encouragement were continuously added to this Customized Design Recipe. As a matter of fact, enhancement to it is an on-going process in response to understanding what may be challenging to students as they code.
But this Customized Design Recipe wasn't always referred to as such. The initial attempt at teaching the program development process included sharing the Program Development Process diagram.
R. Morelli, and R. Walde. "Java, Java, Java object-oriented problem solving." Compare 1, no. 2 (2000).
However, the terms and descriptions used in this diagram were unfamiliar to novice programmers in class and therefore difficult for them to follow and remember. It also only explained the process of programming, presuming the programming challenge had already been solved following this process helped turn that solution into code. It did not explain or give hints to how to solve the program or how to think algorithmically or computationally (i.e. how to express solving problems using instructions that a computer should follow instead of the way humans do), which is a skill many novice programming students lack. It also only focused on Java and was not useful when teaching student how to program in Python. This lead to the design and sharing of a completely customized guide known as the Template for Problem-Solving and Program Design.
This template contains 9 steps and includs steps for visualizing final product, listing actions the program needed to perform to accomplish its goal, choosing variable and other identifier names, progressively pseudocode and then turning that into code using the desired programming languages, and for how, where, and when to insert comments. It was also shared at the beginning of each course/semester as a reference. This template provides more help to students than the previous Program Development Process diagram used. However, without constant reminders, students often forgot to refer to and use it. A copy of this template can be found here. The Program Development Process was then used after this template was followed and program design was complete.