Live data from Hacker News

What did you cover in your undergrad CS degree?

catalystclass.com

51–57 of 57 posts

Re: What did you cover in your undergrad CS degree?

#51
post #25

The key question that some have touched on is this: What should comprise a CS degree? (E.g., should these (and/or other areas) be a part of a CS degree?) I think the right balance needs to be struck between the academic and vocational views. Big-O, grammar, automata, etc. are the fodder of academic papers, not the Real World. But when you talk about higher ed, here's the rub: its supposed to be the theoretical founda…

"(Think the difference between having John Carmack on your team, versus some guy making $8/hr in a developing country)" A CS degree, or any formal education, has little to do with what kind of programmer you are going to be. You can take a completely vocational approach in school and move on to other work individually. Or the other way around. You will end up being the type of programmer you wish to be regardless of…

Point taken. (The problem with hyperbole is that there's always an exception: I know some very bright technical minds in "developing countries".)

But we're talking about "formal education": how do we develop strong technical thinkers?

Re: What did you cover in your undergrad CS degree?

#52
post #41
post #25

The key question that some have touched on is this: What should comprise a CS degree? (E.g., should these (and/or other areas) be a part of a CS degree?) I think the right balance needs to be struck between the academic and vocational views. Big-O, grammar, automata, etc. are the fodder of academic papers, not the Real World. But when you talk about higher ed, here's the rub: its supposed to be the theoretical founda…

I sincerely hope every practical developer knows the complexity and costs of their algorithms, can write a simple parser, and reason about finite state machines (ie, the non-trivial systems people build). I do get what you mean: CS is different than practical skills. Pure theory is interesting and less practical but all the things you mentioned have lots of uses in practice. You don't write a formal proof for every l…

I'd expect managers who hire young people out of universities expect the conceptual tools and the theory, with the weakness being practical experience. And I'd say this is true across all majors (even vocational schools).

And to my mind, that's the correct order: I'd rather teach someone the practical components rather than the theoretical ones while they're on the job. (Not to mention that practical components—even programming languages—are quickly out of date. Theory has a much longer shelf life.)

Re: What did you cover in your undergrad CS degree?

#53
post #25

The key question that some have touched on is this: What should comprise a CS degree? (E.g., should these (and/or other areas) be a part of a CS degree?) I think the right balance needs to be struck between the academic and vocational views. Big-O, grammar, automata, etc. are the fodder of academic papers, not the Real World. But when you talk about higher ed, here's the rub: its supposed to be the theoretical founda…

Oh, and here's the rub for me: I don't use my CS degree. Besides pet projects and a general understanding of technology, I am not technical. The vocational approach Catalyst is recommending would have made me a better software engineer, but more poorly prepared for other career opportunities.

I hire CS majors (and more broadly, engineers) into business positions because of the core skillset: problem solving and a desire to figure out a solution.

Re: What did you cover in your undergrad CS degree?

#54
post #50
post #36

Earlier quoted context omitted.

> Big-O, grammar, automata, etc. are the fodder of academic papers, not the Real World. I have personally needed all of those things in the Real World. I suspect that if more people remembered the stuff they learned in college, it would get a lot more use. "I'm never going to use this in the real world!" can be a terribly self-fulfilling prophecy.

I knew someone would come in and say that! (And I enjoyed my classes on automata.) You're right, though. Which goes back to my question around what should be part of a formal education? I bet HN could come up with 10 years worth of courses that are "essential", plus another 10 that are "nice to haves".

The easy heuristic here is approval voting: award one point to a subject each time someone mentions it as a "nice to have", and 2 or 3 points to each "essential", then tally up the votes to get a ranking. Truncate it at four years' worth of classes, and you have a curriculum!

Re: What did you cover in your undergrad CS degree?

#55
post #30
post #11

Earlier quoted context omitted.

I agree version control does not need it's own course, but certainly a course that forces you to use version control is a good idea. I'm currently trying to convince my organization to use version control, and because nobody has ever used it before, they just see it as a pain and more overhead that it's worth. To be perfectly honest, I felt exactly the same way before I was forced to use it for a 2nd year programming…

That's how it worked in my university. The C++/data-structures course sort of doubled as a "good coding habits" course. The formal course content was an introduction to OOP (via C++) and standard data structures, but we were also expected to format our code well, understand what a useful level of commenting is, understand testing, and use version control, and there were parts of lectures devoted to those. The course…

My Software Engineering degree had a course called Personal Software Process that covered all of that and more. It was fantastic as it really emphasized how code quality and controls are the responsibility of the individual engineer.

Re: What did you cover in your undergrad CS degree?

#56

Personally I find things like version control and system administration to be things that students should learn for themselves. They should be encouraged, even actively encouraged (in fact they are already in most institutions) but there shouldn't be a class dedicated to this stuff. You are in University, studying CS ffs. If you can't learn such petty things for yourself, what good are you?

This is exactly the sort of condescending attitude that pisses me off about the CS program I'm currently concluding. Why should software engineering be considered "petty" in relation to, say, the study of formal languages and automata? The vast majority of students in my program honestly don't give a flying fuck about the academic opinion that CS shouldn't behave like a vocational school - the intent is to go into so…

> Were it not for the perceived value of a CS degree, I suspect a substantial number of students wouldn't even bother, and probably flock to Coursera, etc.

Yes, well maybe they should get on with it then.

The beauty of CS is that the theory is directly applicable to the practice of software engineering. And because of this close connection between code and theory, you can develop significant coding skills just from doing the problem sets. As per the usual academic refrain, you get out of it what you put in.

If you think they should just be teaching you industry skills then you're wasting your time and money because college will never be as instructive as taking an internship in an actual company shipping code. Not only that, but you're paying for the privilege instead of being paid. Even if they rolled over and decided to go this route, academia does not have the knowledge or experience of what it takes to be successful in industry, must less impart that knowledge to you.

If you're going to go to college, take advantage of the academic strengths: the deep knowledge, the curiosity that goes beyond the immediate problem, the great minds you have at your daily disposal.

On the other hand, if your CS program sucks then it sucks and I'm sorry.

Re: What did you cover in your undergrad CS degree?

#57
post #46
post #27

-Philosophy of science, the scientific method -Object-oriented programming -Basic calculus -Basic discrete mathematics -Linear algebra -Algorithms, data structures and asymptotic analysis -Basic compiler design -Theory of computation, Turing machines and formal languages -Basic practical computing technology, from the gate level -Basic software engineering: SE methodology, version control and developing software in a…

I don't see what OOP has to do with Computer Science. Isn't that Software Engineering?

I agree, but this is where my department is being pragmatic. A computer scientist with no experience at all in OOP or basic software engineering will initially be pretty useless in the private sector, which is where 90% of graduates go.
Post reply on HN