In the spring ‘09 semester, I took the Parallel Algorithms course taught by Professor Guy Blelloch. It taught me techniques and algorithms for use with multi-core machines. In particular, the algorithmic applications that come with having a theoretically unlimited number of processors. It stretched my abilities as a software developer that will hopefully pay off as machines more commonly come with more and more cores.
I completed many assignments for the class using NESL and Cilk++.
For a final project, I wrote an implementation of a kd-tree using Cilk++ that ran an order of magnitude faster than the sequential implementation.
Archive for the ‘Class’ Category
In the fall ‘08 semester at Carnegie Mellon, I took the Machine Learning course. It gave me a more in-depth understanding of Bayes classifiers, neural networks, probability theory, reinforcement learning, genetic algorithms, and decision trees.
In the spring ‘08 semester I took Professor David S. Touretzky’s Cognitive Robotics course. I was introduced to Tekkotsu, a framework for supplying primitives for robotics tasks. I implemented many behaviors to solve problems using vision and motion. The final project for this course lead me into my senior thesis topic.
During the Fall ‘07 semester, I took the Operating Systems class at Carnegie Mellon University. It was a partner project to write a full operating systems kernel from scratch that I completed with Will Constable (CMU ECE ‘09). Using simics, we designed and implemented the kernel in C to run on x86 hardware. We went from a specification document to a documented implementation by the deadline. The project was managed by source control.
We implemented all basic aspects of a kernel: managing virtual memory, forking and executing processes, managing interrupts, our own scheduler with context switching, and a basic display driver. In the end, the system had a handful of known issues, but was as robust as we could make it in the given time constraints.
A floppy image of the final system can be found here. NOTE: By downloading and flashing the image you assume all responsibility for any damage caused by the image or the data within the image. In particular, if you have hardware that requires specific OS support to handle system fans, this OS will fry your system.
In the spring ‘07 semester I took the Cognitive Modeling class at CMU. Professor John Anderson introduced me to ACT-R (which uses LISP) and all of its capabilities and ongoing research. For a final project, I implemented a cognitive model that controlled 2 characters inside an Unreal Tournament environment to play capture the flag. My model came in second in a tournament out of 16 students, and only lost in the final round due to a bug that caused the model to freeze halfway through the match, halting any action for the rest of the game.
In the spring ‘07 semester I took the Artificial Intelligence class at CMU. It introduced me to neural networks, decision trees, bayes nets, genetic algorithms, and reinforcement learning.
In the Fall ‘06 semester, I took Robotic Manipulation. I learned the fundamentals of kinematics and path-planning on real hardware.