With that in mind, let's do a brief overview of some of the key events which have taken place since that GRE test, starting with the test itself.
- I scored well on the GRE test.
- I applied to Northwestern University.
- I got rejected from Northwestern University.
- I decided I had to take real computer science classes.
- I applied to the Graduate Student-At-Large program at the University of Chicago.
- I left Japan and returned to America to take computer science courses.
- I'm a full-time student taking a Java and a Discrete Mathematics course.
Let's go through some of these things in more detail, while acknowledging that there's no way I'm going to really cover 5+ months of events in a single blog post.
I took the GRE test and scored very well. I was quite pleased with my scores, not because I think they really reflect reality that well, but because it means that I have very little incentive to take the test again - if GRE scores alone were the difference in me getting into a great school, I'd be pretty much set. Unfortunately, they aren't as my experience applying to Northwestern taught me.
I had always intended to apply to Northwestern because it's in my hometown of Chicago and it's a reasonably highly-ranked school (around #34, which ties it with my alma mater, the University of Chicago, in the area of computer science). But as it turned out, they have an incredibly late deadline for fall-quarter applications (July 1st this year). The same deadline for most schools is around December. So I had planned on waiting to apply to schools until the end of this year, but when I saw that Northwestern's applications were still open, I decided to make a go at it. I quickly requested letters of recommendation from my two American former employers - from my boss at my summer job where I had worked through high school and college, and from the director of the biology lab where I had worked after college. I wrote an essay which I felt adequately summarized my story and portrayed me as someone passionate about learning, which is true.
With such a short-notice application, I hadn't exactly expected I would get in -- I really didn't expect anything one way or another. In retrospect, my rejection was a good thing. Well, the best thing in some ways would have been getting in and going, but failing that, it was good that I had the experience of applying and that I learned that as I stood at that time, I was woefully unqualified to enter a top graduate program. The admissions counselor at Northwestern took the time to write me a detailed email explaining why I had gotten rejected, and it was clear that it had been an easy decision. I didn't have any academic record in computer science. I didn't have any letters of recommendation that were pertinent to computer science. My admissions essay wasn't poorly written per se, but instead of talking about what I wanted to study and do, I talked about all of the different areas I had studied so far, and how interested I was in all aspects of computer science, which had the net effect of making me look unfocussed.
I realized that I did not have a strong application and moreover, I would still not have a strong application come the winter if I continued on the path that I had been on, studying on my own and moving from topic to topic with interest but without direction. It became clear to me that no matter how much I could learn without real classes, it ultimately wouldn't mean very much if I didn't have proof of that knowledge in the form of grades. Further, having virtually no relationships with professors from my days in college, I would not be able to get great letters of recommendation from an academic standpoint, especially that emphasized the things that especially matter in computer science - mathematics and problem-solving.
Upon this realization, it became clear that the only answer that made sense would be to return to school. I had to go to school, to go to school. Is that irony? I guess that's not quite the right word for it. But whatever it was, it was true. Unfortunately, it took me about a month after my rejection to come to this conclusion, which cost me the opportunity to apply to the non-degree programs at the University of Illinois Chicago and the University of Illinois Urbana-Champaign (the former attractive for its price, the latter for its price and its prestige). But the University of Chicago has a very late start to its academic year, and I was able to apply to their non-degree program and get accepted. I quit my job -- with a certain amount of chagrin for the late-notice I gave -- and packed up for Chicago, which is where I am now.
So, at this point it is 4 weeks into the autumn quarter at the U of C. I ended up officially taking 2 classes, Java Programming and Discrete Mathematics. The former is a graduate course, and the latter undergraduate, but ironically the math class is far more difficult. Discrete math is broadly the mathematics of countable objects, and the kinds of things you do with them are quite a bit different than what you do in physics, which is mostly calculus. I've been able to do well on the first three problem sets thus far (at least, I think I've done well; only one has been graded so far). It's required quite a significant investment of time and energy, however. And the first midterm (of two, plus a final) is the day after tomorrow, and I am a bit nervous. It will be the first time I've taken a college test in over 5 years, and the first math test in several more. I did take the GRE of course, but that's a test of endurance as much as anything else. This one will likely be quite tough. Honestly, I had second thoughts about taking the class officially, because of the high cost of the class (about $2700) and the difficulty. It's a bit of a gamble, because if I do well, it will be impressive on my transcript (I hope), but if I do poorly, it might count against me.
The Java class, on the other hand, is frankly too easy. I hadn't studied Java in any significant depth prior to the course, but I had been exposed to object-oriented programming via python in my first computer science class, and again later as I studied C++. My knowledge of C++ carries over nearly wholesale into Java, and while there are a lot of new concepts in the nitty-gritty details, overall it's almost the same. Unfortunately, the class is taught practically from step one. Thus, four weeks into the course, we're still talking about basic things like inheritance and how Java passes values. The thing is, for as detailed as the lectures get, the textbook is even more detailed. And that's great for a textbook. So, if I were running the class, I would assign readings from the textbook, assume that people had done them, and use the time in class to press forward with the material. But hey, maybe I'll get to make those kinds of decisions somewhere down the road.
In coming back to take classes, I have three main goals. First, get good grades. This one is obvious. Second, make friends with professors so that they know me well enough to write me good recommendations. I had pretty good grades in college but I wouldn't be surprised if 95% of my professors didn't even recognize me now. I didn't build a relationship with any of them. That's something I'm trying to fix with both of my classes now. Third, figure out exactly what I want to do so that the next time I write an admissions essay, I can be direct and to the point, and inspire confidence that I know what I want to do. On this one, I'm still a bit fuzzy but I'm a lot closer than I was before, when I couldn't decide if I wanted to do artificial intelligence research, or build robots, or make CGI movies. At this point, I'm pretty settled on the idea of software engineering, designing and building applications. Making software is fun for me; identifying a challenging problem, knowing that there's a program I could write to solve it, and then figuring it out and doing it is a pleasure and rewarding. I'm still undecided on what kind of software I want to write - servers, systems-level applications, databases, mobile apps, web apps - but all of those sound great, and they're largely closely connected enough that I don't necessarily need to pick now.
So, where do I go from here? Well for one, I don't expect I will be at the U of C after this quarter. There are two primary reasons for this: for one, the courses at the University are incredibly expensive. For courses in the Computer Science Professional Program, which includes the Java course I'm taking now, a single course is about $4860. That's an insane amount of money. It might not be insane compared to some other schools, but for example in comparison to the Universities of Illinois - which are around $7-8000 for a semester of three courses - it's a pile. The second reason is that I don't think the CSPP is the right program for me. It's too focused on industry careers. Now, over the time that I began studying computer science, my goals have indeed shifted from wanting to do research to wanting to program professionally. But I am still driven by the thirst for knowledge, and I constantly want to learn more. The atmosphere of the CSPP - and maybe I'm mistaken about this - seems to be much more one of "learn only what you need to know." In part because the CSPP is such a short course. There are only 9 quarter-long courses, such that it can be finished in less than a year. Most master's degree programs are two years, with around 12 courses (if they're semester-long). It's inevitable that such a program will make sacrifices in the way of depth, in order to facilitate an accelerated track of study. Certainly it's attractive to imagine getting a master's degree in such a short time, and with no thesis. But that doesn't seem to be what I want. So, I'm setting my sights elsewhere, though reserving the right to change my mind.
With that in mind, I think my next destination will likely be the University of Illinois at Chicago. For the next few days, I actually have a window of opportunity to apply to the master's program there and begin in the winter. However, I think I'm going to pass that up just for the moment, and apply initially as a non-degree student in order to give myself the opportunity to apply to a wider selection of schools. Unfortunately, UIC only accepts a maximum of 9 transfer credit-hours when starting as a full-time student, and most courses are 4 credit hours, so courses I take past two (including the Java course I'm already taking) will be somewhat meaningless. However, I don't want to jump into a master's program without first trying other options. If it were Champaign-Urbana instead of Chicago, I would almost certainly go for it, since that's a top-5 school. But with UIC ranked at #58, it's a solid choice and one I wouldn't be ashamed to go to, but one where if I went without trying other options, I would probably regret it.
So, there are the updates. It got a lot longer than I was planning on, but I guess that always happens. Hopefully my next update won't come so late... but if it does, I expect I will have much and more to write about what transpired in the meantime.
_____________________________________
Musings on that price at the University of Chicago's Computer Science Professional Program: I would make a wild guess that their lecturers maybe get paid about about $10,000 per quarter, and it might be a lot lower - at 3 hours a week (5-6 if you include office hours, perhaps 10 if you include preparation), that's a pretty big chunk of change. Perhaps the TAs and graders make maybe $5,000, which again might be overestimating; that would be a nice gig if you could get it. Then with tuition at $4860 per quarter, 10 weeks per quarter and three hours of lectures per week, that means students are paying $486 a week or $162 dollars per hour of lecture, a rather eye-popping cost. On the other hand, there are around around 40 students in a class, meaning the University pulls in nearly $20,000 per week from each course, or $200,000 a quarter. If money spent on lecturers and TAs is around $20,000, that means around $180,000 of pure profit, per course, per quarter. Now there are typically around 4 or so highly subscribed courses per quarter, and maybe 2 in the summer. That means 3*4 + 2 = about 14 courses such courses per year. If my guestimates are anywhere near correct, that's about $2.5 million a year in pure profit from the CSPP. Now, if you're Mitt Romney, that's the kind of money you find between your couch cushions, but for most of us... cha ching.
With that in mind, I think my next destination will likely be the University of Illinois at Chicago. For the next few days, I actually have a window of opportunity to apply to the master's program there and begin in the winter. However, I think I'm going to pass that up just for the moment, and apply initially as a non-degree student in order to give myself the opportunity to apply to a wider selection of schools. Unfortunately, UIC only accepts a maximum of 9 transfer credit-hours when starting as a full-time student, and most courses are 4 credit hours, so courses I take past two (including the Java course I'm already taking) will be somewhat meaningless. However, I don't want to jump into a master's program without first trying other options. If it were Champaign-Urbana instead of Chicago, I would almost certainly go for it, since that's a top-5 school. But with UIC ranked at #58, it's a solid choice and one I wouldn't be ashamed to go to, but one where if I went without trying other options, I would probably regret it.
So, there are the updates. It got a lot longer than I was planning on, but I guess that always happens. Hopefully my next update won't come so late... but if it does, I expect I will have much and more to write about what transpired in the meantime.
_____________________________________
Musings on that price at the University of Chicago's Computer Science Professional Program: I would make a wild guess that their lecturers maybe get paid about about $10,000 per quarter, and it might be a lot lower - at 3 hours a week (5-6 if you include office hours, perhaps 10 if you include preparation), that's a pretty big chunk of change. Perhaps the TAs and graders make maybe $5,000, which again might be overestimating; that would be a nice gig if you could get it. Then with tuition at $4860 per quarter, 10 weeks per quarter and three hours of lectures per week, that means students are paying $486 a week or $162 dollars per hour of lecture, a rather eye-popping cost. On the other hand, there are around around 40 students in a class, meaning the University pulls in nearly $20,000 per week from each course, or $200,000 a quarter. If money spent on lecturers and TAs is around $20,000, that means around $180,000 of pure profit, per course, per quarter. Now there are typically around 4 or so highly subscribed courses per quarter, and maybe 2 in the summer. That means 3*4 + 2 = about 14 courses such courses per year. If my guestimates are anywhere near correct, that's about $2.5 million a year in pure profit from the CSPP. Now, if you're Mitt Romney, that's the kind of money you find between your couch cushions, but for most of us... cha ching.