Awesome (free) contents to study computer science
I didn’t study computer science in college and I never took a “formal” programming course. Without going into too much detail, I want to reaffirm that, looking at the past, I by no means believe that having gone to another college (different from the profession I have today) was a waste of time. <! - more -> A university teaches many things that you cannot learn by yourself, behind a computer, sinking in a sea of content. However, when deciding to change areas you have to swim hard to overcome the holes that the lack of a theoretical computer science course can give you. Over time I have been collecting courses and texts that have helped me and still help me fill in the gaps. Today I will share what I found best in terms of courses and texts to learn what I consider to be the knowledge base in the technology area, without worrying about programming languages.
I want to make it clear that I am not going to include courses on learning platforms (like Udemy and Coursera) or anything that gets paid. I’m also not going to focus on tutorials that teach about specific programming languages. I wanted to focus only on content that explains theoretical or more in-depth concepts and filled part of my gaps quickly, efficiently and free of charge 🙃.
Obs: This is an unfinished post. It is subject to change as I find content that captivates me.
A very big gap I had was that I never really understood how a computer worked under the hood. I didn’t really understand how everything can be just zeros and ones? How are the calculations done? Crash Course is a YouTube channel that contains dozens of videos on the most diverse subjects possible. They have a computer science course that goes from the basics (0s and 1s) to how to build a CPU and so on. The course is taught by Carrie Anne of the RaspberryPi Foundation, who is an incredible woman and passionate about what she does, which makes the course even better.
Computer science and algorithms basics
I’ve seen several basic programming courses and the vast majority focus on teaching a language. MIT has a platform for the dissemination of some of its subjects and one of them is a discipline called “Introduction to Computer Science and Programming”. This course was recorded twice, once in 2008 and once in 2011 and both are available on the platform. Despite being old, the classes do not focus on a specific language, but on programming concepts as a whole. The exercises and examples are in Python 2 and are all available. He is also on Youtube, with English subtitles:
Another thing I always missed was the system design or system architecture part. I always knew that big companies did interviews in which they asked questions like “How do I build WhatsApp?”. Of course, this is the kind of thing that is hard to learn if you just focus on studying programming. Walking through Youtube I found the channel of Gaurav Sen who makes didactic videos on various topics. I ended up watching most of the system design videos and I really recommend:
A bit of hardware
A nice way for you to better understand what’s going on behind the scenes on a computer is to use simpler hardware to test and create prototypes. Arduino is a small piece of hardware to create prototypes that can be programmed in C. For a price not too high it is possible to buy a kit that comes with several parts, LEDs, and sensors to play at home. There are millions of tutorials on the internet and I found one that I found quite didactic:
I really like this talk that is about the common pitfalls when implementing microservices:
Posts that are precious
Some blog posts are amazing and they made me understand much more than any course I’ve tried:
- About Unicode, o Joel Spolsky wrote a blog post about the absolut minimum every programmer should know. By the way, they have a lot of good articles. Go check!
- An article about basic concepts of architecture, web systems, DNS and database.
- Learning about DNS with comic books!
- Zach Sailer did an awesome guide on how to use git on Github
There are millions of guides on how to do an “university” by yourself. Thinks like the Coding University Interview that tell you a thousand topics to study. To be honest, I rather not put that load on me. Every day I discover something new and try to fill a gap that is missing, and I search for the best content that adapts to my need. Here I leave my tips for those who, like me, are always looking for quality content.❤ Cheers! Letícia