Project Ideas for Programming I, Winter 2017-8

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.

linear equations

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

date calculator

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.

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.

text editor

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.

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.

Tic Tac Toe

Allow two players to play Tic Tac Toe, 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.