Skip to content

This repository organizes learning materials across 9 core computer science subjects. Each module provides structured guidance including prerequisites, recommended resources, and practice exercises.

License

Notifications You must be signed in to change notification settings

icm-ai/Teach-Ourself-Computer-Science

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Teach Yourself Computer Science

English | 简体中文

Personal learning repository for systematically studying computer science fundamentals based on the Teach Yourself Computer Science curriculum.

Overview

This repository organizes learning materials across 9 core computer science subjects. Each module provides structured guidance including prerequisites, recommended resources, and practice exercises.

Learning Modules

Foundational programming concepts, recursion, abstraction, and computational thinking.

Key Resources: Structure and Interpretation of Computer Programs (SICP), Brian Harvey's CS 61A

Understanding computer systems from logic gates to processor design.

Key Resources: Computer Systems: A Programmer's Perspective, Nand2Tetris

Essential algorithms, data structures, and complexity analysis for efficient problem-solving.

Key Resources: The Algorithm Design Manual by Steven Skiena, LeetCode practice

Discrete mathematics foundations including logic, combinatorics, probability, and graph theory.

Key Resources: MIT Mathematics for Computer Science, MIT 6.042J lectures

How operating systems manage resources, processes, memory, and file systems.

Key Resources: Operating Systems: Three Easy Pieces, Berkeley CS 162

Internet architecture, protocols, and networked system communication.

Key Resources: Computer Networking: A Top-Down Approach, Stanford CS 144

Database systems, SQL, transaction processing, and data modeling.

Key Resources: Readings in Database Systems (Red Book), Berkeley CS 186

Programming language design, parsing, and compiler implementation.

Key Resources: Crafting Interpreters, Alex Aiken's Compilers Course

Designing fault-tolerant systems across multiple machines.

Key Resources: Designing Data-Intensive Applications, MIT 6.824

Repository Structure

├── modules/                    # Learning modules for each subject
│   ├── programming/
│   ├── computer-architecture/
│   ├── algorithms-and-data-structures/
│   ├── mathematics-for-cs/
│   ├── operating-systems/
│   ├── computer-networking/
│   ├── databases/
│   ├── languages-and-compilers/
│   └── distributed-systems/
│
├── resources/                  # Centralized learning resources
│   ├── books/                  # Textbooks organized by subject
│   ├── videos/                 # Video lecture references
│   └── exercises/              # Practice problems and projects
│
└── openspec/                   # Project specifications and change management

How to Use This Repository

  1. Start with Prerequisites: Review each module's prerequisites before beginning
  2. Follow Your Path: Subjects can be studied in various orders, though suggested sequencing is:
    • Begin with Programming and Mathematics for CS
    • Computer Architecture before Operating Systems
    • Networking and Operating Systems before Distributed Systems
  3. Add Resources: Place learning materials in appropriate resources/ subdirectories
  4. Track Progress: Use module checklists to monitor completion
  5. Take Notes: Each module README includes space for personal study notes

Learning Approach

Estimated Time: 100-200 hours per subject for thorough understanding

Study Strategy:

  • Combine textbook reading with video lectures for reinforcement
  • Complete practice exercises and projects for each subject
  • Revisit favorite topics throughout career for deeper mastery

Reference

Original curriculum: Teach Yourself Computer Science

About

This repository organizes learning materials across 9 core computer science subjects. Each module provides structured guidance including prerequisites, recommended resources, and practice exercises.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages