Any two player board game is a good exercise for basic programming logic, and you can make it into a console application. Checkers, Connect-4, Othello, Poker, Go, whatever. Chess is somewhat harder than those other games.
Here are some ways to extend these projects:
- Add the ability to save and load games
- Add an AI
- Allow players to play over a local network.
- Build these as front-end or mobile applications.
- Make this into a web app--build a website which lets people play the game online. You can extend this arbitrarily far: nice GUIs, realtime play, etc.
One really fun project is to build a computer algebra system, which is a library which lets you do symbolic manipulation. It should be able to represent expressions like
Another project I enjoyed when I was younger was writing a circuit simulator. You gave the program a graph of circuit components, and it turned the graph into a system of linear equations, then solved them for current.
- Algorithms
- Classics. Sorting algorithms, searching algorithms.
- Binary search trees. Insert, delete. Treaps. 2-3-4 trees.
- OSTs
- String algorithms
- AIs for video games
- Front end
- Games
- Graphing library
- Rich text editor
- Excel clone
- CS
- Regular expression matcher
- Interpreter
- Compiler
- Web
- HTTP server
- Web scraper
- ORM
- Web app framework
- Low level
- Image conversion utilities