

Ask HN: What electives go well with a Computer Science degree? - thereddog


======
deckar01
Assuming you are talking about Computer Science electives (non-core CS
courses):

\- Scripting Languages

I feel this is one of the most valuable courses from my education. Knowing
which tools are available and what they are good at is crucial to becoming an
effective developer.

\- Parallel Programming

This course had the most influence on the way I think about algorithms.
Understanding the difference between parallel processing and multiprocessing
is important when you start developing high performance applications. This
course really challenged my concept of optimization. Heterogeneous parallel
programming can be a little obtuse and there can be a large learning curve for
each architecture. You will be amazed how effectively you can transform naive
algorithms into powerful programs for multi-CPU architectures.

------
vlad
I took several dance courses, intro to theater/improv once, and early morning
bootcamp with ROTC/military students almost every semester.

I also took a graduate seminar course to read dozens of papers about
crowdsourcing, which related to a project I was working on for a professor
with several new grad students.

At the end of my junior year, I was a triple major (dual degree) with Computer
Science, Mathematics, and was approved for a third build-your-own-major.

I was already taking 8 courses that semester, so I ended up with two degrees
(B.S. CS and B.S. Math) because I did not pursue the custom third major I was
approved for.

------
fsk
1\. Math - You probably should know real analysis, abstract algebra, linear
algebra, and some logic.

2\. Whatever else interests you

------
mod
Communication related courses

------
a3n
Writing.

------
dangrossman
Entrepreneurship and business law.

------
csa
A good answer depends a lot on your personal and professional goals. Some
possibilities:

\- Do a startup.

\- Work in industry.

\- Become an academic in CS.

\- Become a more well-rounded person.

While there can be some classes that meet more than one of these goals, I
strongly suggest that you figure out your goal and work from there.

Some possible classes:

\- Business courses. Economics, finance, and business/contract law are often
good ones. Some marketing courses can be good as well -- it really depends on
the school. I personally enjoyed a class about risk management (e.g.,
insurance).

\- Anything that develops soft skills like writing or speaking. When picking a
subject, I suggest trying to avoid some of the "warm and fuzzy" classes -- you
will rarely get quality feedback, and "success" is defined as how well you toe
the party line. Someone else suggested creative writing, and I suggest that
this can be a hit or miss depending on your classmates and your instructor.
Look for classes that will provide you with fundamental structure and
constructive feedback (e.g., what you did well, what they have questions
about, what needs work).

\- Related to the above, make sure you know how to use Excel and PowerPoint
well. Excel can be a really powerful tool for non-programmers, and it can
serve as a functional gateway of trust between a programmer and non-technical
people. For PowerPoint, try to learn how to make clean presentations (not a
lot of text, don't read what is on the slide, not a lot of gimmicks) and how
to present them well.

\- Fine arts. These classes absolutely blew my mind, and they really changed
the way I perceived the world. Make sure you choose a good professor -- the
good ones are really good, but the bad ones can be really bad. Don't be
intimidated if you find people who have been doing the art you take for years.

\- Art history might serve as a light version of "fine arts", but make sure
you take it seriously. It is often an easy class taken by lazy students, so
the standard to get an A might not be very high. That said, there is a great
deal amazing content above and beyond the basics of memorizing certain eras
and certain artworks.

\- Consider joining an improv group, even if you think you will be bad at it.
The skills you learn are invaluable: team work, public speaking, coping with
failure, appreciating success, etc.

\- History, especially economic history. History really does repeat itself,
and this is especially true in economics. Classes like this make it easier to
reflect on what is going on today.

\- I personally enjoy anything related to cognitive development.

\- Lastly, I suggest reading Undergraduation from 'pg
([http://www.paulgraham.com/college.html](http://www.paulgraham.com/college.html)).
An excerpt:

"The social sciences are also fairly bogus, because they're so much influenced
by intellectual fashions. If a physicist met a colleague from 100 years ago,
he could teach him some new things; if a psychologist met a colleague from 100
years ago, they'd just get into an ideological argument. Yes, of course,
you'll learn something by taking a psychology class. The point is, you'll
learn more by taking a class in another department.

"The worthwhile departments, in my opinion, are math, the hard sciences,
engineering, history (especially economic and social history, and the history
of science), architecture, and the classics. A survey course in art history
may be worthwhile. Modern literature is important, but the way to learn about
it is just to read. I don't know enough about music to say.

"You can skip the social sciences, philosophy, and the various departments
created recently in response to political pressures. Many of these fields talk
about important problems, certainly. But the way they talk about them is
useless. For example, philosophy talks, among other things, about our
obligations to one another; but you can learn more about this from a wise
grandmother or E. B. White than from an academic philosopher."

Best of luck!

