Learning Computer Science

Hackathon Mentor
3 min readAug 17, 2020

--

A lot of hackers have questions about how to learn computer science, software engineering, and/or programming.

Before I get into that, let’s be clear: learning computer science, software engineering, and programming is not about learning programming languages.

There are concepts that span across different programming languages, and that — the concepts — are what needs to be learned. Learning computer science concepts is much, much, much more important than learning the language itself. Languages will exemplify those concepts and put those concepts into practice, but programming is not about learning all the languages out there. It’s not even really about learning one language. It’s about learning the core concepts that transcend the languages.

By learning the core concepts, you’ll be able to transfer that knowledge to all other languages you might want to learn. Yes, some languages have nuances that are specific to that language which you’ll have to learn separately beyond the core concepts, and arguably, once you know two types of languages (an interpreted language like Python and an object-oriented language like Java or C++), you should be able to pick up other languages without a problem. Sure, JavaScript will have promises and C will have null pointer exceptions, but at the very core, the logic of being able to code in any of those languages is the same.

At the end of the day, knowing why to use which programming language is far more important than actually knowing the the language itself. For example, HTML, CSS, and JavaScript are all languages to do visuals. C is used to do very low-level almost hardware-level work, like writing software for hardware. Python is good for scripting and scraping while R is good for data science. Java is robust for backend as is Go. And of course there’s the mobile development languages: Kotlin and Java for Android, Swift for iOS, and Dart for Flutter. When you’re building an app, why choose one language over another? It doesn’t really matter if you actually know the language itself, because after understanding the concepts underlying programming languages, it’s really just about looking up the syntax and braces and function names.

To learn programming, I would highly recommend not doing a bootcamp. Bootcamps don’t teach fundamentals and they’re a shortcut to “coding”. Many bootcamp grads have a lot of trouble finding a job, and I’m convinced that even if they’re able to find the first job (mostly because some bootcamps will help them get that first job right out of completing bootcamp), they won’t be able to get a second one due to lack of fundamentals. By fundamentals, I mean core coding concepts along with data structures and algorithms. If you ask any computer science major or a professional working in industry, I am almost certain you will get the same advice — to not attend bootcamps.

So what should you do instead? I’d recommend finding a course that focuses on teaching concepts (and not the programming language). This means that a class called “Introduction to Programming” or “Introduction to Computer Science” would be good, and I would steer clear of any called “Introduction to Python [or insert some other language]”.

All that being said, I would highly, highly, highly recommend looking for an introduction to computer science / programming course that uses Python to help you learn the concepts. Python is straightforward, doesn’t require knowledge of other concepts in order to learn nor use the language, and is practical in terms of being useful in industry.

Computer science is a really broad topic, and once you have the conceptual basics down, it’s a fun world to explore as there’s so much out there to discover and play around with! It’s crucial to get those basics down though, because not only will you eventually have to know it anyway, it’ll be a lot easier and faster to make progress once you have a solid foundation. Good luck, and have fun!

--

--

Hackathon Mentor

Suggestions and answers from a frequent hackathon mentor!