Programming I, Winter 2019-20
Project Ideas

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.

find duplicate files

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.

animated sort

Use text-mode graphics to animate one or more of the algorithms we've learned in this class.

encryption/decryption

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. Or, for a greater, challenge, write a program that reads encrypted text and decrypts it without the key.

linear equations

Write a program that reads a set of simultaneous linear equations and solves them using matrices and Gaussian elimination.

Rubik's Cube

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 20 moves or less.

Tic Tac Toe

Allow two players to play Tic Tac Toe, or one player against the computer. For an extra challenge, implement 3-D Tic-Tac-Toe.

Connect Four

Allow two players to play Connect Four, or one player against the computer.

mate in two

Given a current chess position and a player whose turn it is to move, determine whether checkmate in two moves is possible.

mate with king and rook

Play a chess endgame so that a king and rook can checkmate a solitary king.

Mastermind

Implement the game of Mastermind, allowing either the human player or the computer player to guess.

Battleship

Implement the game Battleship, where the user plays against the computer.

Minesweeper

Implement Minesweeper with a text-based interface.