## Maths and Computer Science

From Slashdot | Why Johnny Can’t Code

CS a branch of mathematics? (Score:5, Insightful)

by David Off (101038) on Thursday September 14, @08:42AM (#16103273)

(http://www.abcseo.com/)

I wonder if this CS is a branch of mathematics approach also puts people off. Personally I think there is much less mathematics going on at the programming level than college lecturers like to think. It is like the old saw that a dog that catches a ball is solving a 2nd order differential equation in real time. No its not, it is catching a ball. Similarly a program is more a logical story than some mathematical adventure.

It may gall college profs who are still trying to foist formal methods on people but setting a high mathematical barrier to entry on CS courses and having a high maths content is a bad thing.

As an example I have a first in Microelectronics from a British University (a course which had a large syllabus covering ‘C’ and machine language) but only just scraped the ‘C’ grade needed in mathematics as an entrance to this course despite having ‘A’s in Electronics and Computing. I doubt I have used any maths much beyond British ‘O’ level standard since and certainly the maths knowledge required as entry to a degree level CS course is too wide and deep. It is all geared up to people going onto research rather than the real world. You don’t need to be an expert in set theory to write the level of SQL required by most applications.

**Re:CS a branch of mathematics?** (Score:4, Insightful)

by IamTheRealMike (537420) on Thursday September 14, @09:38AM (#16103774)

(http://plan99.net/~mike/)

Isn’t it true that you have no idea what you’ll be programming in the future.

No, it’s not true. 10 years ago most desktop software was written in C++ and Java – a hugely simplified form of it – was the next big thing. Fast forward 10 years and most desktop software is written in C++. Most new languages and tools are pretty similar to old ones. Radically different toolsets like pure functional languages have never taken off, and show no signs of doing so. The best programmers are still the ones with the most experience, not the ones who know the most pure maths.

I always thought the point of all the math was to provide a solid background to support you in whatever you do.

The point of all the math is to make the subject sufficiently academic that it is acceptable to universities, who are scared by anything vocational.

The skills that everyday programmers need to do everyday jobs are more around understanding the tools they’ll be working with – how a computer actually works, what version control is, how to architect software to be modular, what regular expressions are, how to work with debuggers etc. These are the skills that university graduates routinely lack, and routinely get nailed in job interviews by.

Bits of the math are useful – being able to work in base 2 and base 16 for instance, or having a basic understanding of time/space complexity. Unfortunately most courses focus on big O notation to a ridiculous extent, meaning that it’s not uncommon to see “data structure abuse”, where some extremely fancy and theoretically fast algorithm is used, but due to some awkward practical factor like poor locality or excessive memory usage ends up being slow.

**Re:CS a branch of mathematics?** (Score:4, Insightful)

by Bender0x7D1 (536254) on Thursday September 14, @01:01PM (#16105903)

(http://www.computectconsulting.com/)

I both agree and disagree with you.

I agree that this applies to programmers.

I disagree that this applies to software engineers.

There is a big difference between the two.

*The point of all the math is to make the subject sufficiently academic that it is acceptable to universities, who are scared by anything vocational.*

Universities are not scared by anything vocational. However, it doesn’t fit with their role in education. If you want a vocation, go to a community college or something else. They will teach you the “hot” programming language, environment, skills, etc. However, these things are fleeting. What are the hot areas today? Ruby on Rails? Security? LAMP? What was it 5 years ago? Java?

Now, if you get a solid grounding in theory and skills that apply to different areas, it doesn’t matter what the hot area is. You can use your foundation and learn that area quickly. If you have a solid background in programming, including different languages, picking up a new language is easy. If you have a good grounding in networks and OSes, then picking up security is much easier. So, universities don’t aim for the hot areas, they aim for giving you the skills and tools to be successful in the long run.