

Ask HN: What does a major in CS entail? - dunstad

I'm a high school student thinking about majoring in Computer Science when I go to college, but I want to learn more about it first. What sort of courses do you have to take? Is majoring in CS at all useful, or should I choose something else and study it in my free time? Is the major's value highly dependent upon the teacher/college/student environment? Thanks for any information you're able to offer.
======
jhancock
You really should study the curriculum for a particular school. Last I looked,
CS programs vary widely. Find a school you like and can afford and see if the
program looks like it suits you. Also, there is whole lot more to college than
just your degree program.

If you post several potential schools here, you may get detailed feedback from
those that went through the programs.

~~~
dunstad
Good idea. I was thinking about Missouri S&T, SEMO, and UMSL, but any other
unusually good (or bad) programs people know about would be nice to hear of as
well.

~~~
arebop
I was at Truman for undergrad and WUSTL for MS.

I think Truman's undergrad curriculum is fine and the profs care about
teaching more than anything else. I'm glad I took courses in philosophy, art
history, literature, anthropology and so on; Truman is probably a better place
to do that compared to MS&T.

But, if you wind up wanting to be a CS researcher (PhD), then it would be good
to get involved with prestigious research as an undergrad. Also, undergraduate
students at WUSTL can enroll in graduate courses to increase the breadth and
depth of their CS education.

I wish I'd discovered before midway through junior year that I'd like to be a
CS researcher. Also, I believe most jobs for which a CS degree is nominally
required have very little to do with CS, and I wish I'd known earlier that the
differences among programming jobs were not superficial.

Program goodness is not an objective, scalar quantity.

The smallest part of the value I think is in the curriculum. Truman's was much
the same as WUSTL's and from what I've seen in the course catalogs they both
seem similar to CMU's and Stanford's. I will admit that the Webster University
curriculum seems rather different.

Another component of value is teaching skill. I have no idea how you'd assess
that ahead of time, unfortunately. Famous profs are not always skillful
teachers. I've had really excellent profs at both Truman and WUSTL. More at
WUSTL than at Truman, but then WUSTL's a bigger department. I've had terrible
profs at both Truman and WUSTL.

Your fellow students can make a big difference. Not only is it much easier to
be hired by someone you know, but while you're in school together you can
inspire each other to work on great projects. I think that doing the overnight
visit circuit coordinated by each admissions office was helpful for sampling
each school's culture.

I didn't know it until after I'd been at university for a few semesters, but
the best indicators of my love of CS were: (1) I enjoyed the number theory
topics in my 6th grade math class (2) proofs in geometry were fun (3) proofs
in calculus class reawakened my dormant interest in math classes and (4) I had
an addiction to programming that endured from grade school through high school
and to today.

Look up the degree requirements at a couple of schools, Google for the course
web sites, and browse the lecture notes and homeworks to map out the
foundations of CS. Take a look at Communications of the ACM and IEEE Computer
to find out if the frontier of the CS field interests you. Do the overnight
visits and hang out with some current students; talk to them about what they
like about CS and see if you feel the same way.

Good luck.

------
sweis
The curriculum will vary by university. I remember taking these classes for an
undergrad CS degree:

\- Structure and interpretation of computer programs

\- Data structures

\- Machine structures

\- Digital circuit design

\- Operating systems

\- Programming languages and compilers

\- Algorithms

\- Randomized algorithms

\- Parallel algorithms

\- Computability and complexity

\- Databases

\- Computer and network security

\- Discrete math

\- Linear algebra

\- Number theory

\- Numerical analysis

I'd pick a school that was good in several areas, then take the entry-level CS
courses. If you like them, stick with it. If not, switch to another major.

Someone already mentioned this, but a lot of course material is online. For
example, here are some from MIT: [http://ocw.mit.edu/OcwWeb/Electrical-
Engineering-and-Compute...](http://ocw.mit.edu/OcwWeb/Electrical-Engineering-
and-Computer-Science/index.htm)

------
known
In the current economic scenario, I'd recommend CS + MBA

------
joeycfan
you dig deep into small areas of math. Take electrical engineering instead.

~~~
Derferman
As a CS major at Berkeley, this is not the case. As the above poster said, the
curriculum varies widely depending on the college.

~~~
dunstad
Would you mind describing your course load or some of your assignments? Mainly
what I'm looking for is a frame of reference to steer me toward or away from
this as a major.

