Organizing a typical programming course
With the new academic year approaching, it’s time for educators to create and refine their programming courses. We’ve outlined how to organize your course and give your students the best possible learning experience, by utilizing different assessment types and automatic grading.
First, decide the type of assessments you want to create. CodeGrade is flexible and allows you to create a range of different types of assessments. Formative assessments provide ongoing feedback to help students improve during the learning process, while summative assessments evaluate their overall learning at the end of an instructional unit.
This could be:
- Weekly lab assignments: Hands-on tasks to reinforce concepts from lectures. These should focus on specific subject areas and are closely linked to what the student has just learned.
- Individual programming projects: Allow students to apply what they've learned in a more comprehensive and self-directed manner. Here, students will combine several concepts together and students will often write complete programs.
- Group work: You can let students do assignments individually or let them work in a group. When you let students work in a group, you foster collaboration and teamwork, reflecting real-world software development environments. However, if you are teaching introductory courses, it’s often desirable to let students first learn the concepts on their own.
- Final exams: Assess comprehensive understanding and how well your students retained the course material. With final exams, you have more control over the environment in which your students work, this might be desirable in the context of summative assessment. However, it’s best to not completely rely upon final exams by itself.
It’s important to provide your students with a variety of assessments, as different types can tackle different facets of the subject matter. On top of this, creating additional ungraded practice opportunities can help students build their knowledge and confidence. After all, programming is best learned by doing.
Next, determine how often you'll assign each type of assessment. A mix of frequent, small, low-stakes assignments combined with a few larger summative assignments is often effective.
If there are previous iterations of your course, you can update past assignments to include more relevant information. It’s always easier to alter old assignments than create them from scratch!
Here is an example of a typical programming course structure we typically see:
- Weekly graded lab session that includes a mixture of coding questions and multiple-choice questions. All the lab sessions might contribute to a small percentage of the final grade.
- (Optional) An additional formative coding quiz that provides students with more practice.
- A bi-weekly programming project that combines all the concepts of the previous two weeks. These constitute an additional part of the grade.
- A mid-term and final exam to be able to summatively assess students in a controlled environment.
As you can see, this leads to quite a lot of assessments for a typical course and manually grading all of these is a daunting task.
To help your students get the most out of your programming course, try to set up as much auto-grading for your assessments as possible. This will give your students instant grades and feedback and will ease your grading workload.