HomeAbout Me

Master list of concepts for Programmers

By Arvind Pandey
Published in Programming
November 19, 2019
1 min read

Computer Science as a domain is huge, I just tried to make a list to make it easy for someone starting in this field. This list is not particular to any specialization, anybody with tag #software_engineer, #software_developer, #programmer must learn these concepts to justify those tags. Even I’m learning some of these things.

  1. Learn any one programming language really well. I mean really well. Preferably that supports object oriented programming

    • C++
    • Java
    • Python
    • Javascript
    • Ruby
  2. Version control system

    • Git
  3. Source code control system

    • Github
    • Bitbucket
  4. Master command line

    • Unix/Linux
    • Mac
  5. Operating System Concepts

    • Process and Process Management
    • Threads and Concurrency
    • Scheduling
    • Memory Management
    • Inter-Process Communication
    • Input/OutPut Management
    • Virtualization
    • Distributed File System
    • Distributed Shared Memory
    • Cloud Computing
  6. Networking

    • Internet Protocols – tcp/ip, http/https, udp, ftp, smtp etc
    • Layered architecture – osi model, tcp/ip model
    • IP address – ipv4, ipv6, subnets
  7. Database Management System

    • Learn RDBMS concepts
    • Master anyone database
      • Oracle, MySql, Postgresql
  8. OOPs concepts

    • Polymorphism
    • Inheritance
    • Abstraction
    • Encapsulation
  9. Data Structures

    • Arrays
    • Queues
    • Stacks
    • Linked Lists
    • Map
    • Set
    • Trees – (Specially BST)
    • Graph
  10. Algorithms

    • Sorting
      • Merge Sort
      • Quick Sort
      • Bucket Sort
      • Heap Sort
    • Recursive – not an algorithm, rather concepts or mindset
    • Dynamic Programming
    • Depth First Search
    • Breadth First Search
    • Tree Traversals – In Order, Pre Order, Post Order
  11. Important Design Patterns

    • Creational Design Pattern
      • Singleton
      • Builder
      • Factory
      • Abstract Factory
      • Prototype
    • Behavioral Design Pattern
      • Strategy
      • Observer
      • Mediator
      • Visitor
    • Structural Design Pattern
      • Adapter
      • Decorator
  12. Software Design Principles

    • Single Responsibility Principle
    • Open/Closed Principle
    • Liskov Substitution Principle
    • Interface Segregation Principle
    • Dependency Inversion Principle
  13. System Design Considerations

    • Security
    • Scalability
    • Load balancing
    • Caching
  14. Learn a tool to build something concrete – how about a web development framework?

    • Node.js
    • Ruby on Rails
    • Django
    • Python
    • Spring boot
  15. General

    • Multithreading
    • Containerisation – docker, kubernetes
    • Learn how CI/CD pipeline works
    • Learn one cloud platform – heroku, aws, azure etc

I will keep updating the list. Let me know in the comment box if you think I missed something really important.


Tags

#ds#programming#java
Previous Article
Demystifying Binary Search Tree

Topics

Life & Productivity
Programming
Running

Related Posts

Build Rest API from scratch in Node.js
July 24, 2020
4 min
Arvind Pandey © 2022, All Rights Reserved.

Quick Links

About Me

Social Media