Computer Science (B.A. or B.S.)
You have to take the following courses if you're a CS major, but I'd recommend the following courses for non-majors interested in programming or CS:
- CS 112 - Intro to Programming - taught in Java, a great intro for someone who has never programmed before.
- Take it with Dan Abadi if you can--mostly because he's an energetic lecturer, and but also because he buys a Claire's cake on the last day of class.
- CS 201 - Intro to Computer Science - an overview and introduction to many different concepts in computer science; taught in a more abstract language called Scheme
- CS 223 - Data Structures & Programming Techniques - This is the first pretty intense CS class but will teach you many of the fundamental data structures and algorithms that abound in CS and programming in general. In this class, you learn enough to get a job as a software engineer at Microsoft/Amazon/Bloomberg/equivalent, or even Google/Facebook/equivalent if you practice enough.
- CS 323 - Systems Programming & Computer Architecture - This is known as the class that separates the women from the girls. This is partially true as the assignments are long and challenging, and require you to really get proficient at C programming. However, if you don't REALLY care about how computers work at a very basic level, you will have a bad time in this class. It will be extremely tedious and unrewarding.
- CS 365 - Design and Analysis of Algorithms - You don't need to have taken any CS classes or know programming to take this class. This is a proof-based class in which you will analyze algorithms and prove things about their performance and complexity. It's also taught really well - by Daniel Spielman, who also did his undergrad at Yale.
Professors to Avoid
Start your programming assignments early. Keep stabbing at them over many sessions. Understanding is often gained slowly over these many attempts.