I'm a teaching assistant for an intro to programming class, and I do feel that solving an endless train of toy problems is problematic for students. From my experience, the best way to learn is to understand a real problem, determine it's requirements, then design a solution. However the professor and I struggle to find real problems that are approachable for novices with varied backgrounds.
I saw an open source class called nand to tetris where students had a semester to create a machine that could play tetris, starting with only nand gates. I thought that seemed like a much more fun progression for computer hardware than the undergrad courses I took. I would love to discover something similar for programming but so far I haven't found it.
Simple 2d game
To do app
Timesheet app
Implement a clone of x with something extra of your choosing
Top Twitter celebrity app using its API
Building a search engine
Creating a programming language
An issue with the programming courses at my uni was that none of them used a database. The programs were toy apps by design. Instruct students to use sqlite or MongoDB, and encourage them to use PostgreSQL/MySQL.
Our database class did use databases, but we had no integration of the two subjects.
To do app has always seemed an optimal one to me, since it should be relatively accessible, no matter your prior experience, but infinitely customizable. I remember a YC founder telling me that both pg and sama didn't think there was a broadly available to do app that met their needs, so they both rolled their own (and continue to update it as their needs change). That seems like a pretty optimal intro project to me
I thought that the Java Robocode stuff was interesting and could help inject some fun or 'gamification' into development.
Would that not be a useful challenge for CS students?
https://robocode.sourceforge.io/
Thank you for sharing. This is similar to what we were looking for, something that gamifies the assignments to get students more engaged. Part of the problem is that there are so many free coding resources out there that it's tricky to find a mature one that people have gone through and found rewarding.
Game development is the poster child of this goal; many a programmer (myself included) started this way, on their own. It offers a highly desirable goal (fun and a creative outlet) while forcing you to pick up many of the important programming concepts as the complexity of your code increases.
I saw an open source class called nand to tetris where students had a semester to create a machine that could play tetris, starting with only nand gates. I thought that seemed like a much more fun progression for computer hardware than the undergrad courses I took. I would love to discover something similar for programming but so far I haven't found it.