Fixing Computer Science College Education
Over the weekend, I had the opportunity to interview potential interns for the summer through the NYU Turing Fellows program. The program brought in 30 of the brightest and most-accomplished college students to pair up with some of the best NY tech companies out there including Foursquare, Squarespace, Tumblr and—of course—blip.tv. The program is part of a larger seemingly self-organized campaign of the NY tech scene to remind the world that it’s the best. Having spent every summer of my college career interning at startups myself, I know firsthand that the experience is invaluable. While interviewing the kids this weekend, though, I couldn’t help but feel like they are being conned out of tuition money by the higher education system. Here are some of the smartest students in the world, but I couldn’t help but feel their schools were withholding some sort of Truth from them.
There is a bizarre fascination in academia with things that don’t matter. Stroller-pushers in Park Slope and Portland joke about how they never use their master’s degree. I always regret asking someone what their thesis project is/was. The answers are usually as unintelligible as they are inconsequential. Academic projects are often procrastinated until the last minute and hastily assembled. This is not news, but when a system continually graduates such intellectual cruft it devolves into a joke of itself. What we end up with are Java schools and CS graduates that can’t program. We produce a disproportionate number of graduates that are more interested in process than product.
But the theories learned in college are invaluable. A college-educated programmer is better (in the long term) than one without a degree, although those without college degrees are more likely to ship code. It’s one thing to ship code, but at a certain point you need to go back through and know why it’s important to clean out those nested for loops. However, a college education might be one of the things decreasing in value the most quickly in American society, especially in degrees outside of computer science. College has colloquially become one big party. The pendulum has swung too far in the direction of socializing and discussing work rather than actually producing results.
So here are my initial thoughts in making the college CS experience more worthwhile:
- Require students to produce public-facing results every week. One of the most profound pieces of advice I’ve ever heard was “Publish early and publish often” from Jamie Wilkinson. If you haven’t seen it already, watch his talk at the Vimeo Festival “INTERNET FAME EASY AS 123.” Rather than put all of the proverbial academic eggs in one final project basket, students should produce small projects weekly.
- Require students to write 1,000 words every week on what they’ve done. The key here should be to encourage regular publishing, not necessarily quality work. The tone should be reflective and explanatory. These blog posts should be shown to the entire world. Students should be encouraged to promote themselves and their work outside of class. Even the worst writers get better with practice (case study: me). Being expressive in English is more important that choosing an expressive programming language.
- Require students to present what they’ve created each week. Presentations should be quick. Two minutes in length. Don’t grade these. The presentations are designed to encourage concise articulation, especially of complex ideas. Think of them as slightly elongated elevator pitches minus the business student smarminess.
- Still keep the existing material. The existing material is great, unlike other areas of higher education. The projects are designed to give more context to the theories.
Throughout my college education, I maintained HackCollege. The blog has led to more opportunities than anything else I have ever done. Unknowingly, I was following these suggestions extracurricularly. Maintaining a blog did more for my writing than any class ever did, and I was writing about topics that I was passionate about.
While teaching a class at LMU with Lesinski, we had deliverables every week for our students. It was a one-credit film class and we had decidedly created a workload outside of that scope. No one dropped the class. I have a hunch that increasing the quantity of useful ancillary work will produce better graduates, better coursework and a more valuable system.
Other disciplines can also learn from this approach. In ethics classes, require students to only address topics in the headlines in the past week. Encourage them to dive deep. In one of my last college classes, we presented on the ethics of Google’s waffling policies on the Chinese Firewall. We nerded out. The resulting presentation was great.
In history classes, require students to adopt several Wikipedia pages. In business classes, require students to help out local businesses and stop worrying about the preciousness of ideas. In film classes, require students to create a video every week instead of one crappy film.
Everything created should be written about and presented regularly. One of the better examples of this approach done right is my alma mater, Loyola Marymount University. If you are thinking about majoring in CS, don’t look anywhere else. Their CS program is just a core of professors that truly care and understand the need for a new way of teaching material. They recently switched the entire program from Java to JavaScript as the primary language. This has allowed more people than ever to not be shied away from CS on day 1; no other language in the world allows you to produce palpable results without installing any software. You also don’t hit a wall around year 2 of needing to throw out the language to introduce powerful concepts. CS programs tired of producing lackluster graduates should model themselves after LMU’s program. The rest of the school could learn a thing or two from its quiet CS program.
The greatest problem affecting the academics of education is lack of context. By requiring students to publish their work and iterate quickly, better programmers/librarians/filmmakers will be created. “Final project” should be replaced with “last project.” Assignments should be replaced with nifty playthings. Grades should still exist, but be supplemented with pride and ego. And then, just then, will it be worth it to sink a boatload of money into an education.
TL;DR Version
College students should be producing public-facing work every week.