At the beginning of September, I was a part of a program called Sophomore College. Sophomore College is two weeks of one class at the start of sophomore year. You apply to one of several programs. There are small class sizes, and there are lots of cool activities.
My sophomore college was CS10SC -- Great Ideas in Computer Science. The professor was Mehran Sahami, my advisor. It was an awesome experience. We learned about great ideas in the history of computing, we learned about contemporary computing with tours to Facebook and Google (and with Mehran's knowledge as a CS professor and Research Scientist at Google). Because it was a small class and we were all in the same dorm, I got to know my fellow SoCo'ers well. It was extremely fun and interesting.
At the same time, I started up with my extracurriculars, notably coaching debate. Because I had more free time during SoCo than during the rest of the term, I was able to put in a lot more work. That free time also meant that I was able to read a book cover to cover. Wow! And I got some good one-on-one time with Mehran, which is nice because both of us are very busy during the quarter.
I also got on my bike for the first time in three months. The sun damaged the grips, and there were spider webs all over it, but everything worked fine, and after a few months, the spiders subsided to a reasonable level.
All in all, it was an excellent introduction to a hard quarter.
The course itself was like a more-interesting, 2-week version of CS103. What made it more interesting was that we would only take one or two days for each topic, and those days would cover the same material that we would spend a week or two on in CS103. Mehran also managed to fit in lots of interesting historical tidbits about each topic, in addition to covering some topics not covered in CS103 like AI, Google's PageRank, Social Networks (in fact, one of my Google interview questions involved an algorithm that Mehran covered in the lecture on social networks), encryption, and Open Source Software. The fact that Mehran is Mehran also made the course pretty awesome.
The course itself wasn't too hard. There were two problem sets that were each around an hour long. There was also a final project where we chose our own subject matter. I implemented a primitive version of RSA encryption (RSA is the reason that the internet is secure and that typing in your credit card number doesn't immediately mean someone else has access to your credit card).
While the course wasn't hard, it did make CS103 very easy in the fall.
The main thing that made the course so interesting, though, was all of the events that we did.
We toured Google. It was really awesome. There was a lecture on distributed databases (the takeaway: Paxos, Paxos with Cruft, or Broken. Paxos is a protocol for keeping multiple databases in sync with each other). We ate lunch in one of the Google cafeterias (it really is that good). We walked around and saw the campus. We looked around at some of the random projects that Google employees have done in their 20% time (Google employees get 20% of their time to work on the project of their choice). The Google campus had a feel similar to the one that I got when first setting foot on Stanford's campus. I would not mind interning there at all (I started talking with Mehran about the possibility of interning at Google soon after the tour).
We toured Facebook. They had a much smaller / newer feel than Google. The CEO and founder of Facebook, Mark Zuckerberg, gave us a talk and some stuff with "Facebook" plastered all over it. It was interesting to get a talk from a CEO that's 6 years older than me and that only started wearing a tie when the economy crashed. His talk was a lot about the culture of the company. Because it's a web based company that's very new, each employee has a lot of influence (there are only about 250 software engineers, and there are about 250 million users), and there is a lot of rapid development. Another interesting thing that I noticed was that a lot of the people in my Sophomore College seemed more excited with the possibility of interning at Facebook than at Google.
We visited Stanford's AI lab. The person who would teach my AI class in the fall, Andrew Ng, gave us the tour. We saw all of the cool stuff that they did, like teaching a robot dog to walk over rough terrain (it's really hard to teach a robot to use legs rather than wheels), teaching a model helicopter to do crazy tricks like fly upside down, and working to create general-purpose robot modules (ie, a speech recognition module, an object recognition module, a module to open doors) that could be plugged in to any robot. It was interesting, but less interesting than the other tours.
We got a lecture from Google's head of Open Source, Chris DiBona. I think that a lot of the other people in the Sophomore College didn't get a lot out of the lecture because DiBona seemed to assume a certain level of knowledge about Open Source culture rather than assuming nothing. However, the level of knowledge that he assumed was almost exactly my level of knowledge (that of someone who read Slashdot, a nerdy news source, for a while), so I loved the talk. It covered the basics of Open Source -- what an open source license is, different open source software -- but it was mostly about the history and culture of open source. Thus, there were lots of funny, personal stories about the big players that I had only read about.
We went to the Computer History Museum (in Mountainview, I think). They had a lot of really old computers like the Babbage Machine. It worked with a crank, and it could do arithmetic! There were lots of punch card computers, and there was a chunk of each of the the first few electric computer (one of the room-big computers) that were used in big military tasks. There were also a bunch of computers that were about as old as I was, and some that are half my age. Mehran saw the first computer that he ever programmed on (I'm typing on the first computer that I ever seriously programmed on!). There was also an AI room that had some history-related plaques (ie, Deep Blue). It was pretty cool.
We went to the Exploratorium in San Francisco. It wasn't really computer related, but it was certainly an experience. First of all, we went there and back completely on public transportation, which meant Stanford-> Stanford's Free Bus, the Marguerite-> Caltrain-> San Francisco Bus-> Exploratorium. We spent substantially more time going to and from the Exploratorium than we did in the Exploratorium. My hunch is that much of the problem was scheduling -- we spent a lot of that time waiting, and I bet it could have been avoided. It all turned out well, though. The Exploratorium itself had a lot of cool exhibits. A lot of them showed similar things about how stuff works that I had seen at other science museums. The exhibits were done in a very fun and interactive way.
Some of the social events included watching the movie Sneakers (which is a non-technologically-accurate story about people who find a device that breaks NP completeness) and eating a dinner at Mehran's house. There was also general socializing, which included Mafia, Cranium, and watching the movie Dr. Horrible.
Because the school year hadn't started yet, Mehran didn't have quite as many people swarming his office hours. We chatted about classes in the upcoming quarter. I had already been planning on taking CS103, CS107, FEMST138, URBANST131, and one other non-CS class, but that still left some room in my schedule. Mehran mentioned that CS221 would be possible even though I hadn't really taken the prerequisites, which sealed my fate for the quarter.
We also talked about CS, my plans for next summer, and life in general.
One night, sitting in my SoCo dorm room, I came across Dr. Larry Brilliant's TED talks (TED is a conference that gets together a lot of cool people and has them give speeches, which are videotaped and freely available at ted.com). I don't remember how I came across them -- maybe I was watching Majora Carter's TED talk (Very good.http://www.ted.com/talks/majora_carter_s_tale_of_urban_renewal.html), or maybe I was just thinking about when Dr. Larry Brilliant spoke at the Stanford Service Summit last spring and doing a search.
The first TED talk (http://www.ted.com/talks/larry_brilliant_wants_to_stop_pandemics.html) was the founding talk of InSTEDD. Dr. Brilliant talked about seeing the last case of killer small pox in the world and his hope that we would be able to end other diseases through early detection and early response. His opening: "I'm the luckiest guy in the world. I got to see the last case of killer small pox in the world. There's nothing that makes you feel more the blessing and the honor of working in a program like that than to know that something that horrible no longer exists." Small pox killed more people in the 20th century than all of the wars in history, and it is eradicated. The global movement to eradicate it was astounding. Dr. Brilliant: "Al Gore said that the most photographed and printed image in the world was that of the earth, but this photograph [of a child with small pox lesions], as of 1974, was the most widely printed because we printed two billion copies and we took them hand to hand, door to door, to show people and ask them." He talked about how technology, GPHIN, had prevented SARS from being an epidemic. That planted the seed: using technology to eradicate a disease would be a very cool thing to do.
I talked with Mehran about what career opportunities there were for a computer scientist interesting in saving the world. One of the problems that I have been thinking about since deciding to go into CS is thinking about how I can use it to do good. Computers are very good at solving any problems of information. The issue is that, particularly with the problems affecting the worst off people in the world, we already know what needs to be done. People need food, water, and medicine distributed to them. People need capital so that they can work. People need schools built.
There are some informational challenges: what's the most efficient way to go about distribution? How can people with only a $20 cell phone query Google? If an aid worker needs to communicate with a semi-illiterate person using only a $20 cell phone and voice is out, how can they use text messages? How can we make aid workers as efficient as possible? If I could find an organization that were tackling these kinds of problems and hiring (like InSTEDD), that would be perfect, but since a lot of these problems are smaller and more disparate projects, it can be hard to get institutional support for them, and because the work is very specialized (you need to know computer science and be interested in global public health), there aren't as many nonprofits working specifically on those problems.
In the vein of "we don't need some insightful person to do something new; we just need people to do the work that we know needs to be done," I've been asking lots of people what they think the intersection of CS and social change is. Some common trends that I've noticed: everyone needs a website, and social media in general can help with advertising; most nonprofits need database work as they get bigger; and there are a few more-specialized nonprofits that were founded to use technology to address a specific problem. The work for the former two trends would be less interesting but available; the work for the last trend would require a lot of work in the field to figure out a problem and solution before doing any computer work.
When I mentioned public health to Mehran, though, he brought up that diseases are informational problems. Modeling the spread can help contain a disease. And, for the physiologically inclined, we can use computers to hack into diseases, determine exactly what they do, and design the drug that will undo that. Every half-century or so in recent history, humankind makes one or two big breakthroughs that advances our understanding of the world. Newtonian physics in the 17th and 18th century, electromagnetism in the early 19th century, biology, genetics, and medicine in the late 19th century, quantum physics and chemistry in the early 20th century, and information processing with computers in the late 20th century (though I might be a little bit off on any of these dates). A lot of people think that the first half of the 21st century will be known for computational biology -- using computers to understand and interact with biological beings. And it so happens that Stanford's CS department was reformed just last year to allow for specialization in certain tracks, and one of the tracks is biocomputation.
Another comment that Mehran made was that to truly advance the state of the art in biocomputation, you will probably need an MD / PhD. You need an extremely deep understanding of how the human body works and interacts with its environment and an extremely deep understanding of computers. As a result, I am now planning on fulfilling pre-med requirements at the same time as being a CS major. It shouldn't be too hard -- for the next three terms, I'll be taking a bunch of biology and chemistry classes (most people take chem their frosh year so that they can take bio their sophomore year because chem is a prerequisite for bio. I never really understood the concept of prerequisites anyways.), and I'll have to study physics on my own because I won't have taken the entirety of the physics series before taking my MCATs, but the workload will be very minimal after fall term of my junior year -- I will have taken most my general education requirements, most of my CS requirements, and most of my premed requirements by then, even though I'm only getting started now. There will still be a class or two each term that I have to take, but I think that more than half of my units each term are free for me to take whatever classes seem most interesting to me. I don't know what all of Stanford's premeds are so stressed out about.
While I still say that my career goal is to save the world, I can also say that I don't intend to die in a world where malaria exists. I will likely fail in that intention, but I won't stop working until I have succeeded.
Apparently, Palo Alto HS starts obscenely early. Thus, they were ready for debate practices to start up as soon as I arrived in California. Because Ben Picozzi, the other policy debate coach, wasn't on campus yet, this meant that there was a lot more independent work for me to do in preparing for, attending, and running practices.
I discovered that, like most things, you get out of debate coaching what you put into it. Because I was in charge for the time being, there was a lot more responsibility, but I felt a deeper connection with the debaters and I got more job satisfaction.
It'll be fun next year when I'm head policy coach.
Because SoCo was less time consuming than fall term, I actually had time to read a Book. I read "Me Talk Pretty One Day" by David Sedarsis. It came highly recommended to me by my high school lit teacher after she read my comments on humor in the Spring 2009 Verbose Letter. Because it was a library book (from the Law Library, in fact), I didn't mark it up, so my reflections on it may be less extensive than my reflections on "The Plague."
The book was lighter than I had read in a while. It's a collection of short stories about Sedarsis' life and is, in many ways, an examination of our postmodern culture and the assumptions that we bring to everyday situations. He actually had a lot about his personal experiences with postmodern art. There was also a good deal about homophobia, classism, and nationalism.
I didn't gain new revelations, but it was definitely a good read.
On 11/15, we had a SoCo reunion. Our class had an even boy-girl ratio, but all of the girls and none of the boys aside from me showed up to the reunion. I wonder why? The girls also seem to be surpassing the boys in terms of general success (ie, internships and accolades). Score one for equality! Particularly important in a field as gender-biased as Computer Science.