I first tried programming on a whim in fall 2011, and I greatly enjoyed pursuing it through the second half of my time at Stanford.
As a university-designated Programming Service Project in my senior year, I attended the lectures of CS108 and learned all about the standard Java libraries while I spec’d, designed, developed, tested, and launched a custom point-of-sale application for my student group, the SHPRC. You can take a look at my code on GitHub.
Though not strictly a programming project, CS198, Teaching Computer Science, gave me the amazing opportunity to teach a lab/discussion section of CS106A, Stanford’s introductory Computer Science class. Each week, I was responsible for grading my 12 students’ projects, reviewing concepts and teaching programming exercises in section, and meeting with each of my students one-on-one to go over feedback on his or her previous assignment. I also graded exams and spent two hours each week assisting students with their projects at office hours, both of which gave me great experience reading and understanding others’ code.
For CS145, Introduction to Databases, I created a small online auction website using data from eBay (way back in 2001). I wrote a parser in Java that processed the original XML files into proper bulk-loading format and then read these files into a SQLite database, complete with constraints and triggers that reflect the real-world dependencies of the data. Finally, I wrote a simple website that uses PHP to display and update auction information in an easily browsed, searchable interface.
In CS107, Computer Organization and Systems, I wrote several programs using C. Among the highlights are implementations of a hash map (which is also my favorite data structure) and a vector that accept generic pointers, a spellchecker using Levenshtein distance, and a fully-functional heap allocator with its own malloc, realloc, and free functions.
Over the course of CS106B, Programming Abstractions, I wrote several different kinds of programs using C++, including an implementation of Boggle, a BASIC interpreter, and a graphical pathfinder that calculates shortest paths and minimal spanning trees.
CS106A, Programming Methodology, was a whirlwind of delightful Java assignments that ranged from the classic game Breakout, to a graphical plotter of baby name popularity ranks, to a small social network with a usable GUI.