Live data from Hacker News

What did you cover in your undergrad CS degree?

catalystclass.com

11–20 of 57 posts

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

#11

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?

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 course.

Of course, since then, I refuse to not use it, even for my side projects where I'm the only contributor.

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

#12
post #7

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?

I left a lot of options blank that were in fact encouraged, and which professors would help us with if asked, but were not really part of the curriculum. For example, we were strongly encouraged to use version control for our group projects, especially in third and fourth year courses (like operating systems and theory of computation) and obviously estimating timelines is a necessity for any project (computer science…

> Code testing is a big one I wish we would have learned ....so I suspect a handful of college lectures wouldn't have helped much.

I took a "Software Testing Theory" class in the 2nd year of Software Engineering, then every course after that we were using jUnit (or whatever) for unit testing, and writing Software Test Plans and executing them on everything we did.

It was great.

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

#13

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 software development, and CS is the only offering that touches on it. Yes, we're all capable of learning various things on our own (including the theoretical aspects of CS, as instructors in these fields are typically so incredibly incompetent that students are required to teach themselves, anyway), but that's not a justification for providing an education that is largely irrelevant.

If I really wanted to study theory and computational mathematics... I would have studied computational mathematics.

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.

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

#14
post #12
post #7

Earlier quoted context omitted.

I left a lot of options blank that were in fact encouraged, and which professors would help us with if asked, but were not really part of the curriculum. For example, we were strongly encouraged to use version control for our group projects, especially in third and fourth year courses (like operating systems and theory of computation) and obviously estimating timelines is a necessity for any project (computer science…

> Code testing is a big one I wish we would have learned ....so I suspect a handful of college lectures wouldn't have helped much. I took a "Software Testing Theory" class in the 2nd year of Software Engineering, then every course after that we were using jUnit (or whatever) for unit testing, and writing Software Test Plans and executing them on everything we did. It was great.

Awesome -- which school?

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

#15
So I did EECS at Cal. And while some of these things are definitely in the category of software engineering and not computer science, I have to say that, in the few years between my undergrad and today, I've kept in touch with the community. And it's my sense that a lot of skills which one might find on this list are starting to be emphasized more: testing, version control, scale, timelines, communication -- so it does feel like undergrad curricula "get it" and are supplementing the standard courses with some generally useful stuff. Not replacing, but suggesting/providing/using some of the useful stuff in the context of the greater course.

I'm a little surprised schools didn't touch upon complexity already; that's been around for awhile. Yet, it is the biggest category in the responses, so that's probably why.

I'd also say that things like deployment, sysadmining -- browser incompatibilities? These are a lot more role-specific and better learned in situ. If the guy who knows browser incompatibilities needs to know how to do deployment, you are either (a) a pre-funding startup or (b) spreading your talent kinda thin.

I'm sure most of the responses here will say something like "I have never let my schooling interfere with my education" -- which is all well and good for you. But if we want more and better candidates, it couldn't hurt to adopt some of the best-of-the-best practices (version control!) into CS curricula.

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

#16
post #9

I graduated with a CS degree ten years ago and I could only check the following: Designing data structures Analyzing algorithmic complexity (Big O) Version control was glossed over in my class with little importance given to it.

Yes, the date when one was studying is a vital facet of the data being gathered here. It's a big oversight IMO to have missed out on asking a question to gain date information (eg graduation year).

I've only got, in this respect, an undergrad diploma in computing and covered 6 of these things in any depth; it would be around the same time as you were studying and we never covered version control at all.

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

#17
I feel like there should be a follow up survey asking recent grads what their degree enabled them to learn outside of their coursework.

My CS degree hardly taught me anything in comparison to everything I learned outside of my coursework, but I don't feel like my coursework was lacking. On the contrary, my education allowed me to learn new things on my own that would have been significantly harder otherwise.

eg a basic algorithm course lead me to get involved in TopCoder. An introductory course on software development (source control, testing, etc) gave me enough knowledge to find an internship where I learned about peer reviews and how to work effectively with a large codebase - something that is very hard to pick up in a semester of college.

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

#20
In my mind, a CS degree is all about rewiring the student's brain to better interact with computers and to instill attributes in the student that are useful when working with those computers. Very few of the points in the article cover things that vastly change your computational world view. Off the top of my head, the five things (in no particular order) that I'm getting out of my degree are:

- Understanding down to processor and assembly level. And the visceral (and unfulfillable) desire to eliminate "magic" from things.

- Extensive exposure to functional programming. And finding out for myself what it does better than imperative programming and what it does worse.

- A deep appreciation of the need to know the user and the need to consider people at every stage of specifying, building and shipping software.

- A rigorous grounding in discrete mathematics. Not because I'll use it every day, but because it completely altered the way I reason about the functioning of my programs.

- Learning to work in groups ranging from two to ten people. And learning how to put myself in their place even when that's really, really hard.

I will probably never use 80% of what I learnt after I graduate. But the mental restructuring caused by learning those things has already helped me many, many times in practical situations. I think that there's a false distinction between the "practical" and the "theoretical". Just because something is not immediately useful, doesn't mean it's intellectual masturbation or ivory tower naval gazing. I don't think that CS degrees should neglect the directly practical aspects of the field, but I would much rather learn things that I wouldn't otherwise pick up (such as machine learning or parallel algorithms) than something I will have to learn eventually anyway (such as version control or system administration).

Post reply on HN