Computer Science
CS100 - Introduction to Profession I
Fall 2002 - Matthew Bauer
Artificial Intelligence Presentation
Artificial Intelligence: A Brief Overview Of AI. This is a PowerPoint presentation that Justin Brinkerhoff and I gave to briefly sum up what Artificial Intelligence is all about.
Binary and Logic
Binary Arithmetic/Program Translation Logic homework assignment. I don't know what the original questions were, but this is all pretty simple stuff.
Data Mining Research
Fake letter to a venture capitalist recommending they invest in data and text mining technologies.
Excerpt from my report:
Data mining is the process of looking for patterns in databases. Text mining is a subset of data mining in which patters are looked for in natural language text only. There are also other subsets of data mining, such as web mining, which focus on a specific set of data.
Goals
Short homework assignment describing my goals and aspirations while attending Illinois Institute of Technology.
Text and Concept Mining Research
Another fake letter to venture capitalists, slightly different topic. This time it is about text and concept mining technologies rather than text and data mining.
Excerpt from my report:
Data mining is the process of looking for patterns in databases. Text mining is a subset of data mining in which patters are looked for in natural language text only. Text mining uses natural language processing to find useful information out of chaotic text databases. BeingMETA describes concept mining as combining "linguistic analysis with existing background knowledge bases to semi-automatically generate domain-specific knowledge bases and taxonomies which will aid in search, browsing, and business process automation."
CS105 - Introduction to Computer Programming I
AP Credit - ???
I was awarded Advanced Placement credit for this course after completing the AP Computer Science AB class at Schaumburg High School and receiving a 3 (out of 5) on the Advanced Placement test.
CS200 - Accelerated Introduction to C++ Programming
Fall 2002 - Jesus Miranda
Final Project
The final project for CS 200 was a little weird, it was a graphical console application that was nothing like anything we had done all semester. The goal was to draw lines and ovals on the screen to create a bunny rabbit that could then be moved around. All of the project files have been included in the ZIP along with the description of the project form the teacher.
Lab Test A C++ File
The C++ source code for Part A of our midterm lab test. We were supposed to combine video clips to make a video file by reading and writing binary data.
Lab Test A WMV Files
The Windows Media Video files for use in the C++ file above.
CS330 - Discrete Structures
Spring 2003 - Edward M. Reingold
CS331 - Data Structures and Algorithms
Spring 2003 - Michael Lee
Information Retrieval Design Document
This document lists the project overview, classes, and functions used in creating the Information Retrieval Engine.
Information Retrieval Engine Source Code
This ZIP file contains all of the source and header files used in the final project: Information Retrieval Engine.
Information Retrieval Index Files
This ZIP file contains 26 .txt files making up the index for the Information Retrieval Engine. To include all of these files in the IR Engine, create a new text file (such as: allfiles.txt) that contains each of the file names on a separate line and load that file as the Index.
Information Retrieval Project Documentation
This file contains a description of the status, design, and summary after the completion of the Information Retrieval Engine.
Lab 01 Source Code
Lab 04 Source Code
Lab 05 Source Code
Lab 06 Source Code
Lab 07 Source Code
Lab 08 Source Code
Lab 09 Source Code
Lab 10 Source Code
Lab 11 Source Code
Lab 12 Source Code
Lab 13 Source Code
CS350 - Computer Organization and Assembly Language
Fall 2003 - Michael Lee
Final Project Description
The project description for the single-cycle processor. The processor was to be designed to work with a subset of the MIPS instruction set within the MAX PLUS II 10.2 BASELINE application.
Multicycle Processor Presentation
For the final project my team (consisting of: Chris Vafinis, Nate Johnston, and Antonis Antoniou) went all out and created a multi-cycle processor instead of just a single-cycle processor. Because of all the work we put into the project, we were asked to give a presentation on our implementation at the end of the year. This is that presentation.
Two-Pass Assembler Guidelines
The guidelines for the two-pass assembler go through the available commands and registers as well as miscellaneous notes regarding the formatting of the assembly code.
Two-Pass Assembler Project
This ZIP file contains the source code, executable, and guidelines for the two-pass assembler. It also contains the assembly code and converted machine code to run in MAX PLUS II 10.2 BASELINE.
Two-Pass Assembler Source Code
The two-pass assembler was an extra credit project within the final project of the class. The objective was to create a two pass MIPS limited instruction set assembler for use in MAX PLUS II 10.2 BASELINE by turning low level code into machine code.
CS351 - Systems Programming
Spring 2004 - Phil Dickens
Final Project - Golden Amulet
In this project you are to develop a simple version of a game. Basically, it involves a player searching for the "golden amulet". The search takes place in a cave with an infinite number of levels, and each level contains a random assortment of monsters, potions, armor plates and (possibly) the amulet. The monsters consist of orcs, trolls, dragons, and balrogs, and get progressively stronger as the player goes into deeper levels of the cave. The potions are magic potions, and usually help the player but can also be poisonous. The strength of the potions also increase as a function of the level. The plates of armor also primarily help the player, but can also hurt the player. The impact of the armor on the (health) of the player also increases as a function of the level. I can't find the actual code for this project... If I do, I will post the code as well.
Final Project - Static Map Configuration
The static map configuration for the Golden Amulet game.
Lab 1 - Debugging
This lab is designed to acquaint the student with the VC++ environment. There are two parts: 1) Download, compile, and execute the hellowin.c program. 2) Change the GetClientRect(hwnd, &rect) function call to GetClientRect(hwnd, (RECT *)NULL); Compile and execute. Use the debugger to find the error. If this does not crash the program, be creative and put in something that does. Bring up the debugger and become familiar with its basic functionality.
Lab 10 - Asynchronous Sockets
This lab is designed to provide experience with asynchronous rather than synchronous sockets. You need to implement the client using asynchronous sockets but may implement the server using synchronous sockets if desired.
Lab 2 - Windows Messaging
This lab is asking the student to find out how many messages are sent to the application window that are not processed by the application (i.e. are processed instead by the DefWindowProc function). You are to use the hellowin.c program.
Lab 3 - Windows Painting
In this Lab you need to get yourself familiarized with Painting on the Screen and its related APIs.
Lab 4 - Bug Game Part 1
You are to write a program that implements a simple game. Your program is to repeatedly place a "bug" on the screen at a random location, and remove the bug from the screen if the user moves the mouse on top of the bug and clicks the left button. Your program will then place another bug on the screen at a random location. Your program should also provide a simple display of the number of bugs squashed in the bottom left hand portion of the window.
Lab 5 - Bug Game Part 2
In this lab, you are modifying the game program (last week's lab) to provide the following functionality: 1) Implement a "time out" where the program displays the message "Hit me you creep." 2) Add some kind of special effects when the bug is squashed. 3) The user must be able to resize the window, and the size of the bug must be proportional to the size of the window.
Lab 6 - Bug Game Part 3
For lab 6, you need to modify the game such that the bug is implemented as a child window. The bug should look and behave as discussed above (that is, change colors, be proportional to the size of the window, and cycle between colors). IN ADDITION, the bug must send a message to the parent window or type BUG_HIT every time it is clicked on with the left mouse button, and the parent window must process this message.
Lab 7 - Animation
In this lab you will create some simple animation. Create 5 graphical (filled) objects of your choice, all of which are reasonably small (e.g. for a rectangle around 50 pixels in each direction). Also, place two "buttons" at the top right corner of the client area of the window: One should be labeled "Increase" and one labeled "Decrease". You must define the buttons using one of the pre-defined child window controls we have studied (the simplest is probably the push button).
Lab 8 - Threads
The first part of this lab has to do with synchronizing multiple threads. Your application must spawn three threads in response to the WM_CREATE message when received by the main thread. Each thread is going to draw a set of rectangles onto the window. The color with which each rectangle is filled is determined by the main thread, and is sent as a parameter to the thread when the thread is created.
Lab 9 - Synchronous Sockets
This lab is designed to acquaint the student with network programming. It is also a good time to learn something about Request for Comment (RFC) where proposed internet standards are documented.
CS411 - Computer Graphics
Spring 2004 - Gady Agam
Assignment 1 - Draw 2D
The design of this assignment was pretty straight forward. I was to treat a polyline as a polyline, and every other object, including circles and rectangles, as polygons. This would simplify the code needed in the draw section. I also needed to add keyboard cases i and o to zoom in and out respectively. Zooming was a matter of changing the matrix mode and adjusting the min and max coordinates to set the viewing window and create the zoom effect. Inside the display function, the matrix mode needed to be set to model view and each matrix pushed before any drawing began. This prevents any previously drawn image from being transformed by accident. Inside the drawing loop, only polylines need to be checked for, because all other objects are being treated as polygons. This check is where the glBegin() is preformed. There are always calls to glTranslate, glScale, glRotate, and glColor3 to insure only the transformations that are needed for each individual object are being preformed. After all points are drawn, the matrix is popped and a glFlush is called to display the rendered images.
Assignment 2 - Draw Parabolas
The purpose of this assignment was to develop a midpoint algorithm for the drawing of parabolas. There was an extra restraint in that the algorithm must be efficient; this includes taking into consideration symmetry, using only integer values, and eliminating multiplication from the generating loop.
Assignment 3 - Tennis Game
The object of this assignment is to implement a tennis game in which disks fall toward the bottom of the screen at a user defined speed (adjusted with the +/- keys) and a robotic arm is the only means of stopping the disks from reaching the bottom. Support code was provided for the falling disk, hit and miss score. I needed to develop the code for the robotic arm and the hit detection for the falling disks.
Assignment 4 - Cardinal Splines
The object of this assignment is to write a program that generates a smooth curve. I used a cubic cardinal spline with variable tension factor scheme to generate the smooth curve. Since four points are required to determine the curve between two points, the first and last points need virtual points to fully determine the curve.Assignment 5 - Draw 3D
The object of this assignment is to write a program that will render an object read in from a file containing vertex and face information and in doing so, acts as a simple surface viewer.
Assignment 6 - Move Cow Along a Path
The object of this assignment is to extend what we learned in Assignment 5. We need to take a rendered cow and move it along a predefined path with two spheres rotating around the cow. The cow object is loaded and normalized with the center of mass placed along the path. The direction of the object is then set based on the tangent and normal vectors at each location along the path. The rotating spheres are moved around the cow object, each with a diameter of .1 and distances of .5 and .7. The closer sphere moves at 5 degrees while the further sphere moves at 2.5 degrees around the circular path.
CS425 - Database Organization
Spring 2004 - Nazli Goharian
Design Homework
This is the assignment given in class to practice database design.
Design Solution
This is our solution to the design homework. We got 43/50 points on the assignment, so there is room for improvement in our solution.
Final Project
This ZIP file contains all of the source code I have for our final project. I did not write any of it, so I'm not sure what it looks like. It was written in Visual Basic by Nicu Ilea.
Final Project Database Schemas
This is the part of the final project that I took care of. I created all of the database schemas, proved them to be loss less, and wrote the test document.
Final Project Description
You are volunteered to create a database application for a Court. The assumption is that this database is a centralized and a single user database. You are to design and implement this database application. The application needs to be able to support the storage, update, and delete, and query of court information, as described below. Thus, you are to build an application that provides a friendly user interface (this means that the user does not write any sql query for insert, update, delete and query) for the user to insert, manipulate and query the data. The database management system used for this application is Oracle DBMS.
Paper Presentation
This is a PowerPoint presentation we did as a group presenting on the Oracle paper: A Mapping Mechanism to Support Bitmap Index and Other Auxiliary Structures on Tables Stored as Primary B+-trees.
SQL Homework
This was the first homework assignment in this class. We were to write a bunch of SQL statements and procedures.
SQL Solutions
My solutions to the SQL homework, along with the TAs solutions.
Tutorials
This ZIP file contains a bunch of miscellaneous tutorial files we were given in the class. They include: Trigger Help, Getting Started with JAVA, SQL Date Tutorial, Introduction to Database Design and Applications lecture slides, Getting Started with UNIX and VI, Getting Started with PL/SQL, and a Getting Started with Oracle tutorial.
CS429 - Information Retrieval
Fall 2005 - Nazli Goharian
IRIS Part 1: Parsing and Stemming Assignment
For this part of the project you need to modify the existing parser provided to you as a simple search engine prototype called IRIS (you have the option to write the parser from the scratch and not to use IRIS), to be able to parse the SGML tagged documents provided to the class for this project. In this part of the project you will also experiment the effect of Stemmer in the size of lexicon compare to not using any Stemmer.
IRIS Part 1: Parsing and Stemming Source Code
IRIS Part 2: Query Processing Assignment
In this part of the project, you will apply different strategies and different similarity measures to perform relevance judgment. Furthermore, you will apply one of the utilities in information retrieval, namely, Relevance Feedback, to experiment and observe the effect of such utility in the accuracy of the search.
IRIS Part 2: Query Processing Source Code
IRIS Part 3: Sort-Based Inversion and Compression Assignment
This phase is to implement an efficient and scalable IR System. You can no longer assume that you have sufficient memory to store entire inverted index. You have to use the sort-based algorithm for building the inverted index. To reduce both the amount of I/O in query processing and the space requirements, you need to compress the inverted index. A suitable compression technique is to be used to achieve compression ratio of almost 1:3.
IRIS Part 3: Sort-Based Inversion and Compression Source Code
IRIS Pre-Assignment
The pre-assignment for the IRIS project requires you to get used to the IRIS environment. This assignment requires you to install IRIS, read all of the documentation, review the source code, and run IRIS to examine the output.
P2P Presentation
Peer-to-Peer presentation on the paper entitled The Robustness of Content-Based Search in Hierarchical Peer to Peer Networks by M. Elena Renda and Jamie Callan.
CS430 - Introduction to Algorithms
Fall 2003 - Matt Bauer
0/1 Knapsack Final Write-Up
The final write-up to the Knapsack project.
Excerpt from my report:
In the comparison of various algorithmic approaches to the 0/1 Knapsack problem, I created an interface which allows the user to select input files based on the number of items (10, 20, 40, 80, 160), the correlation (uncorrelated, weakly correlated, strongly correlated), and the solution method (Brute Force, Backtracking, Best-First Branch and Bound, Dynamic Programming). Using a specific op code, 1234, in the number of items field, the user can set the number of items to whatever he or she chooses effectively bypassing the item restriction and error check. While selecting the correlation type, the user can specify the filename he or she wishes to load (given that the number of items indicated match with number of items in the file). Upon adopting widely available algorithms for the solution methods, I proceeded to test each method against numerous test files and I recorded their solution time, the number of sub-solutions, and the result of the algorithm. Comparing solution times yielded answers that I had not anticipated. Brute Force and Backtracking both run at O(2^n) with Backtracking the slower of the two methods. Dynamic Programming runs at O(number of items * maximum weight). And Best-First Branch and Bound runs faster than all of the other methods.
0/1 Knapsack Project Description
For this assignment you are to implement and compare four different solution methods to the 0-1 Knapsack problem: Brute Force, Backtracking, Best-First Branch and Bound, and Dynamic Programming.
0/1 Knapsack Source Code
The knapsack solution source code. The assignment was supposed to be object-oriented, but my solution is not.
CS440 - Programming Languages and Translations
Fall 2004 - George Koutsogiannakis
Assignment 1
Assignment 2
Project 1
Project 2
Project 3
Project 4
CS441 - Current Topics: Programming Languages
Fall 2005 - George Koutsogiannakis
Assignment 1 - MortgageCalculator
Assignment 2
Assignment 3
Project A
Project B
CS450 - Operating Systems
Summer 2004 - Alexander Manov
Operating Systems
CS455 - Data Communications
Spring 2005 - Marius Soneru
Homework 1
Homework 2
Homework 3
Homework 4
Homework 5
Homework 6
Homework 7
Homework 8
Homework 9
Project
Instructions:
This program simulates error control procedures for the IDLE RQ protocol between a primary (client) and secondary (server). This program was written using Python 2.4. To run this program, you must have Python 2.4 installed on your machine. Python is portable to any OS, however this program has only been tested on a Windows XP SP2 machine. To run this program, you must open two instances of the command line (via Run-->cmd). In this first window run the program via "YTelnet.py -s". The -s parameter sets up the secondary (server). In the second window, run the program via "YTelnet.py". This will open up the primary (client). The client will show the default menu and have a one second delay between entered commands. The primary will create a primary.txt file that saves the I-frame and ACK/NACK communication between the primary and secondary as seen from the primary perspective and it will save all client-side messages. The secondary will create a secondary.txt file that saves the I-frame and ACK/NACK communication between the primary and secondary as seen from the secondary perspective and it will save all server-side messages.
CS458 - Information Security
Spring 2005 - David Grossman
Client Puzzles Presentation
Intrusion Detection System
SSH Server
CS485 - Computers and Society
Spring 2005 - Charles Bauer
45 Years of SETI
A brief history of the SETI (Search for Extra-Terrestrial Intelligence) Project from Project Ozma to SETI@home.
Excerpt from my report:
Since the first microwave radio search of the sky forty-five years ago, millions of people have been participating in the search for extraterrestrial intelligence. The original Project Ozma, headed by Dr. Frank Drake, did not yield any signal of extraterrestrial origin, but the equation that bears his name suggests that somewhere among the hundreds of billions of stars in our galaxy alone, exists another civilization broadcasting their presence to the rest of us. With dozens of SETI programs continuing to this day, what have we found out? Are we just wasting our time, or are there civilizations out there trying to communicate with us?
Age of Vengeful Machines
A short story I wrote about sending a cyborg to a distant star to study the source of a recovered SETI signal and ultimately come back to Earth to destroy mankind.
Excerpt from my report:
"I... I think we've done it. Our life's work is finally complete. We have successfully created a cyborg with the intelligence of a five year old who thinks the whole world should revolve around them," commented Dr. Ima Psi Ko.
"Yes, Dr. But do you really think we should have used David Berkowitz and Eddie Gein as models for the brain functionality?" asked his assistant, Bing Gui.
"Ahh, what's the worst that could happen?"
Book Review - 2001: A Space Odyssey
My review of the classic Arthur C. Clarke book 2001: A Space Odyssey. The review consists of a brief history of Arthur C. Clarke, a summary of the book, and a technological review comparing the technology used within the book to the technology available to us today.
Excerpt from my report:
Arthur C. Clarke is not only a world famous science fiction author, but has contributions branching into other arts and sciences as well. Born in Minehead, Somerset, England on December 16, 1917, Clarke, like many other men in England, was forced into World War II joining the RAF as a radar officer. This experience as a radar officer would lead to his only non-science fiction novel, Glide Path. Clarke published a technical paper entitled "Extra-terrestrial Relays" in the magazine Wireless World during 1945 which outlined the principles of satellite communication using geostationary orbiting satellites. This paper would set the groundwork of satellite communication realized about twenty-five years after the paper being published. Since 1945, Clarke has published more than seventy books, articles, and papers including the four books in the "space odyssey" series. 2001: A Space Odyssey began as a movie script co-written by Stanley Kubrick and nominated for an Oscar in 1968. Continuing his entertainment career by working with Peter Hyams on the movie sequel to 2001, Clarke has also created a few TV series and worked with Walter Cronkite and Wally Schirra covering the Apollo 12 and 15 missions. Clarke's lifetime work has been acknowledged with Knighthood in 2000.
History of Computing 1960s
This is a PowerPoint presentation I gave on the history of computing between 1960-1969.
CS487 - Software Engineering
Fall 2004 - Barbara Wallace
Final Project
Part 1
Part 2
Software Design Specification
CS495 - Network Performance
Fall 2005 - Cynthia Hood
Assignment 2
File Transfers
File Transfers (Windows vs FTP)
Homework 3
Internet Usage
TCP Presentation
CS495 - Intelligent Text Analysis
Spring 2005 - Shlomo Argamon
Assignment 1
Assignment 2
Link Parser
Metafor Presentation
Tagger
CS537 - Software Metrics
Fall 2005 - Bogdan Korel
A Summary of the Current Techniques in Software Measurement for Design
This paper takes a look at the use of software measurement as it applies to software design.
Excerpt from my report:
The history of software measurement dates back to the 1960s with programmer productivity measured by counting lines of code. That same measurement is used today in a variety of different combinations to provide programmers and program managers with hybrid metrics to analyze each and every phase of the product life-cycle from pre- to post-development. While the number of components being measured and the variety of metrics being analyzed has increased, the ultimate goal of software measurement has remained the same: to increase our understanding of the software development process and use that knowledge to improve the reliability of the end product.
Homework 1
This is my solution to the first homework assignment.
Homework 2
This is my solution to the second homework assignment.
CS587 - Program Project Management
Summer 2005 - Atef Bader
A Summary of Tools and Tricks for Software Risk Management
This paper attempts to put forward, in a concise manner, all of the key areas in software risk management—from methodology to software tools—that will help program managers curb loss due to risk by identifying risk areas and implementing risk prevention techniques.
Excerpt from my report:
Risk Management in the software industry is one of the most critical processes in determining the outcome of a software project. A good program manager recognizes this fact and allocates the necessary time and resources to risk management processes. Risk management consists of two major parts: risk assessment and risk control. Each of these parts is, in turn, made up of sub-components that need to be accounted for in order for complete risk control and aversion.
Software Risk Management: Tools and Tricks for Risk Monitoring and Tracking
This was my final presentation in the class. The PowerPoint covers the basics of risk management and talks about risk monitoring and tracking implementations in theory (Riskit Methodology) and software.
