Advice from Majors in the Class of 2011

The Class of 2011 was asked to pass along some of the insights they gained during their years as a major. Here are their responses (lightly edited):

Take electives that could lead to a senior project.

Be helpful and friendly in the zoo, but not obnoxious or inconsiderate.

Take advantage of your advisor, and pursue interesting thoughts/ideas however you can!

Lastly (and most importantly) use your tech skills to do something cool on the side.

The sooner you finish with distributional and major requirements, the better.

If you want to work after college, you should try to get a good internship after junior year, it will increase your chances of being hired significantly.

If you want to go to grad school, you should do summer research, and try to publish a paper.

Do some extracurricular activities you enjoy. It can be bad for your grades, but, trust me, you will be much happier, you’ll remember Yale as a pleasant experience, and you will never feel burned out. For me, joining Ballroom Dancing and Yale Aviation was the best decision at Yale.

The CS program is very good, however you need to pursue things and practice outside of the classroom to become good at programming.

For EE: even if you don’t choose EECS, do take some CS programming classes (like, 112, 201, maybe even 223). They are super useful, and all jobs will ask you if you have programming experience.

For CS: I know it’s hard, but to get good grades you need to start working on your programming assignments early and go to office hours.

For CS: work at the zoo: you’ll be very productive, you can ask questions, you can order food, you can play rock band and you can pull an all-nighter without feeling tired at all.

For EECS: you are better off having exposure in both fields, but worse off because EE or CS majors have taken more classes. So, try to find something you like and specialize a bit.

Forget about grades – your grades don’t matter in CS.

Ask questions in class, even if they are dumb questions.

It’s easy to get bogged down in the minutiae of 223 and 323, but think of every assignment as an exercise, as practice to become a better programmer and computer scientist.

Read Hacker News and stuff to get motivation and see all the cool stuff people are working on.

Cultivate an attitude of learning and supreme curiosity, not a quest for an ‘A’.

I think my biggest piece of advice would be to make it a habit to work at the Zoo instead of from your room. I made the mistake of tackling too many CS 201 and 223 assignments from my room before realizing the error of my ways, and they took me twice as long (and were way less fun to do) than if I had worked on them in the Zoo. There’s just something about the collective energy on the 3rd floor of AKW that makes people much more productive than they would be anywhere else. Plus there’s free printing!

Try to do your 490 project as early as you can. When senior spring rolls around, you’ll be glad you finished your project already.

If you’re looking for summer internships, start looking right when the school year starts. It’s a potentially long process and tech companies start looking much earlier, so don’t wait until the usual Spring recruiting season. I’ve seen too many highly qualified people turned down because the companies just filled all of their intern spots.

Definitely try to take as wide a variety of electives as possible, especially if you are an EECS or CS+Psych major, since you already have less room to explore.

If you plan to go to graduate school later, strive for diversity now rather than coherency–you never know where you might find your true passion in CS.

Also, since many interesting CS courses require sequences of prerequisites, try to start taking courses in the major as early as possible.

All the advice I would give comes from here: I don’t know if you can put that in the handbook, since it’s straight from the website, but maybe it would make a good 223/323 handout :) Here are some of my favorite points from Norvig’s list:

Get interested in programming, and do some because it is fun. Make sure that it keeps being enough fun so that you will be willing to put in ten years.

Talk to other programmers; read other programs. This is more important than any book or training course.

Program. The best kind of learning is learning by doing. To put it more technically, “the maximal level of performance for individuals in a given domain is not attained automatically as a function of extended experience, but the level of performance can be increased even by highly experienced individuals as a result of deliberate efforts to improve.” (p. 366) and “the most effective learning requires a well-defined task with an appropriate difficulty level for the particular individual, informative feedback, and opportunities for repetition and corrections of errors.” (p. 20-21) The book Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life is an interesting reference for this viewpoint.

Work on projects with other programmers. Be the best programmer on some projects; be the worst on some others. When you’re the best, you get to test your abilities to lead a project, and to inspire others with your vision. When you’re the worst, you learn what the masters do, and you learn what they don’t like to do (because they make you do it for them).

Work on projects after other programmers. Be involved in understanding a program written by someone else. See what it takes to understand and fix it when the original programmers are not around. Think about how to design your programs to make it easier for those who will maintain it after you.

Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal).

Remember that there is a “computer” in “computer science”. Know how long it takes your computer to execute an instruction, fetch a word from memory (with and without a cache miss), read consecutive words from disk, and seek to a new location on disk.

Plan to finish your work on time

Take classes with friends if possible

Spend as ___ time in the Zoo as possible

Go to the Zoo. There are always people around to ask questions, give advice, and commiserate about late nights.

Start assignments early. (Yeah, you’ve heard this one before.)

Try to get involved in research. See if you like it!