When I joined Google last year, I was simultaneously thrilled to be building innovative applications and bummed to be leaving behind my college years. No, I'm not talking about dorm life and late night pizza runs - I'm talking about teaching. I started teaching as a Sophomore at the University of Pennsylvania and loved every minute of it. At first it was leading smaller sections of a larger lecture, but I later created the curriculum for a new course titled Software Design and Development and taught this in my final two years. As graduation neared, I toyed with two career choices: teacher and software engineer. I loved both but, since I had to pick just one, I decided to join Google as a Software Engineer.
Once I joined Google though, I realized that I didn't have to pick just one: I could do both! Google's 20% Time allows engineers to spend 20% of their time working on something outside of their main project. Long story made short, that's how I wound up teaching Software Design and Development at the University of Washington in Spring 2006.
Thirteen freshman and sophomores spent the quarter learning how to design and implement large software projects. Each project involved a graphical user interface, although the priciples and techniques learned would apply to a variety of topics.
In the final four weeks of the course, students had the opportunity to build any application of their choosing. These projects clearly reflected each student's individual passions and strengths - which, being college students, meant music, games, pictures, and chat.
Andrea Parkhill, a drama major who was interested in both music and computer science, wrote MelodyScript, an application which allows the user to compose music by adding notes to a musical staff. Alan Fineberg's project had some similarities, but his was specifically focused on generating music loops. Andy Peck, however, created an application which would enable users to search their music collections and create playlists based on a variety of categories.
Julia Schwarz, a sophomore who excelled in user interface design (and in a number of other areas), created a beautiful chat client that allowed Tablet PC users to chat with hand-written text and drawings. Nathan Weizenbaum's application also supported chatting, but was instead focused on collaborative drawing of images (complete with layers, history, and all that fun stuff!). Alyssa Harding also did something image related, but her application instead acted as a photo organizer and uploader.
The popularity of arcade-style games is never a surprise: Daniel Suskin wrote Pacman, Paul Beck wrote Bejeweled, Peter Beckfield wrote Snakes, and Peter Miller wrote a networked 2 player version of Tetris.
While students were pushed to design applications with a clear user interface and clean, well-written code, they were still offered the opportunity to design and implementation an application that matched their passions. For me, however, this course offered me the opportunity to merge my passion for teaching with my passion for software development. I thought when I graduated from school that I had to pick one or the other - I never would have thought that I could pick both!