10000 things all CS students should do before graduating

June 2nd, 2014
  • 0000 – Buy your own domain name.
  • 0001 – Install an Apache web server and configure it in a non-trivial way, e.g. serve multiple domains.
  • 0010 – Install WordPress and have your own blog. Write blog posts regularly. Write well. Good writing is a critical skill to master in this profession.
  • 0011 – Run your own web site at home or in a hosting company.
  • 0100 – Write at least one complete LAMP web app, preferably two—one where P = PHP and another where P = Python.1
  • 0101 – Have your own (physical or virtual) server on the cloud.
  • 0110 – Install VMWare (or an equivalent) in order to boot up your laptop with more than one OS.
  • 0111 – Configure your home DSL router in order to serve a website or another kind of server from your home machine/laptop to your friends.
  • 1000 – Use a packet sniffer to learn about the network requests your computer does to your favorite game server.
  • 1001 – Make contributions to an open source project.
  • 1010 – Write an app that uses at least one of the popular web APIs like Facebook Connect or one of Google’s.2
  • 1011 – Use Google AdSense on your website and make money just by virtue of attracting traffic.
  • 1100 – Compile a complicated open source project from scratch, like OpenSim or Matterhorn.
  • 1101 – Read works of literature and, besides enjoying the ride, pay close attention to how the author tells the story and makes use of words. Your programs should be as carefully written as those works of art. ((Code is poetry.)
  • 1110 – Get yourself involved in a software project where requirements are bound to change halfway through—that’s about 0.01% of homework projects and about 99.99% of real world projects, so find one of the latter kind. Finish the project with patience and the ability to take criticism in a constructive way.
  • 1111 – Write an application using MapReduce. Run it on Google App Engine or Amazon EC2.

(via Diomidis SpinellisCristina Videira Lopes)

On the top of my head I’ll add: study lots of Logic; have Bertrand Russell as your mathematical hero; read GEB; build a mobile app; favorite Github repos the same way you Instapaper an article—be interested but, alas, never come back; start writing in LaTeX (and sometimes in Markdown); reduce your dock size to two icons (if you’re using OS X, that is); “real men reduce from 3SAT don’t use IDEs;” find serene peace when writing code only to come back after a few days and spend 20 minutes figuring out what you’ve written before; appreciate the Internet; write recursive functions which terminate themselves without if’s, switches, ?: operators, or loops.


  1. And one where P = NP, right? 

  2. I hear Twitter is trendy these days.