HughesClan

Valid HTML 4.01 Transitional

Valid CSS!

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.
Sudoku Solver

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

  1. Open your favorite shell.
  2. Change to the directory where you downloaded the program (e.g., cd ~/my_download_dir).
  3. Change the permissions to allow execution of the program by typing "chmod 755 sudoku_solver" (without quotes).
  4. Type "./sudoku_solver board_name" (without quotes), where board_name is the name of the board file to solve.

Running the Windows Version

  1. Click Start->Run.
  2. Type cmd.exe and press Enter.
  3. Change to the directory where you downloaded the program (e.g., cd "C:\my download path".
  4. 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

Out of Order Memory Queue Schematic

Amdazulo Out of Order Memory Queue

Top Level Schematic

Amdazulo Top Level

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

  1. Copy the filesystem image to /boot.
  2. Copy the OS image to /boot.
  3. 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

Duck Hunt Gun and FPGA
Playing Duck Hunt

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.
Connect 4

Download

Running the Linux Version

  1. Open your favorite shell.
  2. Change to the directory where you downloaded the game (e.g., cd ~/my_download_dir).
  3. Change the permissions to allow execution of the program by typing "chmod 755 connect4" (without quotes).
  4. Type "./connect4" (without quotes).

Running the Windows Version

  1. Click Start->Run.
  2. Type cmd.exe and press Enter.
  3. Change to the directory where you downloaded the game (e.g., cd "C:\my download path".
  4. 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

  1. Open your favorite shell.
  2. Change to the directory where you downloaded the program (e.g., cd ~/my_download_dir).
  3. Change the permissions to allow execution of the program by typing "chmod 755 lc3as" (without quotes).
  4. 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

  1. Click Start->Run.
  2. Type cmd.exe and press Enter.
  3. Change to the directory where you downloaded the program (e.g., cd "C:\my download path".
  4. 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.
BlackJack

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

  1. Open your favorite shell.
  2. Change to the directory where you downloaded the program (e.g., cd ~/my_download_dir).
  3. Change the permissions to allow execution of the program by typing "chmod 755 blackjack" (without quotes).
  4. Type "./blackjack" (without quotes).

Running the Windows Version

  1. Click Start->Run.
  2. Type cmd.exe and press Enter.
  3. Change to the directory where you downloaded the program (e.g., cd "C:\my download path".
  4. 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!
LiquidIce Screenshot

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.
DeleteWU Screenshot

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.
GenomeMon Screenshot

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.
April Fools Screenshot

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.
THOMAS: The English-German Translator Screenshot

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.