Whether you want to build a game, website, mobile application or simply explore creative concepts, programming is an indispensable skill. It offers the means to create instantly usable and distributable products, so it’s very relevant to Northwestern’s mix of entrepreneurial, creative and technical students. With its nearly endless possibilities, programming allows your imagination to run wild.
Programming is also the fuel that powers many multitalented efforts on campus. The Creative Arts of Technology Studio 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 skill levels here at Northwestern.
But where to begin? To find out, choose your level of comfort and follow along.
Scheme is a wonderfully simple and powerful language. Just read How to Design Programs, a free book available at htdp.org that teaches program design and basic concepts applicable across many languages. Want to learn what you can build with Scheme? Browse 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 encounter.
You are comfortable with code. Now, your mission is to keep challenging that comfort zone.
ProjectEuler.net has a collection of nontrivial 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 can still benefit from learning a purely functional language.
Few books are as enlightening as Structure and Interpretation of Computer Programs. There are even fewer such books available online at no cost. You will learn more than a smattering of recipes. You’ll build a mental framework to encompass and contextualize future learning.
You’ve implemented a language or two, hacked the Plan 9 kernel for fun and are much more qualified than I am.
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 startups about how badly they need to rethink their technology decisions.
Also, is it true what they say about the power of the dark side?