University of Calgary

1st year CS problem directory

If you have a project / problem that you would like to tackle, but it's not on this list, come see me.
go to novice projectsMild
Introductory (Novice) Level Projects

Current Count: 31
go to intermediate projectsMedium
Intermediate Level Projects

Current Count: 55
go to challenging projectsWasabi
Advanced, or Involved
(larger) Projects

Current Count: 17
Total Available Assignments: 103
Supplementary software (utilities; portions of code) are available for use if desired.
Has both a simpler and more challenging typical solution.
Supplementary Software (utilities; portions of code; notes; etc.)
Applicable to more than one project below.
Intro to Encryption (lab notes)
Intro to Graphics (lab notes)
C++ Curses Library (documentation and notes)
Java Curses Library (documentation and notes)
Problem name
Brief Description
Concepts (note: lists may be incomplete)
Bank Account Class Modify a program by replacing the code related to bank accounts with an Account Class. primitive vars; first class
Bank Interest Computing Accrued Interest Keyboard, Input/Output, Looping Structures
Big Number Class Given a program to emulate a simple bank ATM, replace the integers with a "Big Number Class" first class; arrays; ints / chars; functions
Bike Shop Bike Rental Invoices User input/Output, Functions, Looping structures
Calculator Write a text based calculator that takes user keyboard input. Classes and objects
User Input/Output , Pointers , Stacks , Algorithms (postfix Notation) , Dynamic Memory Allocation
Change Write a program that will read in an amount charged and an amount tendered and then calculate the number and size (denomination) of coins/ bills to return as change Loops; conditionals, Standard I/O
Change II Given an amount of money (specified in Cents). Write a program that determines the fewest number of coins needed. Functions , Standard I/O
Darts Write a program that throws random darts at the dart board such that the probabilities of a hit anywhere within the larger space are all the same. loops; conditionals; simple I/O and arithmetic
Digital Coincidences Can you write a program to find 2 numbers that when multiplied and added will in this manner produce the same three figures? loops; conditionals; simple I/O and arithmetic
Easter Write a program to calculate the Date of Easter loops; conditionals; simple I/O
Find Area Write a program to calculate the area of four basic geometric shapes: circle, triangle, rectangle, square. Functions; loops; standard I/O
Frequencies Write a program that reads a text document and produces a count and frequency of all letters (a,b,c,...) contained within. Functions; arrays; standard I/O characters
Greedy Gift Givers You are to determine, for a group of gift-giving friends, how much more each person gives than they receive (and vice versa for those that view gift giving with cynicism). loops; conditionals; standard I/O
Hailstones Write aprogram that computes how many steps will be necessary before the steady state is reached in the hailstone series beginning at a given number. loops
Motel Write a computer program that handles the hotel reservations and bookings. File Input/Output , Classes , Object Oriented Programming , Standard Input/Output , Arrays , Looping Structures
Palindromes Write a program that will read a string and check to see if it is a valid palindrome. Pointers , Dynamic memory , Functions , Standard Input/Output , Functions , Algorithms
Perfect
Numbers
Your task is to write a program that finds the first four perfect numbers and the number of digits in each. loops; conditionals; simple I/O and arithmetic
Perplexed Banker Place this money , please, in the bags in such a way that if I call and ask for a certain number of dollars you can hand me over one or more bags, giving me the exact amount called for without opening any of the bags. loops
Phone Billing Write an interactive program that takes the start time for a call based on a 24 hour clock, and the length of the call in minutes. The gross cost (before any discounts or tax) should be printed, followed by the net cost (after discounts are deducted and tax added). loops; conditionals; doubles
Prime Numbers What follows is a series of properties, conjectures and the like that have to do with prime numbers. Your task is to choose any 2 (two) and implement them. loops; conditionals; (maybe) arrays
Rank The
Teams
You are given a number of teams and the results of games played by pairs of these teams. Your mission is to rank the teams to produce a linear ordered list starting with the best team and progressing down to the worst one. conditionals; loops;
Roman Numerals Write a program that converts numbers from integer to Roman Numerals. arrays; (maybe) functions
Simple Arrays Write a program to sum the values in an array. arrays; loops; conditionals; simple I/O and arithmetic
Time_
Converter
Write a program that takes a number in terms of seconds and returns the appropriate number of hours, minutes, and remaining seconds. conditionals; simple I/O
Triangles Write a program that will allow you to print a triangle onto the screen in various rotations. 2D arrays , Standard Input/Output , Looping structures , Functions
Trouble with Tribbles Write a program that tells Kirk when to give the engine a high-power quantum phase hole in time neutrino subspace blast by giving the count of tribbles that would be present after 15 hours of reproduction and the number of hours remaining until the blast must be given. simple code
Two Trains Write a program that will take the distance of the trains from each other and the relative speeds of the trains and the fly as input and answer the question posed. simple code
Water Boy
Your mission is to fill the 5 gallon bucket with precisely 4 gallons of water. Write a program that will figure out the steps required and print them
simple code
What Day is it?
Given a date, calculate what day of the week it falls/fell on.
simple code
Year 2000 Write a program that determines which century an individual was born in, depending on various criteria. conditionals
Zero Sum Your job is to write a program that will calculate the sums and differences of the numbers and find all the sequences of length N that will procude a ZERO sum. loops; possibly arrays
Intermediate Problems
Abacus Write a program that will read in an ASCII representation of an abacus (picture) and print out the configuration represented by the picture. strings; arrays;
Address Book With the files provided by the instructor, edit the code. Code for Editing, File I/O , List , Object Oriented Programming
Address Book II Create an editable online address book. File I/O , List , Object Oriented Programming
Ball Bouncing calculator
This program will calculate the trajectory of a bouncing ball with in a room. 
Concepts:Time stepping; Basic class methods, data, encapsulation, etc; Numerical Methods ( Euler ); I/O; Calculations
Base Number Converter create a program that will convert a from one format to another format.  (DECIMAL, BINARY, OCTAL, HEX, ETC.) functions, loops, arithmetic operations, number systems
Battleship Write a program to play Battleship 2D arrays; char I/O; functions [largish]
Bike Registrations This time, your job is to develop a Bicycle Registration System. This system will be run strictly in a batch environment (i.e. this is not an interactive program; all I/O is done through files). functions; file I/O arrays; records (or objects) [largish]
Calculator II Design and implement an Object-Oriented program that will parse and evaluate simple expressions. parsing; (maybe) recursion; statcks; [largish]
Calculate
Grades
Write a program that will take a text file containing test results and process it to give the final grades. file I/O; arrays; records (or objects)
CD Inventory The object of this assignment is to write a program that will build and maintain a list of CDs that you own. file I/O arrays; lists; records (objects); sorting; searching [largish]
Check Sum Write a program that can both generate and validate a checksum digit. Command line arguments , File input/output , File parsing , Functions , Looping constructs
Digit Tree Using each digit from 1-9 once, make 7 numbers so that each number is equal to the sum of the numbers in the circles that are connected to it from below. binary trees; objects; functions; (maybe) recursion
Divisible Write a program that searches through a list for numbers that are evenly divisible by a particular value. loops; arrays
Dominoes Write a program that will analyze the pattern of pips in any 7 x 8 layout of a standard set of dominoes and produce a map showing the position of all dominoes in the set. tricky problem; I/O, strings, nested loops, more
Dton Write an interactive program to convert decimal integers to another base. I/O, strings, possibly recursive
Duplicate Characters Read a file of text and remove all repeated sequences of characters. file I/O, command-line arguments, functions
Encryption: Ceasar Cypher Write an encryption program that reads from a specified file and writes to a different specified file using a simple encryption scheme. functions; file I/O; command-line arguments; logical bit manipulation, binary files
Encryption
- One Time Pad
Write an encryption program that uses a One Time Pad. functions; file I/O; command-line arguments; logical bit manipulation, binary files
Encryption: Reverse The algorithm we will implement does character by character encryption (a common approach) but all we will do is reverse the ASCII codes for each character we encounter. functions; file I/O; command-line arguments; logical bit manipulation, binary files
Encryption:
Cyclic Pad
Write an encryption program that reads from stdin [unix] and writes to a specified file using this simple encryption scheme: functions; file I/O; command-line arguments; logical bit manipulation, binary files
Factorial Write a simple program what will compute N! simple, but recursive
Fibonacci Write a program that will compute the Nth number in the Fibonacci sequence. simple, but recursive
Format Write a file formatter that takes text in a text document and formats it nicely into a new document where the lines are the same size. [largish] file I/o; strings; functions
Image
Encryption (simple)
The purpose of this assignment is to create a simple program that will encrypt a given ppm image file.
Command line arguments; File I/O
Logical operations on data; Random Numbers; Pointers; Memory Accessing; 3D/2D/1D array accessing (Row major access for single dimensional arrays.
Knight's Tour It is possible to place a Knight on any square of a chessboard and then, in 64 moves have him visit every square once and only once. Write a program to find such a Knight's Tour. 2D arrays; functions; possibly recursion;
Koch Curve Write a program to generate and draw Koch Curves, both iteratively & recursively. Pointers, Dynamic memory, Recursion, Algorithm, File Input/Output
Life Write a program to play the Game of Life. [largish]
Linked List Library Create a library of routines & data structures that will support linked lists. Linked List, Dynamic Memory Allocation, Pointers, Inheritance, Classes - object oriented design
Mancala Write a program to play this African game of counting and strategy. [largish] Algorithms, Standard I/O, Functions
Matrix Library Create a library of routines and data structures that will support the basic matrix operations. Pointers, Dynamic Memory, Classes, Object-oriented programming, Functions, Algorithms
Microwave Write a program to pick out the closest matching times when a zero digit is not available. [smallish] nested loops
Minesweeper The object of this assignment is to write a program that allows a user to play the game "MINESWEEPER". [largish] functions; 2D arrays; possibly classes, possibly recursion (flood-fill)
Packet Sniffers Your task is to write a program that gathers, reassembles and prints out the message (in English) that is being transmitted by a set of packets. file I/O, functions,
Phone Numbers Write a program that will take a 7-digit phone number and generate a list of possible words that can be associated with it using a standard mapping of digits to letters. nested loops; arrays; chars/ints; functions; combinatorics
Poker Hands Write a program that shuffles a deck of cards and deals out 4 poker hands. functions; random numbers
Printer's
Problem
Write a program that solves the general case: given a list of strings, what is the minimum number of letters required to be able to print each string in turn? strings
Pretty Printer I You are to write an efficient program that will take as it's input a file containing a program and produce as output a new program with the in-line comments (// this kind) RIGHT-justified. file I/O, strings
Pretty
Printer II
You are to write an efficient program that will take as it's input a file containing a program and produce as output a new program with the return type of the function written on a separate line directly above the function name. file I/O, strings
Queens,
Knights, and Bishops
Write a program that will determine the position of each of the five Queens. 2D arrays; functions
Quick Sort The process of sorting is very common in computer science. Your job is to write a program that implements a "quick sort". Random number generation, Functions, sorting, lists
Radix Sort The process of sorting is very common in computer science. Your job is to write a program that implements a "radix sort". sorting, random numbers, functions, lists
Solitaire: 4 Seasons Write a program that will allow you to play solitaire. [largish] implementation of simple stacks, menu-driven interactive programs, games, problem decomposition, OO Design, Program Testing
Solitaire: Calculation Write a program that will allow you to play solitaire. [largish] implementation of simple stacks, menu-driven interactive programs, games, problem decomposition, OO Design, Program Testing
Solitaire:
Canfield
Write a program that will allow you to play solitaire. [largish] implementation of simple stacks, menu-driven interactive programs, games, problem decomposition, OO Design, Program Testing
Solitaire: 
Double or
Quits
Write a program that will allow you to play solitaire. [largish] implementation of simple stacks, menu-driven interactive programs, games, problem decomposition, OO Design, Program Testing
Solitaire:
Idiot's Delight
Write a program that will allow you to play solitaire. [largish] implementation of simple stacks, menu-driven interactive programs, games, problem decomposition, OO Design, Program Testing
Sorting I Write an insertion sort. sorting, arrays, lists
Study Time For this assignment, you are expected to write a program that prompts the user to enter the start and end time of each study period you have per day. (There can be more than one per day) [smallish]
Subscriptions The object of this assignment is to write a program that will build and maintain a list of subscribers to your magazine. file I/O arrays; lists; records (objects); sorting; searching [largish]
Survey
Analysis
Write a program to read in survey results from a file whose name is to be provided by the user. file I/O arrays; lists; sim[ple statistics, records (objects); sorting; searching [largish]
Target Write a program to count the regions in a bitmap image of 1's and 0's. functions; 2D arrays; possibly classes, possibly recursion (flood-fill)
Tic-Tac-Toe Write a program that will allow a user to play Tic-Tac-Toe (ASCII Version) with the computer or another user. Classes, Object Oriented Design, Algorithm, 2D arrays, Dynamic Memory
Trans-formations Write a program that will recognize the minimum transformation that has been applied to the original pattern given a list of possible transformations.
Word Search Write a program, that searches through a file for a specific word. If the word is found, you will output to the screen the line number, and the complete line of text the word was found in. strings; file I/O; pattern matching
X-Reference Map You are to write an efficient program that will take as it's input a file containing a C, C++, pascal, or Java (pick one - not all) program and produce as output a cross reference map of all the identifiers encountered in the program as well as the line-numbers on which they appear. [largish] parsing; pattern matching, file I/O, strings
Wasabi Problems
Address Book This program is to create an indespensible address book to keep track of all your contacts.
Concepts: 2D Arrays.; Basic Class functions ( encapsulation, polymorphism, etc); Operator overloading.; Copy/Clone Constructor; Sorting; File I/O; I/O; Compairisions; Strings; Data Handling (Strings vs Numbers)
Optional Concepts:; Link Lists.; Memory management.; Sorting methods.
Asteroids Write a program to play Asteroids! [big] inheritance - also larger, more involved, 3 weeks - students will get some help here: definition of base class and outline of driver [engine] - inheritance mechanism must be obvious - more complex relationships between classes - a problem with no single correct implementation : students are encouraged to make design choices - a fairly open-ended problem - a problem that could easily take much more time than we have to complete so students are forced to specify their own bounds
Black Jack Write an ASCII based program that will allow up to three players to play a game of blackjack. [big] Classes - Object Oriented program, User Input/Output, 2-Dimensional Arrays, Looping Structures, Algorithms
Centipede Write a program to play the game Centipede. [big] see Asteroids description
Drawing Utility Write a utility that allows people to write drawing 'scripts'. [big] Inheritance, Classes, Object-oriented design, Algorithms, Linked List, File Input/Output
Frogger Write a program to play the classic arcade game Frogger. [big] see Asteroids description
Hang Man Write a program to play an ASCII version of the game "Hangman". [big] Inheritance, Classes, Object-oriented design, Algorithms, Linked List, File Input/Output
Image Merger The program you are to make takes two simple images and imposes one of these images onto another image.
Text File I/O.; Basic File formatting. (Header/Data); Command-Line Arguments.; Pointers/Memory Allocation.; Array Access.; Data representation. (structures, integers, etc)
Maze/Dungeon Generator/ Validator/Solver Grog's Dungeon and Labyrinth Excavators is looking to expand and improve its business.  Grog is wanting to have some method of designing state of the art dungeon maps to give to his goblin excavator teams for creation of his clients.  Grog wants to be able to create dungeons that utilize every possible section of space available so that there are no sections of a created dungeon that are not accessible.  Grog also insists that each dungeon made is a complete dungeon in that you can enter and leave the dungeon as well. 
2D Array access.
Random Numbers.
Recursion (Solving and Validating Maze)
Input/Output.
General Class fundamentals.
Polish Postfix Write a program to parse arithmetic expressions and transform them into polish postfix notation. Then evaluate the expression. [big] composition, intro to BNF, intro to formal definition of languages, intro to parsing, encapsulation , recursion
Reversi Write a program that allows two users to play reversi. [big] file I/O arrays; lists; records (objects); gaming; searching, 2D arrays
Space Invaders Write a program to play SpaceInvaders [big] see Asteroids description
Tetris Write a program to allow a user to play Tetris. [big] file I/O arrays; lists; records (objects); gaming; searching, 2D arrays
Tiny Basic Write a parser and interpreter for this small programming languaage. file I/O arrays; classes parsing, records (objects); [big]
Top Dog Process a list of dogs and their show results to date to find the top dog for this breed. file I/O arrays; lists; records (objects); sorting; searching [big]
Vector Class The purpose of this assignment is to design a class for a three dimensional vector.

Basic Class design; (Polymorphism, Encapsulation, JAVA:; Class methods,; Clone/Copy constructor, etc.; Arithmetic operations.; Conditional checking.

Wee English Write a program to parse English sentences and translate them into Latin. [big] parsing, formal grammars, recursion, encapsulation
New Additions
You're kidding.

It's a bit early to have additions that are new.


Updated: December 20, 2005 10:57 PM