Programming Primer

Programming Primer

originally published in North by Northwestern

Whether you want to build a game, a website, a mobile application, or simply want to explore creative concepts, programming is an indispensable skill. It offers the means to create instantly useable and distributable products, so it’s very relevant to Northwestern’s mix of entrepreneurial, creative, and technical students. Moreover, it is only slightly removed from pure thought, allowing you to effectively express your imagination.

Programming is also the fuel that powers many multi-talented efforts on campus. The CATS student group melds art and programming, while the NUvention:Web course offers a rigorous understanding of tech startups. There are plenty of creative opportunities for programmers of all stripes here at Northwestern.

But where to begin? To find out, choose your level of comfort and follow along.

The Initiate #

Your first mission is to build intuition. Choose a comfortable language to learn the basics of programming. Don’t get lost in the wilderness of Java and C++!

Scheme is a wonderfully simple and powerful language. Just read How to Design Programs, a free book available at htdp.org that teaches good program design and basic concepts applicable across many languages. Want to learn what you can build with Scheme? Browse to Racket-Lang.org and find out!

Another great choice is Ruby, a flexible language that you can try right in your browser! Check out TryRuby.org and the quirky and free Why’s (poignant) Guide to Ruby. Ruby is a great language to build web applications and has an enthusiastic community.

Are you better motivated by a course format? Search for open courseware in computer science, or watch Khan Academy’s series on programming.

Also, StackOverflow.com is a great programming Q&A site with hundreds of posts by fellow programmers. Use it for solving any peculiar problems you might run into.

Code Warrior #

You are comfortable with code. Now, your mission is to keep challenging that comfort zone.

ProjectEuler.net has a collection of non-trivial problems to build your coding skill. You can use any language and then check how others did the same problem in the forums. It’s a great way to make constant, weekly progress or even to learn the quirks of a new language.

If you hail from the world of imperative languages such as Java or C++, try learning a functional language like Racket, Haskell, or Clojure. Even traditionally imperative languages now include some support for the functional style, so you will benefit from learning a purely functional language.

There are few books as enlightening as Structure and Interpretation of Computer Programs. There are even fewer such books that are available for free online. You will learn more than a smattering of recipes. You’ll build a mental framework to encompass and contextualize future learning.

Jedi Master #

You’ve implemented a language or two, hack the Plan 9 kernel for fun, and are much more qualified than me.

Would you like to teach a mini-course or two? You could popularize a niche programming concept, pitch your own open source project, or simply share some of the magical secrets you’ve unearthed during your travels. The CATS student group would be a great place to start.

There are also many entrepreneurship opportunities at Northwestern. You could discover co-founders for a new startup idea, or consult young upstarts about how badly they need to re-think their technology decisions.

Also, is it true what they say about the power of the dark side?

Remember, programming is magic. Happy hacking!