Jelani Nelson, Assistant Professor of Computer Science, assigns students real programming problems in his introductory algorithm courses, CS124 Data Structures and Algorithms and CS125 Algorithms & Complexity. Students write and test their coded solutions to practice problems via an open server on the course website and receive immediate feedback on their work.
According to Nelson, programming problems increase students’ understanding of computational theory by helping them practice algorithm design methods such as the divide and conquer technique. In addition to the retention benefits, the course server software offers scalable instruction practices including automated grading and more efficient management of deadline extensions.
Students who grasp the theoretical approach but submit a suboptimal solution may become frustrated when it fails the server test. “The server doesn’t have human empathy.” In response, Nelson and his teaching team have devised a partial credit system that awards points for solutions that are correct, though not as efficient as the intended solution.
Takeaways and best practices
Crowdsourcing puts learning in the hands of students.
Starting this semester, students will have the option to share their solutions online. “Where they used to only have two to four staff solutions to review, now they will have access to considerably more peer solutions, as well as different approaches to solving the same problem.”
Healthy competition can increase engagement.
Another optional feature—the leaderboard—ranks student solutions and gives assignments a game-like feel. “We teach students how to solve problems efficiently, and they like to compete with one another.”
Build once for multiple uses.
CS124 and CS125 course software—along with the leaderboard, discussion threads, and solution sharing features—is used in concurrent Department of Continuing Education (DCE) online offerings, helping to address the unique challenges associated with engaging distance students.
Solving real problems increased engagement in CS124, as shown by daily online conversation threads. The majority of Nelson’s students (88%) said programming problems helped in learning course material. “They shared with me informally that they enjoyed the practice and gained a lot from it. It’s something that I’m definitely going to continue.”