Real problems: Teaching theory through practice

This post is republished from Into Practice, a biweekly communication of Harvard’s Office of the Vice Provost for Advances in Learning

NelsonJelani Nelson, Assistant Professor of Computer Science, assigns students real programming problems in his introductory algorithm courses, CS124Data 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.

The benefits: 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.

The challenges: 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. 

Bottom line: 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.”