This list contains some possible ideas for your semester project. It is certainly not exhaustive; any idea that is interesting and non-trivial is potentially possible. Use your imagination. We are happy to discuss possible ideas with you.
Use graphics to animate one or more of the sorting algorithms we've learned in Introduction to Algorithms.
Display an animation of one of the data structures we've studied in Introduction to Algorithms, such as a binary tree or binary heap.
Write a program that reads a set of simultaneous linear equations and solves them using matrices and Gaussian elimination.
Write a program that lets the user enter and edit information about events, and displays them in a 2-dimensional calendar view.
Write a program that can encrypt text using a Vigenère cipher, and can also decrypt text even without the key.
Write a scientific calculator with a graphical interface.
Implement a card game such as Hearts or poker.
Implement a simple video game such as Pong or (harder) Asteroids or Pac-Man.
Write a program that reads a file that describes the current position of a Rubik's Cube, and prints out moves to solve the puzzle if it is solvable in a small number of moves.
Implement an abstract strategy game such as Connect Four or Pente, perhaps allowing the player to play against the computer.
Implement the game of Mastermind, allowing either the human player or the computer player to guess.
Write a graphical program that displays a Sudoku board and lets the user fill in squares. Your program could randomly choose one of the Sudoku puzzles listed on this page.
Implement Minesweeper with a text-based or graphical interface.
Implement the game of Set for one or more players.