Master the fundamentals of computer science and software development to build robust, scalable systems at top tech companies.
Recommended Experience
This path assumes you can already write working programs. You should be comfortable with at least one language and have built small projects before.
Before starting, you should be comfortable with:
- Comfortable writing programs in at least one language (JavaScript, Python, Java, etc.)
- Understanding of basic control flow, functions, and data structures
- Some experience debugging and solving problems independently
- Familiarity with Git and version control basics
Curriculum
47 lessons across 8 modules
Variables & Data Types
Understanding primitive and reference types
Control Flow
Conditionals, loops, and branching logic
Functions & Scope
Writing reusable, modular code
Error Handling
Try/catch, exceptions, and defensive programming
Practice: Calculator CLI
Build a command-line calculator
Arrays & Strings
Sequential data and manipulation techniques
Hash Maps & Sets
O(1) lookups and deduplication
Stacks & Queues
LIFO and FIFO structures
Linked Lists
Node-based sequential structures
Trees & Graphs
Hierarchical and networked data
Challenge: LRU Cache
Implement a Least Recently Used cache
Big O Notation
Time and space complexity analysis
Sorting Algorithms
QuickSort, MergeSort, and when to use each
Searching & Binary Search
Efficient search techniques
Recursion & Backtracking
Solving problems by breaking them down
Dynamic Programming
Optimizing with memoization and tabulation
Graph Algorithms
BFS, DFS, Dijkstra, and topological sort
Challenge: Path Finder
Find shortest path in a weighted graph
OOP Principles
Encapsulation, inheritance, polymorphism, abstraction
SOLID Principles
Single responsibility, open/closed, and more
Design Patterns: Creational
Factory, Singleton, Builder patterns
Design Patterns: Structural
Adapter, Decorator, Facade patterns
Design Patterns: Behavioral
Observer, Strategy, Command patterns
Project: Design a Parking Lot
Apply OOP to model a real-world system
Unit Testing Fundamentals
Writing effective unit tests
Test-Driven Development
Red-green-refactor workflow
Mocking & Test Doubles
Isolating units with mocks and stubs
Integration Testing
Testing component interactions
Practice: Write Tests for Every Code Path
Write tests that explicitly cover each branch and edge case listed in the lesson
System Design Principles
Scalability, availability, and consistency
Databases & Storage
SQL vs NoSQL, caching, and sharding
APIs & Communication
REST, GraphQL, and message queues
Load Balancing & CDNs
Distributing traffic efficiently
Microservices Architecture
Breaking down monoliths
Design Twitter
Write a full system design document for a social platform
Interview Evaluation Criteria
How top companies assess candidates
Problem-Solving Framework
UMPIRE method for technical problems
Common Interview Patterns
Two pointers, sliding window, and more
Behavioral Questions
STAR method and leadership principles
System Design Interviews
Approaching open-ended design questions
Timed Coding Exercises
Practice under interview conditions
Mock Interview: Coding Round
Full coding interview simulation
Mock Interview: System Design
Full system design interview simulation