Live data from Hacker News

What did you cover in your undergrad CS degree?

catalystclass.com

21–30 of 57 posts

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

#21

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…

Well, it sounds like you signed up for fine arts when you actually wanted to be a carpenter.

And you're forgetting companies like Google, Amazon, etc. who expect candidates to know CS theory pretty thoroughly. What kind of school would be proud of grads who couldn't get into one of these top companies? Software engineering is also easier to pick up on the job than in school, and vice versa for the theory.

It's condescending to describe CS theory as "largely irrelevant", but this also sounds like a case of sour grapes. There are plenty of tech curriculums that are light on CS theory--try looking for "Informatics", "IT", "Information systems" and so on.

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

#22

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…

> 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 vast majority of students in your program are unqualified to have an opinion. There's no point in having a university teach you version control systems if you're just going to end up learning it anyway. It's basically impossible to make students good software engineers (which has nothing to do with version control systems or other trivial things like that) in an academic setting. That's only something which comes with experience.

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

#23

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…

I do think it was a mistake for the parent to refer to it as "petty". Maybe some of it is petty, but a lot of it are valuable skills that you learn on the job.

But that is the key phrase, "on the job". I know I personally didn't go to school to fit all these check boxes. It seems like a poor choice to me that you and your classmates would (1) enter into a CS program without much interest in CS, then (2) blame the field of study for not being interesting to you. I for one am glad I got a CS degree (for the CS degree's sake) and thankful for what I was exposed to in those years. These other check boxes? Sure they are valuable. That's what my first job was for.

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

#24
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…

I had a second year CS course where each student was required to submit test input/output as well as their code, and a portion of the marks was derived from the coverage of these (as measured by gcov).

But the reasons for testing weren't really emphasised or even discussed.

(And a first-year course where we were required to use jUnit in the assignments, although again it was incidental and not at all a focus.)

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

#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 foundation, not a purely vocational preparation.

The danger of the more vocational point of view is that you're supporting what I see as the slide from "skilled software engineering" to "coding". (Think the difference between having John Carmack on your team, versus some guy making $8/hr in a developing country.) This is hyperbole, but if you focus on the day-to-day elements of any job, then you're advocating for movement to a technical school curriculum (which, right or not, has a different level of career momentum, responsibility, etc.).

CS (using the term to apply to the genre, inclusive) is maybe unique in that there are very vocational components, but also very intellectual/academic components. I think, like any career, there are going to be Things You Don't Know coming out of school. Interviewing, for example. Is that in ANY university-level curriculum, for ANY major? Are you expected to be 100% "operational" in a particular job immediately after your degree is awarded? Moreover, since when are all CS jobs the same? Why should it be any different for CS?

This is what bothers me about this argument: CS is not equal to programming, and not equal to a (particular) job.

And moreover (and I think most here would agree), the greatest hallmark of a great "technical thinker" (programmer, academic, problem-solver, tester, DB admin, whatever) is their willingness, nay INTEREST, in pursuing the details of their craft beyond the structure of a class or a job or (god forbid) an employee handbook.

I don't want to work with someone who goes through the motions. I don't want to work with someone who comes out of college thinking they're prepared for their capital-C Career. I want a lifelong learner, and someone who wants to get into the guts of operations and make an impact.

Educate and train for THAT.

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

#26
On the results, rather than displaying the % of votes that each subject received, it would be more helpful to show the % of voters that selected it.

Instead of this:

Total voters: 613

Total votes: 3168

Designing data structures (543 votes, 17%)

Show this:

Total voters: 613

Total votes: 3168

Designing data structures (543 votes, 89%)

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

#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 team

-Cryptography, ciphers and data security

-Overview of the role of operating systems

-Networking, encapsulation and the TCP/IP stack

-Basic web technology, server-side programming and client-side scripting

Anything outside of this, I've learned on the job or in my spare time. This includes AJAX and the use of heavier web technology. To my intuition, this is more descriptive of an undergrad degree in computer science rather than a software engineering degree. But it'd be nice to hear what others think.

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

#29
post #12

Earlier quoted context omitted.

> 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?

Swinburne University - Melbourne, Australia.

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

#30
post #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…

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 was taught by an old-school Unix greybeard, though, so the version control system we used was RCS, of all things.
Post reply on HN