Want to learn to program? Don’t do Computer Science
Computer Science isn’t really about learning to create software. It’s barely even about learning programming languages.
Now, there’s no need to panic and disappear into the mountains to reassess your world view. It’s a misconception that pretty much everyone outside of CS has, along with many people in CS (including yours truly, until sometime during my second year).
What Computer Science is Not
And my answer is sort of, but no, not really.
It’s true that we do learn those things along the way. With one or two exceptions, like our very first module in first-year that introduces us to programming in Java, we’re expected to learn the languages in order to do other stuff.
Take, for example, my AI from coursework in second year. Up until that point, we had predominantly been using Java (and some C) in first year, and then WHAM! Write this program in Python. No Python lessons.
This may sound scary, but I think this ability to pick up new things as required is one of the biggest skills that a programmer can have, and it’s something that studying CS definitely helps with.
After all, in the real world, technologies change very quicky. The theory underpinning them, however, doesn’t change as fast.
What Computer Science Is
So what even is Computer Science?
Erm, so that’s a really hard question to answer. And that’s not just because I’m an ignorant, naïve student. Even in academia, there’s been a lot of discussion around what CS is.
Because, really, it is many things. It’s like a platypus; nicking parts from the natural sciences, maths and engineering and somehow wearing them all together – and absolutely rocking it!
(This is the third time I’ve mentioned platypi/platypodes/platypuses in my posts – I think this a beginning to be a problem)
So let’s break this down anatomically, using modules offered on our CS course.
(Sorry if I offend anyone with this, this is how I understand things in CS. I do not wish to start a war)
We have engineering-y stuff:
- Computer organisation and architecture
- Web development
- Database systems
- Operating systems and computer networks
- Software engineering – that’s where we learn to make software. We have one module for that.
- Mobile robotics
We have maths-y stuff:
- Maths modules. Yes, we do have them. Yes, we do need them.
- Algorithms – no computers involved! It’s good ol’ pen and paper.
- Machine learning – it’s statistics. But cool statistics!
We also get cheeky cameos from other disciplines in:
- Professional Skills – business, law, and about a billion other things
- Visualisation – design stuff
- AI – philosophy stuff
- Cybersecurity – psychology stuff
- Formal languages – linguistics stuff
- Project Management – management stuff
- Social informatics – sociology stuff
- Neural computing – biology stuff
This isn’t exhaustive. It’s not even a particularly good way of categorising things. But I hope it conveys the fact that Computer Science as a discipline is not just about programming.
But it does make you a better programmer.
There are so many ways to view Computer Science. In another post, I talk about CS as a science.
Computer Science is So Much More than Programming
If it was just about programming, then what’s the difference between doing a CS degree and some random online programming course on Udemy?
Let me be honest with you. I’m not currently planning to become a software engineer. I’ve realised that while I do enjoy programming to a certain extent, I’m not sure if I want to do it all the time and that I want to do something more people-oriented.
Does that make my degree obsolete? Absolutely not! I’m still enjoying it, and there are plenty of other ways to go where having a CS degree is really useful, and I’ve considered a number of these in another post.
So why do Computer Science?
I’m doing it not because I want to learn programming languages (though of course, that happens along the way), but because I want to learn how to solve problems in our digital world.
P.S. If you’re offended by the cover photo of this post about programming, good. Because HTML IS NOT A PROGRAMMING LANGUAGE! *ehem* Thank you. I shall take my leave.