Projects
I've created a lot of interesting projects over the past few years, but
I am just now starting to put them up, so it may take some time. Be patient
and watch this page for updates.
Note: Although I would like to provide the source files for all the projects,
I am unable to do so for some of them that were created for class since future
classes will be doing the same project.
Sudoku Solver
Date: Summer 2006
My girlfriend enjoys solving Sudoku puzzles, but as an engineer I felt they were
waste of time because they are so easily solved by a computer. To prove to her
that it was easy to write a program to solve these puzzles I did.
Later, as a TA for ECE 190 at UIUC, I turned this program into an assignment to
teach recursion. The program uses a simple (dumb) recursive backtracking method
to solve the puzzles.
Download
Board File Format
To create a board file to solve, simply enter the numbers from the puzzle into
a text editor. A "0" indicates that a space is empty, while "1-9" represent the
filled in spaces of the puzzle. Look at the
sample board.
Running the Linux Version
- Open your favorite shell.
- Change to the directory where you downloaded the program (e.g., cd ~/my_download_dir).
- Change the permissions to allow execution of the program by typing "chmod 755 sudoku_solver"
(without quotes).
- Type "./sudoku_solver board_name" (without quotes), where board_name is the
name of the board file to solve.
Running the Windows Version
- Click Start->Run.
- Type cmd.exe and press Enter.
- Change to the directory where you downloaded the program (e.g.,
cd "C:\my download path".
- Type "sudoku_solver board_name" (without quotes) and press Enter.
"board_name" is the name of the board file to solve.
AmdaZulo: A Superscalar LC3-b Processor
Date: Spring 2006
ECE 411: Computer Organization and Design
is a required class for
Computer Engineers at the
University of Illinois at Urbana-Champaign. The
final project in the class is to design an implementation of the LC3-b processor
and interested students can compete in a design competition. Steve Hanna, Mark Murphy,
and myself decided to design a superscalar processor with four-wide fetch/decode/issue,
fully associative caches with exact LRU, an out of order memory queue, register renaming,
and speculation. You can read the report
, view the presentation, or view
the schematics below.
Download
Operating System Project
Date: Spring 2005
Shaun Armstrong, Al Dimond, and I wrote this OS from scratch in about three weeks for
ECE 391: Computer Systems Engineering.
We were only provided with the entry point from grub (bootloader), and everything
else was written by us. We originally developed it by running it in Virtual PC, but
I've tested it on my P4 laptop and it runs fine.
To run it you need the grub bootloader.
Download
Installation
- Copy the filesystem image to /boot.
- Copy the OS image to /boot.
- Add the following to grub (/boot/grub/menu.lst in Linux):
title=Whatever Title You Want
kernel /bootimg
modulenounzip /filesys_img
Duck Hunt with an FPGA
Date: Spring 2005
Joshua Ratcliff and I recreated a "Duck Hunt" game using a Xilinx Spartan 3 FPGA,
the Nintendo Zapper gun, and a protoboard for
ECE 385: Digital Systems Laboratory.
The final report
contains all the necessary information to recreate this project
if you wish to do so or are interested in how the Nintendo Zapper works.
Download
Connect 4 Game
Date: Spring 2004
I wrote this game for ECE 199 SJP, which is now
ECE 190. The purpose of the
assignment was to teach recursion because the computer evaluates possible moves by
calling a recursive function. There are no graphics; it just runs in the shell.
Download
Running the Linux Version
- Open your favorite shell.
- Change to the directory where you downloaded the game (e.g., cd ~/my_download_dir).
- Change the permissions to allow execution of the program by typing "chmod 755 connect4"
(without quotes).
- Type "./connect4" (without quotes).
Running the Windows Version
- Click Start->Run.
- Type cmd.exe and press Enter.
- Change to the directory where you downloaded the game (e.g.,
cd "C:\my download path".
- Type "connect4" (without quotes) and press Enter.
LC-3 Assembler
Date: Spring 2004
I created this project for ECE 199 SJP, which is now
ECE 190. The class uses the
LC-3,
which is a 16-bit processor created by Sanjay Patel
and Yale Patt for learning about
computer architecture. For the assignment we had to write an assembler that converted
LC-3 assembly to a "bin" file of 16-bit LC-3 instructions.
Download
LC-3 Assembly
The Assembly is fully described in Introduction to Computing Systems by Patt and
Patel, but you can freely download the appendices (below) that contain all the information
necessary to write LC-3 assembly.
Running the Linux Version
- Open your favorite shell.
- Change to the directory where you downloaded the program (e.g., cd ~/my_download_dir).
- Change the permissions to allow execution of the program by typing "chmod 755 lc3as"
(without quotes).
- Type "./lc3as asm_name bin_name" (without quotes), where asm_name is the
name of the input assembly file and bin_name is the name of the file that the
assembler will output.
Running the Windows Version
- Click Start->Run.
- Type cmd.exe and press Enter.
- Change to the directory where you downloaded the program (e.g.,
cd "C:\my download path".
- Type "lc3as asm_name bin_name" (without quotes) and press Enter.
"bin_name" is the name of the input assembly file and bin_name is the name
of the file that the assembler will output.
BlackJack
Date: Spring 2004
I wrote this game for ECE 199 SJP, which is now
ECE 190. It's a simple text-based
BlackJack game that you play against the computer.
Download
Notes
- To exit the game hold the CTRL and C keys down.
- When prompted for a random seed at the beginning, type any number and press
Enter.
Running the Linux Version
- Open your favorite shell.
- Change to the directory where you downloaded the program (e.g., cd ~/my_download_dir).
- Change the permissions to allow execution of the program by typing "chmod 755 blackjack"
(without quotes).
- Type "./blackjack" (without quotes).
Running the Windows Version
- Click Start->Run.
- Type cmd.exe and press Enter.
- Change to the directory where you downloaded the program (e.g.,
cd "C:\my download path".
- Type "blackjack" (without quotes) and press Enter.
Old Projects
These projects are very old and are no longer supported. They are still
up because people are still downloading them (occaisonally), and they also serve
as a bit of nostalgia.
LiquidIce
This free MP3 player was designed to be as easy to use as possible, look good,
and have excellent sound quality. It includes many different skins and is as
easy to use as your home stereo. It was even featured on CNET's
Download.com!
Download
History
When I was 16 I took a C++ programming class in high school and wrote this
program using Borland C++ Builder. It has very basic functionality, but I've
gotten emails from people saying that they like to use it.
Delete Work Unit
This program was developed as way to easily delete the work units for
Folding@Home
and Genome@Home.
Download
History
During high school I became really interested in the Folding@Home distributed computing
project run by Stanford. At that time, the Folding@Home software was fairly buggy,
so I created this program to easily delete the work units in order to force it to
acquire a new one.
Genome Crash Monitor
This program was developed to detect when the Genome@Home
client crashed and automatically restart it.
Download
History
During high school I ran the Genome@Home distributed computing project on my computer.
However, the Genome@Home software was very unstable and crashed a lot, which meant
a lot of lost time if you didn't notice it. As a solution I wrote this program to
monitor the client and restart Genome@Home if it crashed.
April Fools
Download this fun program to play a joke on someone. When the person runs
this program they get the screen below that won't go away! This does not
harm their computer at all, but they think that something has gone wrong. After
about 10 seconds another screen pops up that says it was all a joke.
Download
History
My first experience with programming was Visual Basic, and I started using it
around the age of 12. As a young teen I naturally wanted to create something
that would annoy people, and programs constantly crashed in Windows 95, so
this program was born.
THOMAS: The English-German Translator
This program translates words and phrases from English to German. There are OVER
750 words and phrases that THOMAS translates. It is extremely easy to use and
does not cost a cent! It is FREEWARE! Download it now and see why thousands of
people use THOMAS to translate.
Download
History
I started taking German in 8th grade and really enjoyed learning the language. My
interest in programming was also developing as I played around with Visual Basic,
so I combined the interests by creating this translating program. The sad part is
that I entered all the words by hand into the program...
If you are looking for *real* translation software check out
LEO, which is what I currently use when
I need to look things up.
|