:. PROJECTS

Here you can find the Computer Science related projects that I have worked on at the University of Toronto from 2000 - 2004. You can also visit my flash site here


COMPUTER SCIENCE PROJECTS

Project Name Description

Source Code

Hockey Pool (UofT/CSC108) This program models a simple hockey pool. The hockey pool manages a list of hockey pool participants (we'll call these Poolees) and a list of hockey players who are available to be selected (drafted) by each poolee. The poolees each draft the same number of hockey players. For a given poolee, his/her total number of hockey pool points is calculated by adding up the number of points earned by all players that this poolee has drafted. The poolee with the highest number of points wins the hockey pool. JAVA

Francois' Fast food Stand (UofT/CSC148)

The purpose of the project is to adapt, add and modify a food ordering menu and discount system.The starter code is designed with only one main dish (Hamburger), one side dish (Salad) and one beverage (Pop) in mind. I have modified the hierarchy of classes to more closely reflect the new menu specified by the assignment handout, by adding appropriate classes to the starter code. JAVA
Ordered Collection (UofT/CSC148) In this assignment, I built three classes: one called "Ordered Collection" that stores Strings; and "OrderedCollectionTester" which tests an instance of "OrderedCollection" and another called "A1Driver" that contains a main() method that will allow a user to interact with my OrderedCollection. There are 6 commands a user can type: Add, Get, End, List, Size, and Search. JAVA
Playing the Game ("Tic Tac Toe" (UofT/CSC148) In this assignment, I had to read/debug a Tic Tac Toe game, draw memory model diagrams, and create two new classes, OffBoardException and SpaceTakenException. JAVA
Sparse Vectors using a Linked List (UofT/CSC148) This project required me to write and implement a class called LinkedSparseVector which implements a SparseVector interface supplied by the assignment handout. A SparseVector which is used to store a collection of objects using arbitrary non-contiguous indices, accessing the objects either by individual indices, or by a sequential traversal in increasing order of indices. Data Structure. JAVA
BST Ordered Contact List using a Binary Search Tree(UofT/CSC148) In this assignment, I implemented an ordered contact list, using a Binary Search Tree structure. All methods were written recurisvely. JAVA
Differentiation/Simplification (UofT/CSC148) In this assignment, we were to complete a Java program that enabled one to calculate derivaties. I implemented the class Expression and its subclasses: power(x,n), opCount(), stackDepth(), diff(), and simplify(). JAVA
Reasoning about Programs This is a handwritten assignment based on basic computer science-math notation and concepts, dealing with proofs, induction, time complexity and big-oh notation Proofs on Induction, Complexity
Contact Manager Servlet (UofT/CSC148) A small servlet program which gets surname and first letter requests from a ordered contact list which uses a linked list data structure. JAVA, Servlet
Hashtalkin' : Jabtalkin' (UofT/CSC148) Can you teach a computer to write? This project allowed me to write a program that does just that (the concept underlying our technique is called a "Markov Chain"). Markkov Chain is used to solve many other problems in statistics and artificial intelligence. The Data structures used is a Vector Hash table. If you're interested, check out the source code. JAVA
Bourne Shell Scripting (UofT/CSC209) I have written two unix shell scripts here. The first is called chmod2 which is a variant of the usual chmod command used to change file permissions. Unlike chmod, chmod2 will not take any commandn line parameters. Instead, after it is started, chmod2 will continually read from stdin until end of file is reached. The second script is called findcode which is similar to the grep command. The syntax to findcode is findcode [-c] [-e extenions] [-f dir/file] [-r] [-w] string. Shell Scripting
Automated Test Scripts - AWK and Shell Scripting (UofT/CSC209) I have written two AWK scripts here The first is called "buildchmod2" which combines bourne shell scripting and awk to set up a series of automated test for the chmod2 program that I write in Assignment 1 (CSC209). The second script is called gatherstats. The job of gatherstatus is to gaterh statistic produced by chmod2test to an output file called chmod2testResults which will indicate - 4 things: (1) The total number of tests (2) Number of compilation failures (3) of those compliations , how many had warnings (4) For each test performed, how many passed the test, and how many failed. AWK/Scripting
Verbose Shell (UofT/CSC209) In this assignment, I wrote my own shell - known as the vsh. In this assignment, pipe redirection concepts were used, and coding specific shell customizations were implemented as indicated on the assignment handout. Pipes/Shell
Black Jack Server (UofT/CSC209) I implemented a Black Jack server that allows people to connect to it and play the game over a network. The client application has been given as starter code. Sockets/Server
The Cassini Mission (UofT/CSC228) This assignment consisted me writting code to generate the Reed-Muller code matrices starting at level 2 and up to a level specified by the user. The maximum level to be generated will be specified as a command line argument to my code. The second module of this assignment will use the (32-5) Reed-Muller code matrix contained in a text file, and use it to decode an input file that has been received from the Cassini spacecraft. Concepts acquired from this assignment is the use of Binary files, and using od in C++ , as well as Opening, Reading , and writing files using C++ C++ Reading/Writing Files
Martian Explorer(UofT/CSC228) This assignment had me implement a primary index, secondary index, and an inverted list to get me familar with simple file structures. Records were fixed length, and the selection of a primary key and secondary key was left up to me. Also co-sequential processing was implemented at the end. The end result of the project allowed one to query the DB file structure I implemented. C++ I/O, DB
A Trip to Mars (UofT/CSC228) This assignment had me work in a group of three to create sophisticated DB system. The primary index can not fit in memory and is implemented as a B-Tree with the order of the B-Tree specified in the command line argument. Two secondary indexes were implemented to search by 'substance' and 'terrain type' respectively; however, these indexes have been implemented as hastables and are managed in memory. We also had to decide the particular hasing function, and collision resolution method that would be used, as well as the size of the hasing table. The bucket size of the hashtable is also given as a command line argument. C++ I/O, DB
Connected Components (UofT/CSC270) An alogorithm to find the connected components of a graph is the principal subject of this assignment. (By graph we refer to a structure in which each connected component is a set of nodes with paths from any member of the component to any other). In doing so, I (1) implemented data structures EDGE and TREENODE using structures; (2) use dynamic sotrage allocation; (3) implement linked lists of structures. C
Back Simulation (UofT/CSC270) The purpose of this assignment is to exercise my skills in event-driven simulation, with stochastic modelling and to learn how to perform object-oriented programming C++
Merkely Head Gear Report (3 part) (UofT/CSC340) This is a three piece document for Merkely Head Gear which includes a Requirements, Feasability, and Design specification report for the company's online ordering process. UML diagrams, flow charts, software architecture, and Entity Relationship diagrams have been used. Reports ( with UML/ER Diagrams)
The F.A.M.I.L.Y Book Report(4 part) (UofT/CSC318) This is a four part document that encompasses the design of the F.A.M.I.L.Y book for my "Design of Interactive Computational Media" course which includes a Requirements Analysis, Prototyping, and Usefulness and Usability Evaluations. Multimedia Project Report
Train Routing Project(UofT/CSC324) This project was implemented in Prolog and calculates the shortest path between cities on a train route. Prolog
Expression Evaluater (UofT/CSC324) This project was implemented in Scheme and is a expression evaluator which enables one to compute and evaulate functions such as f(x) = x^2 + e^x Scheme
RMT Business Plan(UofT/CSC354) In my business of software course, as a team project, we wrote a business plan for a company called "Remote Monitoring Technologies" (RMT). RMT would provide peace of mind to Canadian residential property owners who are concerned about the security of their homes by providing secure hardware/software monitoring needs. There are several drafts that have been done before our final submission. Business Plan