Dividing Large Programming Projects into Smaller Steps

10:05 AM on June 28, 2022 | computer science programming

In computer science, we often ask students to build larger programming projects over days or weeks. As teachers, we know that students do not always have the skills to project and time manage themselves well on these larger projects. Additionally, we know that estimating how long it takes to plan, program, and test software projects are complex (Brooks, 1974), and even software organizations in the industry find it challenging to deliver software on time (Kula, et al., 2021). To help scaffold students on these larger projects, teachers often break projects up into milestones or separate gradable deliverables.

Benefits of Milestones in Programming Projects

By breaking these larger projects into distinct milestone assignments, you can more easily see where students are on the project, how much time each milestone takes, and how well students perform on each milestone. In addition, having distinct milestone assignments makes each piece more approachable and communicates expectations and deadlines for students.

Shaffer and Kazerouni (2021) found in a third-year Data Structures and Algorithms course that students who were given milestones “were more likely to finish their projects on time, produced projects with higher correctness, and finished the course with generally better outcomes.” Additionally, within the set of students who were given milestones, “students who completed more milestones saw better outcomes.”

There are no perceived downsides to adding milestones when comparing withdrawal and failure rates, and “an end-of-term survey indicated that student perceptions of the milestones were overwhelmingly positive” (Shaffer et al., 2021).

Choosing Milestones for your Programming Projects

Shaffer and Kazerouni (2021) provide the following example of milestones:

  • Milestone 1, due at week 1: Make an initial submission
  • Milestone 2, due at week 1.5: Complete the data structure’s insertion operation
  • Milestone 3, due at week 2.5: Complete the data structure’s search and update operations
  • Final Submission, due at week 4: Complete the data structure’s removal operation

Notice that the first milestone is simply starting the project. Subsequent milestones have incremental additions of testable functionality. The ordering of the milestones can also help guide students. “The ordering of milestones is partly due to dependencies between operations. For example, one cannot test a search or update operation without first implementing insertion, and removal operations typically depend on search” (ibid, p. 909).

Implementing Milestones for your Programming Projects

Adopting a milestone approach to programming projects has some challenges as many tools are not designed to support this. Teachers often set up these milestones as one assignment– all collapsed into a 1-grade book column. Alternatively, teachers can set each milestone up as an assignment with its weight and due date – but then students are either copy-pasting/uploading their code multiple times or fighting with their Github repository.

Codio has recently addressed this issue with our Prerequisite Assignments feature. The prerequisite assignments feature set requirements for starting an assignment based on other assignments in the course.

Create Free Instructor Account   

To use the prerequisite assignments feature:

  1. To use the prerequisite assignments feature:

    1. Under an assignment’s settings, click the toggle next to the “Prerequisite assignment(s)” label
    2. Click the blue “Add prerequisite” button
    3. On the pop-up, navigate to the correct module, and select the assignments you would like to be prerequisite
    4. Use the “Prerequisite Assignment State” drop-down to choose what state these prerequisites need to be in:
      1. Started
      2. Completed
      3. Passed (with a minimum grade)
    5. Use the “Copy Workspace From” drop-down to choose if you would like student files to be copied into the selected assignment from one of the prerequisite assignments.
      1. Student files are copied when the assignment is first started, so it is recommended that the Prerequisite Assignment State is set to Completed when the Copy Workspace functionality is being used.
      2. If a file exists in both the prerequisite and selected assignment, the file from the prerequisite assignment will overwrite the file in the selected assignment.

Creating a Programming Project with Milestones in Codio

  1. Create an assignment for each milestone - don’t forget to publish!
  2. In assignment settings, set the prerequisite assignment to the previous milestone.
  3. Select the previous milestone assignment in the “Copy Workspace From” drop-down
  4. (optional) Set the corresponding due dates and late penalties for each milestone

Converting an existing programming project in Codio into a Milestone-based project

  1. Duplicate your existing assignment so you have the same number of assignments as you have milestones.
  2. Rename each assignment after a milestone
  3. For each milestone assignment, remove the content relating to the other milestones – don’t forget to publish!
  4. In assignment settings, set the prerequisite assignment to the previous milestone
  5. Select the previous milestone assignment in the “Copy Workspace From” drop-down
  6. (optional) Set the corresponding due dates and late penalties for each milestone

Create Free Instructor Account   

Optional Milestones

Optional milestones can be set up the same way as mandatory ones. Simply keep all the starter code files in the subsequent assignments. Then, if a file of the same name exists in both assignments, the changes to the initial assignment will overwrite the file of the same name in the subsequent assignment.

References

Brooks, F. P. (1974). The mythical man-month. Datamation, 20(12), 44-52.

Kula, E., Greuter, E., Van Deursen, A., & Georgios, G. (2021). Factors Affecting On-Time Delivery in Large-Scale Agile Software Development. IEEE Transactions on Software Engineering.

Shaffer, C. A., & Kazerouni, A. M. (2021, March). The Impact of Programming Project Milestones on Procrastination, Project Outcomes, and Course Outcomes: A Quasi-Experimental Study in a Third-Year Data Structures Course. In Proceedings of the 52nd ACM Technical Symposium on Computer Science Education (pp. 907-913).

Elise Deitrick

Elise is Codio's VP of Product & Partnerships. She believes in making quality educational experiences available to everyone. With a BS in Computer Science and a PhD in STEM Education, she has spent the last several years teaching robotics, computer science and engineering. Elise now uses that experience and expertise to shape Codio's product and content.