Andreas Nilsson is a lecturer at the Department of Computer Science at the Kristianstad University in Sweden. Here he teaches multiple courses, including the Programming Fundamentals course which is the first programming course of the Computer Science program and mandatory for all students. In this course he teaches Python to about 150 students of whom most have no prior coding experience at all.
Programming Fundamentals before CodeGrade
Andreas has been teaching Programming Fundamentals for a couple of years now, which always had a similar approach: “We would always have two moments of examination: a written exam and a take-home exam.”
Andreas mentions that the problem with this approach was that it was too focused on the theory and it was not practical enough: “Just learning the theory of programming does not make you a good programmer. As a programmer, you also need to learn how to effectively write your code. Because of our previous approach, we noticed that students lacked practical coding skills going forward to the next courses. These students did pass Programming Fundamentals, but encountered problems later in their studies.”
The reason Andreas did not have more practical assignments in his course is one that is very commonly heard in Computer Science education: “It was very tricky to give feedback to all 150 students in a good way for their practical take-home assignment.” At Kristianstad University, only lecturers are allowed to grade examinations, meaning that Andreas had to do all the grading himself. “All feedback and grading had to be done manually by me, which was simply way too much work.”
Programming Fundamentals with CodeGrade
“Now that we use CodeGrade, I finally had the tools to totally transform my course to being more focused on practicals. My intention is to have the students learn the craft of coding instead of just understanding the theory. The best way to do that is by simply letting them code a lot!”
To achieve this, Andreas has created a lot of autograded programming tasks for his students. “CodeGrade’s autograder allows me to give the students way more practical coding tasks than I could before. It is also way quicker and easier for me to manually give feedback using the inline comments and other tools that CodeGrade provides.”
Andreas went above and beyond by creating multiple code tasks per week, which ranged in difficulty level, and could be freely chosen by his students. “CodeGrade allowed me to create a course that gives my students freedom to work on their own level and pace. Some students are more than happy with just passing, but we also have students who want to spend more time and want an extra challenge.”
Just like most first year introductory programming courses, Programming Fundamentals struggled with large knowledge gaps between students: some are totally new to programming and some have already been coding in high school for years. “My CodeGrade assignments allowed me to challenge both the students with no prior coding experience as well as the ones with experience. This made sure all the students were engaged and motivated, no matter what level they were on.”