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.
Learn any one programming language really well. I mean really well. Preferably that supports object oriented programming
- C++
- Java
- Python
- Javascript
- Ruby
Version control system
Source code control system
Master command line
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
Networking
- Internet Protocols – tcp/ip, http/https, udp, ftp, smtp etc
- Layered architecture – osi model, tcp/ip model
- IP address – ipv4, ipv6, subnets
Database Management System
- Learn RDBMS concepts
- Master anyone database
- Oracle, MySql, Postgresql
OOPs concepts
- Polymorphism
- Inheritance
- Abstraction
- Encapsulation
Data Structures
- Arrays
- Queues
- Stacks
- Linked Lists
- Map
- Set
- Trees – (Specially BST)
- Graph
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
Important Design Patterns
- Creational Design Pattern
- Singleton
- Builder
- Factory
- Abstract Factory
- Prototype
- Behavioral Design Pattern
- Strategy
- Observer
- Mediator
- Visitor
- Structural Design Pattern
Software Design Principles
- Single Responsibility Principle
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
System Design Considerations
- Security
- Scalability
- Load balancing
- Caching
Learn a tool to build something concrete – how about a web development framework?
- Node.js
- Ruby on Rails
- Django
- Python
- Spring boot
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.