As I sit here working on a project in lieu of going to class for the umpteenth time, I realized with sudden clarity that perhaps the current way that Computer Science is taught in universities is not the optimal way. Large lecture halls, clunky languages– it’s a bad sign when even a die-hard “learning for learning’s sake” student skips class on a regular basis.

anyway, a few thoughts on how I would change the structure of Computer Science courses to maximize efficiency + interest and minimize pain:


Seriously. I have never, ever been required to interview in a specific language at any company (even the “big names”), and if the people you’re talking to are deadset on Java, you probably don’t want to work there anyway. C is a much, much better “lower” level language for really grasping the way programming works, and Python is a much, much more fun language if you want to lower the barriers to entry and get students making things right away.


For classes like data structures, advanced programming, OOP, etc., etc. students tend to learn a great deal more and invest much more time and interest in coding projects. These should be the heart of the course, and is what matters in “the real world”, anyway. No one’s going to give you a bonus for remembering the difference between inheritance and polymorphism: let’s face it, you’d take the 5 seconds to Google the
definitions and move on. Big projects, tight deadlines, collaboration: this is where the real learning is.


In my opinion, you should not administer written exams in technical classes (see above). However, if you must, for heaven’s sake, please, please do not ask us things like the difference between strcmp and strncmp. Sometimes coding by hand with pencil and paper is good practice for interviews, but the code should be judged for logic and not syntax. Exams should be theory-based. Technical evaluations should be project-based. EOM.


Size matters. This one is a given. Of course small seminars are best, but it’s understandable that budget might not allow for it. Lectures for intro courses only, and please, please try to cap them: there is a huge difference in ambiance and quality of learning between a lecture of 50 and of 250. I’m talking to you, Columbia. When I’m in a room with 300 other students learning about the difference between * argv[] and ** argv I immediately want to fall asleep or eat.


then again, it’s entirely my fault for taking up class time to write in English instead of C++.

P.S.: Shout out to everyone in AP lecture who’s on Facebook right now. Hello! Now I feel less guilty for skipping class. At least I’m “working” in the library.

P.P.S.: For the record, I do believe that Jae is a great professor and administers valid albeit perhaps too difficult exams. Personally, I enjoy tough exams (sink or swim time/everyone failed so I feel less bad for not studying). The main clincher here is a) the size of lecture (TOO BIG) and b) little grade weight on projects. Neither of these can really be blamed entirely on the professor, cough *administration* cough cough

P.P.P.S.: Yes, perhaps strcmp and strncmp + polymorphism are not the best examples, as esp. the polymorphism question is more theoretically important. But you get the gist of the idea.

P.P.P.P.S. It is probably true that if I took 10 minutes to edit my posts I would not have to use postscripts, but what’s the fun in that?

Tags: ,

· · · ◊ ◊ ◊ · · ·

talking to dad

25 Nov 2012

This Thanksgiving dinner, something miraculous happened: I finally felt smart enough to talk to my dad about science.

Now, granted, lest you think I have uncommunicative parents, my dad has been trying to talk to me about science since birth (at 5: do you want to build a computer board with me? now wouldn’t that be fun? me: no! i want to play with Barbies). However, it took me a full 20 years of life and 2 and counting years of Ivy league schooling to finally, finally know what he was talking about.

I feel like this monumental event speaks volumes about a number of important things.

First: that barriers to entry and barriers to culture in science, especially computer science, are, as previously suspected, very very high. I talked a little bit about the use of jargon and how it can discourage many new learners before, especially newcomers and women. Keep in mind that my dad is probably the nicest guy I know, and extremely enthusiastic in trying to get his children to be interested in his work, yet previous to this fall, even when I had been coding for more than a year, it was still intimidating and tough to talk to him about my work.

Second: on the power of being a role model and a huge influence on one’s life without ever telling someone what to do. Growing up, I spent a great deal more time with my mother (who didn’t work) than my father (who is a night owl and worked way past my elementary school bedtime). Neither of my parents told me what I should study or what sort of career to pursue, and my dad especially never tried to push any sort of academic dogma on me. I always felt that he was incredibly smart but that coding and computer science were something I had neither the aptitude or interest in: plus, since my parent did it, it must be, in some way, decidely uncool.

Fast-foward 20 years and he has two daughters in the hard sciences: one is a ph.d student at Princeton and another in Columbia engineering school. It’s especially fun to see how much my area of interest turned out so similiar to my father’s work: both of us are either studying or working in the field of Natural Language Processing, and in fact, I am taking a class under the direction of one of his former colleagues during the glory days of Bell Labs. Note that, being stubborn and independent, I never, ever talked to my dad much about what I was studying at school or doing at my summer jobs. He didn’t suggest NLP or AI to me; I just sort of fell into it, and loved it. An anecdote to the power of being a good role model. (Cathy talks a bit about a similiar topic on her great post, on the making of a girl nerd.)

Or, perhaps the apple really does never fall far from the tree.

Tags: , ,

· · · ◊ ◊ ◊ · · ·

This is a little late in coming, but I really, really like this article published in the nytimes. Without going into too much detail, since I highly encourage you to read it yourself, the piece, titled “Follow a Career Passion? Let it Follow You” debunks the idea that in order to be successful, you have to start chasing after that one and only dream job, something the author, CS professor at Georgetown Cal Newport calls “the Cult of Passion”.

