

Ask HN: Computer Science Student with free electives -- what should I study? - adambourg

I'm going to a state university, and am studying CS. Next year I get basically 3 semesters of free electives in any area I want to study. I will be taking an entrepreneurship class. But what you study to be most effective in becoming the best developer you can become?<p>My interests are mostly web, but am really interested in writing desktop software for Unix/Mac systems.<p>Here's what I am thinking: study more theory behind computing and languages, learn how languages and computers work, then learn a few languages that I can then take and learn about other languages. Does that make it sense?<p>What is your best advice for a CS student?
======
amoore
Many of these are probably not electives, but here's the list of stuff that
I'm glad I took or wish I had taken while getting my CS degree:

* compilers. Seriously. It's hard, but it's the single class I look back on as having made me a better engineer

* at least one "weirdo" math class. Non-Euclidian geometry, or group and set theory stuff, or whatever else you see that is off the beaten path and possibly taught by a well-liked professor. You will learn to solve problems better using non-standard techniques, and it may be just plain fun.

* One of the two or three classes in the philosophy department that deal with logic, puzzles, paradoxes, and such. You may be surprised at first that about a third of the people in those classes are in your CS classes, too. Figuring out what is computable and what is true isn't all done in your discreet math classes.

* A basic science class unrelated to your engineering field. Astronomy is a good one. Learn about your world, and possibly meet your future spouse.

* The most popular class on campus. Every school has that cool class taught by the famous professor that everyone attends. There's a reason for that. It's probably in the psycology, english, or history departments. Your spouse may also be in this one.

* Introduction to Civil Engineering. Knowing a bit about static forces, failures, and materials helps you when you need to build or fix stuff. These guys also have been engineers a lot longer than there have been software engineers. They teach you how to fail properly, perform repeatable tasks to ensure quality, and other engineering practices.

* Law for business students. Your business school offers an intro class to the law. It's like the first year of law school smashed into a single semester class for business students. It covers contracts, torts, agencies, and other things that will keep you out of trouble.

Yeah, most of these classes aren't in the CS department. Don't miss your
opportunity to see the folks on the other side of the campus in that other
quad.

------
arfrank
Take a design class, or typography. A programmer who can do some design and
understands the theory behind it is inherently more of a self starter than one
that can't do design.

------
jon_hendry
Art history. That's where all the girls are. Speaking from experience, here.

