Between now and the start of summer, it will be very helpful if you start learning some of the technologies that we’ll be using.

I recommend looking at the various lessons on codecademy.com to learn about a lot of this stuff.

Tools

Operating Systems

You’ll want to start using either Linux or Mac OS X. If you currently have a PC, I recommend setting up your computer to dual boot both windows and linux. Alternatively, if this sounds daunting, you can install a virtual machine such as VMWare Fusion ($80), Parallels ($80), or VirtualBox (free, but trickier to setup/use).

If you don’t have a favorite linux distro already, I’d go with Ubuntu.

Command Line

You will be doing a lot of stuff in the command line, so you should start getting more familiar with how to use it now.

Git

Git is a distributed revision control system that developers use to collaborate easily on the same software without emailing files to each other.

If you don’t have one already, create an account on GitHub, a site that provides centralized git repository hosting for most open source projects.

Then check out the following resources to get started on using git and github.

Programming Languages

HTML & CSS

You’ll be building software that runs in a web browser. Which means you need to have a good handle on both HTML and CSS. There are a ton of resources out there. Here are some good ones:

JavaScript

You’ll be programming in JavaScript, one of the most commonly used programming languages in the industry.

(Advanced) Concepts

Lexers, Parsers, and Interpreters

There is a non-zero chance that you will be working on tools related to programming languages. It will be very helpful if you have an idea of how programming languages are built. Here is a great little tutorial for building a new programming language from scratch in JavaScript:

Functional Programming

Functional programming has become more popular over the past few years, particularly among JavaScript developers. You will see a lot of code that uses techniques which come from the realm of functional programming.