I see a lot of the detrimental effects of this “Cult” at Columbia. I, too, fell victim to its pressures when I was first starting out in Engineering school. I have always been a passionate learner and somewhat an academic “purist”: learning for learning’s sake, never for grades or awards. When I arrived at Columbia, for the first time in my life, I hated all of my classes. It destroyed my morale. The one course that I truly enjoyed– a writing seminar– ironically, caused me even more anxiety, since it had naught to do whatsoever with Engineering.

There is nothing wrong with encouraging young adults to pursue their dreams or find careers that inspire them. This is all very good and ideal. The old adage holds true: if you are doing something that you love, you are successful already.

However, this philosophy can be problematic because it puts unwarranted stress on career decisions, and moreover, really hurts those who have not yet “discovered” their “calling”, which I think is a BS idea anyway. Combine that with the financial and societal pressure that comes with attending an elite school, and you have a lot of Ivy-League tears. It is nearly impossible to know at age 18 or 20 what you want to do for the rest of your life and that’s okay: you can’t know and if you do, you’re probably wrong.

The issue is intensified when very smart, very passionate indivduals have not yet figured out what makes them happy or what exact field they are enthusiastic about. In these situations, and under high pressure, the urge to slap on the passions of others– perhaps a parent or a professor– or subsitute alternate motives (money, power) becomes all too tempting. For those with a high drive to succeed and perfectionist tendencies, the option to quit or reevaluate, even when unhappiness ensues, may never occur. I am, and remain, highly doubtful that a career, or moreover life, driven by any of these motives could ever be truly fulfilling or even healthy.

Newport, now a professor, argues that his love for teaching has “nothing to do with figuring out at an early age that I was meant to be a professor”, or even that there was anything special about his particular career path. The qualities that cause satisfaction in a career can be found in many areas– and most of all, they have to be earned. What matters is not the choice you make– but what you do once you have made the choice.

I could not agree more. I do not often use the word “love”, but I say it without qualms that I truly love Computer Science. It is a fascinating field of study and I am an eager evangelist. In it I see reflections of myself: the connections to Plato and Aristotle through logic and philosophy, the magic of words and drafting something beautiful that I crave in writing. Sure, there is a lot of debugging and frustration in between, but it satisfies, and most of all, challenges me to be a better thinker. None of these traits are apparent to the non-Computer Scientist or even many Computer Scientists. That’s because I took something that piqued my interests, and molded it into a passion.

I don’t know if I want to be a developer 5 years, or even 2 years (after graduation), from now. That’s because there is never only one right way or one right answer– not even in science. I don’t even know if my enthusiasm or GPA will survive this brutal semester of for and while loops. But I do know for sure that when it comes time to reeavaluate, I will try my best not to worry– because I know that where hard work and dedication go, love will follow.

Tags: , , ,

· · · ◊ ◊ ◊ · · ·

Speaking in Tongues

21 Sep 2012

The following piece is a re-post from the Columbia Daily Spectator, where I am an opinion blogger. The original may be found here.

“I thought about using a static framework like Octopress or Jekyll-Bootstrap so that I could write in vim and commit and push from the terminal, but then I realized it would be a pain to blog from the remote so I cloned this repo on GitHub to hack WordPress to run on Heroku for free using PostgreSQL“, I responded casually to my roommate this summer, a fellow hacker/scientist, when she asked me what platform I would be using to start my writing blog.

My sister, a “normal” human being used to answers like “Blogger” or “WordPress”, overhearing our exchange on Skype, laughed and said to me, “You guys are literally speaking another language. It’s like hearing robots talk or something.”

While I don’t think I’m quite on the level of R2D2 (at least not yet), I am aware of how much like gibberish it can sound when you catch me in animated discussion with another CS-er about some software or algorithm. One minute English, the next minute we hit some topic, and boom, off we go rattling off in Nerdspeak.

And although Computer Science is definitely one of the more jargon-y fields, thanks to its highly technical nature and the extreme “in-group” culture, this phenomenon is not limited to the subject.

Catch any of my friends at Columbia, be they budding lawyers, doctors, musicians, physicists, philosophers, or artists talking to a peer in the field, and soon it feels like there’s either cotton in my ears or a metal plate around my brain.

Don’t get me wrong, I absolutely adore talking nerdy. But sometimes I worry that too much jargon gets in the way of our ability to learn more and connect with interesting characters. This is especially crucial in our college years—one of the only times in which we will have the opportunity to be surrounded by so many talented, passionate people in other industries. What good is this talent if we cannot comprehend it—or worse yet, fear to ask?

Even within the same field, similar problems arise. Excessive terminology can create an aura of “exclusivity” and turn away those who might not fit the culture bill but possess ample aptitude otherwise. I know firsthand that in Computer Science, women are often deterred from becoming developers due to this sort of “insider’s club” (usually summed up as “pale and male”). In a field that values so much open-source and transparency, and that has traditionally welcomed those with interest and skill without regard to superficial traits, it seems almost sacrilegious to build such barriers.

As undergraduates, and as scholars for life, we are not quite such specialists that our learnings are incomprehensible to our peers, nor should they ever have to be. I have found that the best way for me to learn is by teaching and reiterating what I know, especially to children and to friends in drastically different studies. There’s something exhilarating and addictive about discussing a topic we love in the words we share with other aficionados, and special terms are often of course necessary for special topics.

But something special need not be secret, nor our attitudes towards “special” knowledge childish—or worse yet, elitist.

Sophie Chou is a Junior in SEAS studying Computer Science and Philosophy. When she’s not coding she likes to read Nietzsche, and contrary to popular belief, she doesn’t hate hugs, although it would be in your best interest to refrain from doing so.

Tags: , , ,

· · · ◊ ◊ ◊ · · ·