Gaining Technical Skills

Muhammad Farhan
4 min readDec 11, 2020

This article is a sub-part of this article!

I’ll share the resources that I used to grow my skill set and I think that every Computer Science student or beginner programmer can use them to grow their skill set as well. I can only share the resources that I used and they should work for you hopefully :-p In case they don’t, Google is our friend.

Few courses are paid but there are free alternatives to them, you can see their content and google the free alternatives or ask in your friend’s circle, someone might have bought it.

# Programming Language

What language should I pick?
  1. C++: Cherno YouTube, cplusplus.com, GeeksForGeeks

2. JavaScript: Mosh Hamedani, Hitesh YouTube, Codecademy, MDN JS Docs (in-depth resource for understanding individual topics)

# Data Structures

Learn about Arrays, Dynamic Arrays, Stacks, Queues, Link List, Heaps, Trees, Graphs, Hash-maps, Hash-sets.

Resources: Gayle Laakmann’s HackerRank videos, MyCodeSchool, GeeksForGeeks

# Algorithms

ALGORITHMS are Great!

Learn about Big O notation, Sorting, Searching, Recursion, Backtracking, Divide and Conquer, Dynamic Programming, Greedy algorithms, Graph Algorithms, and algorithms relevant to each Data Structure in section 2.

Resources:

  1. Gayle Laakmann’s HackerRank videos, MyCodeSchool, MIT course (Erik Demaine’s videos are must watch), BackToBack SWE
  2. Specifically for Dynamic Programming Errichto’s DP videos, CSES DP Problem set, Editorial for CSES problems.
  3. Interview problems platforms: LeetCode, HackerRank.
  4. If you like to do Competitive Programming then use Codeforces.

Note: Personally, I enrolled in a paid course for Data Structures and Algorithms to learn the fundamentals because you get all the curated resources at one place with someone to mentor you. If you like, then I’d recommend to take an online/offline course.

# Operating Systems

If you’ve time then Operating System Concepts by Peter B. Galvin book.

Love Babbar’s Video, if you don’t understand Hindi then here is the Learning Material that he talked about in the video.

# Database Management Systems

Databases please store our data!

Concepts you must learn: Basic queries, Joins, Indexing, Transactions, Concurrency control, Deadlocks and how they are handled and the difference between Sql and NoSql databases.

Socratica for beginners, GeeksForGeeks (for more topics)

# System Design

You don’t need it much for a freshers job but still, you should have some idea about how systems are designed and implemented at scale. Just learn basic things like Working of the web, DNS, Horizontal and Vertical Scaling, CAP theorem, Caching, CDNs, Proxies, Polling, DB sharding, Sockets, etc.

System Design Primer GitHub, Gaurav Sen

# Linux/Unix Command Line Tools

Don’t use that ugly GUI, you’re supposed to be a Hacker

I recommend this GitHub repository to learn these.

# Domain Specific things

I’ve mostly worked in the web development domain, so domain-specific resources are limited, and might not work for you except for the last one.

Front-end (basic HTML, CSS, JS, Bootstrap)

LearnCodeOnline (I used this but it’s paid), you can see the content here and there are tons of tutorials and blogs available to learn the concepts individually.

React.js

  1. Mosh Hamdani’s course
  2. Modern React with Functional Components and Hooks, WebDevSimplified, once you’re familiar with it then you can build your own projects.
  3. React official docs

Backend with Node.js and Express

  1. Mosh Node, Mosh Express App, Mosh Complete Course (highly recommend it) you’ll also learn Authentication, Authorisation, Unit testing, Integration testing, Test-driven development, and much more.
  2. Official Node.js documentation

Version Control System

Git for pushing you and your repositories to remote :p

Git is heavily used as VCS in the industry. If you want to deep dive into Git and want to see how things are working then this video is a masterpiece. A basic intro for people who understand Hindi Arnav Bhaiya’s Webinar

--

--

Muhammad Farhan

Software Engineer @ClassPlus | Ex-Zomato | Google Summer of Code @Mozilla 2019 | GitHub Campus Expert