This is my evergrowing reference on things related to Computer Science and Software Engineering. I started working on documenting this with the intention of becoming a better, more grounded and rounded Software Engineer. I would like to call it the list of 'things I know that I dont know them', humbly reminding myself that no man knows it all- the more we have on our don't know list, the more rounded we become.
Instead of tools technologies or frameworks, I am learning more on the fundamentals and first principles.
This is heavily inspired by jwasham's coding university, but the objective is not an interview preparation roadmap.
Hopefully, this will be of some use to anyone dropping by.
Enough of ranting, let's jump right in !.
- The Basics
- Operating System
- Computer Networks
- DataStructures & Algorithms
- Programming
- System Design
- Computer Security
- Testing
- Version Control
The atomic building blocks!- bare metal stuff
- Basic Math
- Binary
- BitWise Operators
- Masking
- Bit Hacks
- HexaDecimal- Why Hexadecimal in CS
- Character Set & Encoding
- How CPU Works
- Endianness
- Some Basic skills
- Math skills
- Numbers and scales
- Markdown for documentation
- Learn C
- Understanding of compilers
- Math skills
Good Reads & Views
Books
- Computer Science from the Bottom Up
- Structure and Interpretation of Computer Programms
- But How do it know
The first layer of abstraction over the bare metal
Todo
Group of computers..
- Networking fundamentals
- OSI Reference Model
- Network Devices
- How packet routing works
- DNS
- Architecture of the internet
- HTTP Fundamentals
- Spec
- Important Request and Response headers
- HTTPS
To better at problem solving
- Algorithmic Thinking
- Complexity & Asymptotic analysis
ToDo
ToDo
Good Reads & Views
Books
Videos
- Programming Paradigms
- Imperative
- Functional
- Declarative
- Core Concepts
- Abstraction
- OOPS
- SOLID principles
- Code Complexity
- Design Patterns
- Debugging
Good Reads & Views Books
- The Prgamtic Programmer
- Code Complete
- System Design pricniples and patterns
- Architecture Patterns
- Microservices
- Layering
- Documenting system designs
- NFRs
- Security- Authentication & Authorization
- Scalability
- Availability
- Reliability
- Maintinability
- Monitorability
- Evolvability
- Configurability
- Distributed Systems
- ACID vs BASE, CAP Theorem
- DataStorage systems
- Durable
- RDBMS- Concepts, DataModelling
- NOSQL
- Volatile
- Caches
- Durable
- Messaging
- In Process - eg: Queue and Worker threads
- In Memory- Pipes, Messaging systems
- Distributed
- NFR Testing and Benchmarking
Good Reads
** Books**
- Release It
- Basics
- WebApplication Security
- Vulnerability assessment
- DataSecurity- Compliance & Laws
- Automation
- Performance Testing
- Reliability Testing- Chaos & fault tolerence
- Security Testing
- GIT basics
- Version control strategies
https://github.com/ossu/computer-science#introduction-to-computer-science
https://github.com/ossu/computer-science/blob/master/extras/readings.md