This list is not exhaustive; any idea that is interesting and non-trivial is potentially possible. Use your imagination. I'm happy to discuss possible ideas with you.
Write a program that reads a set of simultaneous linear equations and solves them using matrices and Gaussian elimination.
Write a simple calculator program for dates. For example, "mar 8 2012 + 10" should produce "mar 18 2012". "sep 22 2018 – aug 22 2018" should produce "31". Perform all operations in constant time. Be sure to handle leap years correctly.
Search in a given directory and its subdirectories, looking for files that have the same size, date/time, contents and/or name. The user should be able to specify which of these attributes should be used to detect duplicates.
Implement a simple text editor. The user should be able to open a file, move around with the arrow keys, insert or delete characters, and save the file.
Use text-mode graphics to animate one or more of the algorithms we've learned in this class.
Write a program that can encrypt or decrypt a file given a word to use as a key. Use a Vigenère cipher or another simple cipher.
Allow two players to play Tic Tac Toe, or one player against the computer.
Given a current chess position and a player whose turn it is to move, determine whether checkmate in two moves is possible.
Play a chess endgame so that a king and rook can checkmate a solitary king.
Implement the game of Mastermind, allowing either the human player or the computer player to guess.
Implement the game Battleship, where the user plays against the computer.
Implement Minesweeper with a text-based interface.