Alan's Carnegie Mellon Page
Programming Projects
Interested in what a CS major at CMU has in store for you? Here's some of the more memorable programming assignments I've done.
15-397 (Pen-Based Computing):
- Pen Mapping Tool - A tool for dungeon masters to sketch out environments for players during table top roleplaying games. Included support for custom textures as well as a variety of items and user objects.
15-410 (Operating System Design and Implementation):
- Stack Crawler - A program that would traverse the stack and print out information for debugging, no matter how malformed the stack may be
- Drivers - Drivers for the keyboard, timer device, and display that are later used in the kernel.
- Thread Library - A userland thread library, including primitives such as mutexes and condition variables
- Kernel - A fully preemptable kernel with the basic Unix command set (fork, exec, etc) supporting multithreading and user input.
- File System - A small memory-based file system extention for the kernel in which you can store data files.
15-437 (Web Application Development):
- Dating Service - Wrote a webapp to act as a simple dating service
- CMU Adventures - Wrote a web-based adventure game set on the CMU campus
15-441 (Computer Networks):
- Reliable Sliding Window Transport - Implemented a TCP-like protocol at the network level.
- Routing - Implemented a routing table and daemon at the IP level.
- SMTP - Implemeted a simple SMTP program with DNS resolving.
15-437 (Web Application Development):
- Dating Service - Wrote a webapp to act as a simple dating service
- CMU Adventures - Wrote a web-based adventure game set on the CMU campus
15-462 (Computer Graphics):
- Ray Tracer - Wrote a program to render images using ray tracing
- Procedural Generation - Used Perlin noise to procedurally generate landscapes and sky textures, and implemented recursive tree rendering as well as BOIDS.
15-312 (Fundamentals of Programming Languages):
- Lazy Evaluation - Implemented threading in ML to implement a compiler for a language with lazy evaluation and storage effects.
- Bidirectional Typechecker - Implemented a typechecker for a language MinML that could infer types from context.
- Dynamic Typing - Implemented a compiler for a dynamically-typed language Dyn to MinML.
15-213 (Introduction to Computer Systems):
- Proxy - Implemented a web proxy with multithreading and caching.
- Shell - Implemented a simplified unix shell.
- Malloc - Implemented the library functions malloc, calloc, realloc, and free.
- Buffer Bomb - Mounted a buffer overflow attack on a program to cause it to execute malicious code.
- Binary Bomb - Defused a binary bomb by stepping through its assembly code.
15-212 (Principles of Programming Languages):
- Compiler - Wrote a compiler for a mini version of ML with graphics support, MLg.
- Sudoku Solver - Implemented a program to solve sudoku puzzles using backtracking.
- Sorting - Wrote various sorting functions using concurrency.
15-211 (Fundamental Data Structures and Algorithms):
- Compression - Implemented 3 compression algorithms: Huffman trees, LZW, and Fibonacci compression.
- Search Engine - Wrote a web search engine that indexed and ranked pages by incoming links.
- Amazons AI - Implemented an AI for the game Amazons using game trees.
- String Search - Implemented O(n) time string searching (for multiple search strings) using DFAs.
15-251 (Great Theoretical Ideas in CS I):
- Processor Design - Designed an entire processor from scratch, starting with NAND gates and working up to logical operators and mathematical operations.
- Auto-Cannibal Maker - Wrote a program that, when given the text of an "eat" function, outputted another program B such that running B yields C and eat(B) also yields C. Amazing.
15-200 (Intermediate/Advanced Programming):
- Photomosaic program - Implemented classes for a program that creates photomosaics from a database of images.
- Kevin Bacon program - Implemented graph classes and searching algorithms to solve the "Degrees of Kevin Bacon" problem.
Back to main
Back to AlanvDotOrg