Tutorial

Computer Science Fundamentals

A curriculum covering the foundational concepts of computer science, equivalent to an undergraduate CS degree. Spans 18 modules from discrete math and programming fundamentals through data structures, algorithms, architecture, operating systems, databases, networking, theory of computation, software engineering, security, probability and statistics, linear algebra, compilers, distributed systems, parallel computing, functional programming, and machine learning.

Tutorial·Difficulty: Intermediate·82 chapters·Updated Apr 19, 2026

Chapters

01
Logic and Proofs
02
Set Theory
03
Relations and Functions
04
Combinatorics
05
Graph Theory Fundamentals
06
Introduction to Programming
07
Data Types and Variables
08
Control Structures
09
Functions and Scope
10
Object-Oriented Programming
11
Error Handling and Debugging
12
Arrays and Dynamic Arrays
13
Linked Lists
14
Stacks and Queues
15
Hash Tables
16
Trees and Binary Search Trees
17
Heaps and Priority Queues
18
Graphs (Data Structure Perspective)
19
Algorithm Analysis and Big O
20
Searching Algorithms
21
Sorting Algorithms
22
Recursion and Divide-and-Conquer
23
Dynamic Programming
24
Greedy Algorithms
25
Graph Algorithms
26
Number Systems and Binary
27
Logic Gates and Circuits
28
CPU Architecture
29
Memory Hierarchy
30
Assembly Language Basics
31
Operating Systems Overview and Processes
32
Threads and Concurrency
33
Memory Management
34
File Systems
35
Synchronization and Deadlocks
36
Introduction to Databases
37
Relational Model and SQL
38
Database Design and Normalization
39
Indexing and Query Optimization
40
Transactions and ACID
41
Network Fundamentals and OSI Model
42
TCP/IP Protocol Suite
43
Application Layer Protocols
44
Network Security Basics
45
Socket Programming
46
Finite Automata
47
Regular Languages and Expressions
48
Context-Free Grammars and Pushdown Automata
49
Turing Machines and Computability
50
Version Control with Git
51
Software Development Lifecycle (SDLC)
52
Design Patterns
53
Testing Strategies
54
Clean Code Principles
55
Security Principles
56
Cryptography Basics
57
Authentication and Authorization
58
Common Vulnerabilities
59
Probability Fundamentals
60
Random Variables and Distributions
61
Statistical Inference
62
Randomized Algorithms
63
Vectors and Matrices
64
Linear Systems and Gaussian Elimination
65
Eigenvalues and Eigenvectors
66
Lexical Analysis (Scanning)
67
Parsing and Syntax Analysis
68
Semantic Analysis and Type Checking
69
Code Generation
70
Distributed Systems Fundamentals
71
Consensus and Coordination
72
Replication and Consistency
73
Parallel Computing Fundamentals
74
Threading and Synchronization
75
Concurrent Patterns
76
GPU and Parallel Hardware
77
Functional Programming Foundations
78
Higher-Order Functions
79
Advanced Functional Concepts
80
Machine Learning Fundamentals
81
Supervised Learning
82
Neural Networks

About this tutorial

A curriculum covering the foundational concepts of computer science, equivalent to an undergraduate CS degree.

Course Overview

This course is organized into 18 modules, progressing from mathematical foundations through advanced topics like distributed systems and machine learning. Each module builds upon previous concepts.

Estimated Study Time: 400-500 hours total


Curriculum

Module 1: Discrete Mathematics

The mathematical foundation for computer science

  1. Logic and Proofs
  2. Set Theory
  3. Relations and Functions
  4. Combinatorics
  5. Graph Theory Fundamentals

Module 2: Programming Fundamentals

Core programming concepts and paradigms

  1. Introduction to Programming
  2. Data Types and Variables
  3. Control Structures
  4. Functions and Scope
  5. Object-Oriented Programming
  6. Error Handling and Debugging

Module 3: Data Structures

Organizing and storing data efficiently

  1. Arrays and Dynamic Arrays
  2. Linked Lists
  3. Stacks and Queues
  4. Hash Tables
  5. Trees and Binary Search Trees
  6. Heaps and Priority Queues
  7. Graphs

Module 4: Algorithms

Solving problems efficiently

  1. Algorithm Analysis and Big O
  2. Searching Algorithms
  3. Sorting Algorithms
  4. Recursion and Divide-and-Conquer
  5. Dynamic Programming
  6. Greedy Algorithms
  7. Graph Algorithms

Module 5: Computer Architecture

How computers work at the hardware level

  1. Number Systems and Binary
  2. Logic Gates and Circuits
  3. CPU Architecture
  4. Memory Hierarchy
  5. Assembly Language Basics

Module 6: Operating Systems

Managing computer resources

  1. OS Overview and Processes
  2. Threads and Concurrency
  3. Memory Management
  4. File Systems
  5. Synchronization and Deadlocks

Module 7: Databases

Storing and retrieving data

  1. Introduction to Databases
  2. Relational Model and SQL
  3. Database Design and Normalization
  4. Indexing and Query Optimization
  5. Transactions and ACID

Module 8: Networking

How computers communicate

  1. Network Fundamentals and OSI Model
  2. TCP/IP Protocol Suite
  3. Application Layer Protocols
  4. Network Security Basics
  5. Socket Programming

Module 9: Theory of Computation

The theoretical limits of computing

  1. Finite Automata
  2. Regular Languages and Expressions
  3. Context-Free Grammars
  4. Turing Machines and Computability

Module 10: Software Engineering

Building maintainable software

  1. Version Control with Git
  2. Software Development Lifecycle
  3. Design Patterns
  4. Testing Strategies
  5. Clean Code Principles

Module 11: Security Fundamentals

Protecting systems and data

  1. Security Principles
  2. Cryptography Basics
  3. Authentication and Authorization
  4. Common Vulnerabilities

Module 12: Probability & Statistics for CS

Mathematical foundations for data analysis and algorithms

  1. Probability Fundamentals
  2. Random Variables and Distributions
  3. Statistical Inference
  4. Randomized Algorithms

Module 13: Linear Algebra for CS

Mathematical tools for graphics, ML, and data science

  1. Vectors and Matrices
  2. Linear Systems and Transformations
  3. Eigenvalues and Applications

Module 14: Compilers & Interpreters

How programming languages are implemented

  1. Lexical Analysis
  2. Parsing
  3. Semantic Analysis
  4. Code Generation

Module 15: Distributed Systems

Building reliable systems across multiple machines

  1. Distributed Systems Fundamentals
  2. Consensus and Coordination
  3. Replication and Consistency

Module 16: Parallel Computing

Harnessing multiple processors for performance

  1. Parallel Computing Fundamentals
  2. Threading and Synchronization
  3. Concurrent Patterns
  4. GPU and Parallel Hardware

Module 17: Functional Programming

A different paradigm for building software

  1. Functional Programming Foundations
  2. Higher-Order Functions
  3. Advanced Functional Concepts

Module 18: Machine Learning Fundamentals

Teaching computers to learn from data

  1. Machine Learning Fundamentals
  2. Supervised Learning
  3. Neural Networks

How to Use This Course

  1. Sequential Learning: Modules are designed to be completed in order
  2. Practice: Each reading includes exercises - complete them before moving on
  3. Projects: Build small projects to reinforce concepts
  4. Review: Revisit earlier modules as needed when concepts resurface

Prerequisites

  • Basic computer literacy
  • Ability to install software and use a terminal
  • High school level mathematics
  • A text editor (VS Code, Vim, etc.)
  • Python 3.x (for code examples)
  • Git
  • A Unix-like terminal (Linux, macOS, or WSL on Windows)