Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Mathematics is an enormous and ancient subject. The maths that a CS student is exposed to is really a very small sliver of a few topics

I would say the same is true of most undergraduate math majors.

The Computer Science program was part of the College of Science and Mathematics at my university (not the School of Engineering). The stated goal of the program was to give students enough of a theoretical background in math and computer science to pursue an advanced degree in CS. Most students probably had other ideas, but that was the way the curriculum was structured. And there was enough overlap between Math and CS majors that most CS majors ended up with enough credits for a dual CS/math degree pretty much by accident.

To be clear I am under no illusion that meeting the minimum requirements for a math degree makes me a great mathematician. But neither were the majority of “pure” math majors in our classes. In fact, I would say the CS students tended to be stronger in math, as that was the more competitive major at my university.



Undergraduate Math degrees should cover a much wider range of mathematical topics. Many schools don’t have enough students to offer many courses exclusively for Majors so that often blurs the lines.

Topology and a few others may make the cut, but it’s much easier to share requirements with other programs so a Math degree may include courses that are required or attract students from a Physics, CS, Engineering, Music, Economics, Chemistry, Philosophy, History, etc degrees.

Depending on how you set it up “History of Mathematics” could attract students from several different majors which means you can offer it more often etc. But the same applies in reverse so CS programs can end up with more overlap than ideal.


Yes, when we design mathematics degree courses, there is, of course, only so much of the overall subject that can be covered.

However, the definition of a mathematics major is, I think we'd agree, "someone who has majored in mathematics". So, regardless of how much of the corpus we manage to cover, having a degree in mathematics means that you majored in mathematics (if I am understanding US terms correctly).

The original post was, I think, equivocating a degree in computer science with being a mathematics major. Which could be regarded as being incorrect, perhaps pedantically, merely by definition alone.

However, also, I am making a distinction (although I wasn't very clear, I admit) between theoretical computer science (the topic) and a computer science degree. It is generally accepted that theoretical computer science is a topic in applied mathematics, but it doesn't then follow that having a computer science degree means that you are a mathematics major.

Computer science degrees have theoretical computer science (the topic) as a component; the extent to which that component makes up the degree syllabus varies greatly from university to university and, perhaps, has also changed over time.


> The Computer Science program was part of the College of Science and Mathematics at my university (not the School of Engineering).

And what we need is for CS and Software Engineering to split, with Software Engineering being part of the School of Engineering. (Similar to the way Chemistry is split from Chemical Engineering.) And we need Software Engineering to be ten times as large as Computer Science. (Of the people who get CS degrees, 90% of them are going to work as software engineers, not as computer scientists.)


I actually really value my CS education, and think a rigorous mathematical education is useful for any analytical profession. Both in terms of being proficient at math, which has tons of practical applications, and for developing analytical and abstract reasoning.

I’m curious what sorts of things would you like to drop from a CS degree, and add to a computer engineering degree?


It's mostly what I'd add.

To me, software engineering is about creating larger-scale software that adequately meets the need, and doing so as efficiently as possible - which is not to say that it's efficient. When there's six steps in the communication path between the need and the programmer, how do you minimize the amount of time the programmer is implementing the wrong thing? This is a far bigger problem than choice of language or algorithm, but I doubt you'll ever find it in a CS curriculum. I might even say it's the fundamental problem of software engineering - or perhaps of software engineering management.

Along those lines, they should teach clarity of writing technical information, and ability to read less-than-stellar technical information.

"That adequately meets the need" - that's not perfection. How do you evaluate and triage bugs? How do you manage the bug list? For that matter, how do you even know what bugs you have? Testing strategy should be part of a software engineering curriculum.

Working with a version control system. They might get that in a CS degree, but probably around the edges and by accident. For a software engineering degree, they should get it in some depth and on purpose.

I don't know what I'd cut to make room for that kind of thing. But I think that kind of thing needs to be there for an actual software engineering degree.


> a rigorous mathematical education is useful for any analytical profession

This is already the case with classical engineering degrees. The majority of undergraduate engineering coursework is science, calculus, or some form of applied mathematics specific to the discipline you're majoring in.


My large state school had a computer science degree, and a computer engineering degree. The latter being much more mathematically rigorous, and in the college of engineering, not college of science (and sort of adjacent to an electrical engineering degree). It’s noticeable in the grads it puts out too. If you need a programmer that can handle and understand math, get one with the engineering degree.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: