Focusing on a programming language (Python)

How to Learn??

Everything in the world of computer science is well documented and a single source truth exists. Always refer to documentation when learning or understanding a concept. As a beginner it equivalent to moving a mountain if you have never read a documentation, but you have to take the first steps to attempt to understand, this won’t be easy, but would get easier by more time you spend doing it.

However, since the people who maintain Python are so generous they made a separate Tutorial for newbies getting into computer science. https://docs.python.org/3/tutorial/index.html. This would be ideal and your only source of truth over the rest of internet which is bloated with the same concepts but diluted by a large margin.

Making use of REPL - Read Eval Print Loop

It’s very obvious to get some doubts or not understand a specific edge-case or a reason why some piece of code returns the results it does. When in doubt, REPL comes to your rescue. Just open it up, type that line and experiment, the best way to understand is through experimenting through different methods and understanding the outputs produced.

Try to guess the output before hitting "Enter" when using REPL

What does it take to get good at Programming?

Mastering Programming is more than Learning, it’s about practicing. To build your understanding and intuition on how to program you have to write a lot of code. To do that you need a lot of problems / questions at your disposal to solve. The internet is riddled with tons of questions to solve from, but you don’t stick to high quality and reputable content, it’s easy to fall into the performance trap that gives you the illusion of practice where you’re solving the same types of problems over and over, which gives you the false impression of practicing.

The questions that you’re practicing shouldn’t be too easy or too hard. Too easy and you feel like you can conquer the world, too hard you feel that you’re incapable of anything. There are a many lists curated so that you maintain such difficulty level. However, the one which is highly appropriated is Project Euler’s Archive. As a beginner, once you’ve learnt the basic concepts of a programming language, you can use these archive problems to practice

Another fun place to practice is CodeWars, I personally like this compared to other ultra-normie, SEO spammed websites like geeksforgeeks, javatpoint, etc practice questions because, these questions are novel and are written in a fun way that’s engaging to write code for, especially when you’re a beginner and can’t clearly fathom what you’re doing. Having such small wins by solving problems is a good dopamine boost to make you stay in the loop of learning and building your coding muscles.

A programming language doesn’t teach you everything

There are a lot more concepts to learn to truly write computer programs, ranging from Operating Systems, Computer Networks, Database Systems and many more as you start to specialise.

If you’re genuinely have enough patience and will to understand the entirety of computer science. You only need to read 9 books. This is equivalent to the entire Computer science degree that you would get any where in the world.

https://teachyourselfcs.com/ This website clearly documents and lists down all the 9 books and additional supplement resources that you can rely on.

Important

When the cost of creating a blog / document / book is soo cheap, then the amount of books / internet blogs start increasing exponentially. It’s always important to pick the right sources when learning anything. The closer to the source the material is, the better it’s general reputation is.

Resources exclusively only beginners

  1. SanFoundry 1000 Python Quiz Questions
  2. SanFoundry - Python Programming Examples
  3. W3Schools - easy to search and find concise explanation (Just use for Reference, DON’T LEARN FROM HERE)

Must watch Videos / Lectures

  1. The UNIX Operating System
  2. UNIX: Making computers easier to use
  3. Bits & Bytes Playlist
  4. MIT OCW - Introduction to CS and Programming using Python