Skip to content
/ cs Public

My learning path to master the foundations of computer science

Notifications You must be signed in to change notification settings

lin/cs

Repository files navigation

Learning the Basics of CS


📚 Books, 🎓 Formal Courses, 📺 YouTube Videos, 🕵️‍♂️ Cracking Source Codes


Core Goals:

Internalize the following subjects:

  1. ⚖️ - Mathematical Logic
  2. 🧮 - Theory of Computation
  3. 🔌 - Computer Systems
  4. 🤖 - Artificial Intelligence

Stage I: Mathematical Logic & Computation Theory

  1. ❗ 📚 Introduction to the Theory of Computation, Feb. 2019, Sep. 2020

  2. ❗ 📚 The Logic Book, Nov. 2017, Jul. 2019, Sep. 2020

  3. 📚 The Annotated Turing, Nov. 2017, Sep. 2020

    👨‍💻 Selected Implementation: Simulate Turing Machine using JavaScript

  4. 📚 Gödel's Proof, Nov. 2017, Sep. 2020

  5. 📺 Fundamentals of Lambda Calculus & Functional Programming in JavaScript, Feb. 2019

  6. 📚 A New Kind of Science, Nov. 2017

  7. ⏸️ 📚 Computers and Intractability

  8. ⏸️ 🎓 Automata Theory - Stanford Online

  9. ⏸️ 📚 Introduction to Automata Theory, Languages, and Computation

  10. ⏸️ 📚 Elements of Information Theory

Stage II: Computer Systems

Circuit Logic

  1. ❗ 🎓 The Elements of Computing Systems (Project 1 - 5), Feb. 18-20 2019

    👨‍💻 Combinatory Logic; ALU; Register & Memory; CPU

  2. ❗ 📚 Computer Systems: A Programmer's Perspective (Chapter 4), Jul. 2019

  3. ❗ 📚 Code: The Hidden Language of Computer Hardware and Software, Nov. 2017

  4. 📺 Build an 8-bit computer from scratch, Spring Festival Holidays, 2019

  5. 📚 Feynman Lectures On Computation Feb 2019

Assembly and Virtual Machine

  1. ❗ 📚 Computer Systems: A Programmer's Perspective (Chapter 2 - 3), Mar. 2019

    👨‍💻 Selected Implementation

  2. ❗ 🎓 The Elements of Computing Systems (Project 6 - 8), Jun. 2019

    👨‍💻 Codes: Project 6 (Assembly Compiler), May 22 2019, Project 7-8 (Virtual Machine Compiler), Jun. 14 2019

Stage III: Languages and Compilers

  1. ❗ 🎓 Stanford CS143: Introduction to Compiler (Week 2 - 4), Feb. 2019

  2. ❗ 🎓 The Elements of Computing Systems (Project 10 - 11), Jun. 2019

    👨‍💻 Codes: Project 10 (Parser), Jun 21 2019, Project 11 (Generator), Jun. 26-27 2019

  3. 🕵️‍♂️ JISON: Generating Parser using LL LR SLR LALR used in Jison, May 2019

    By far, parsing techniques is the hardest part of this learning journey, the main reason might be the lack of ideal learning materials. Things are taught too abstract and too little examples are presented.

    📓 How to distinguish LL LR SLR LALR?

  4. 🕵️‍♂️ Babel: Babel Parser, Babel Traverse, Babel Generator, Jun. 2019

    Babel Parser is for parsing JavaScript, using Recursive Descent Algorithm.

  5. 🕵️‍♂️ Vue.js: Parser for HTML used in Vue.js, Jun. 2019

    👨‍💻 Codes: Rewrite

  6. 🕵️‍♂️ KaTeX: Parser for LaTex used in KaTex, Jun. 2019

  7. 🕵️‍♂️ Math.js: Parser for Mathematical Expression used in Math.js, Jun. 2019

  8. 👨‍💻 Wrote a tiny Mathematica-like computer algeba system for educational purposes. Implemented some rudimental algebra like Simplify, Expand / Factor and Solve functionalities. Jan. 2020

Stage IV: Algorithms and Data Structures

  1. ❗ 🎓 Accelerated Computer Science Fundamentals Specialization (Coursera), Aug. 2019

  2. 📚 Introduction to Algorithms (CLRS), Aug. 2019

Stage V: Computer Graphics

Font & Typesetting

  1. 📓 Font Metrics, 📓 Important Unicode Codepoint

  2. 📚 The TeXbook, Jul. 2019, Dec. 2019

  3. 🕵️‍♂️ KaTeX : typeset LaTeX using HTML (table) and CSS struct

  4. 🕵️‍♂️ MathJax : typeset LaTeX into HTML and SVG format

  5. 👨‍💻 Wrote a typesetting system which basically is a lighter version of MathJax, Dec. 2019

  6. 👨‍💻 Fixed a minor bug in MathJax (merged into master) when outputing square root

Computer Graphics

  1. 🎓UIUC CS 418: Interactive Computer Graphics, Spring 2020

  2. 🕵️‍♂️ three.js 3D Graphics Library, Mar. 2020

  3. 🕵️‍♂️ GSAP Javascript Animation Library, Mar. 2020

Stage VI: Artificial Intelligence & Machine Learning

Artificial Intelligence

  1. 📚 Artificial Intelligence: A Modern Approach, May 2020
  2. 🎓 Artificial Intelligence (MIT 2010), May 2020
  3. 🎓 Introduction to Artificial Intelligence with Python (Harvard), May 2020

Probability and Statistics

  1. 🎓 UIUC STAT 420: Methods of Applied Statistics, Summer 2020
  2. 🎓 UIUC CS 598: Advanced Bayesian Modeling, Spring 2021
  3. 📚 Applied Statistics with R, Summer 2020
  4. 📚 Probability and Statistics for Computer Science (Forsyth), Fall 2020

Machine Learning

  1. 🎓 UIUC CS 498: Applied Machine Learning, Fall 2020
  2. 📚 Applied Machine Learning (Forsyth), Fall 2020
  3. 📚 An Introduction to Statistical Learning with Applications in R, Fall 2020
  4. ⏸️ 📚 Machine Learning: a Probabilistic Perspective, Fall 2020
  5. ⏸️ 📚 Pattern Recognition and Machine Learning
  6. ⏸️ 🎓 Machine Learing (Andrew Ng)

Statistical Learning

  1. ⏸️ 🎓 UIUC CS 598: Practical Statistical Learning
  2. ⏸️ 📚 Elements of Statistical Learning

Deep Learning

  1. ⏸️ 🎓 Deep Learning Specialization (Andrew Ng)
  2. ⏸️ 📚 Deep Learning (Goodfellow)

Stage VII: Computer Networking & Distributed Systems

  1. 🎓 UIUC CS 435: Cloud Networking, Fall 2021

  2. 📺 Learn how the Internet works, Aug 2020

  3. ⏸️ 🎓 Cloud Computing

Stage VIII: Operating Systems

  1. 🎓 The Missing Semester - MIT, Fall 2021

Stage IX: Databases

  1. ⏸️ 🎓 Database Systems

Master's Degree (2020 - 2022): UIUC MCS Courses

Course Semester Score Grade A+ Cutoff
CS 418: Interactive Computer Graphic Spring 2020 98 A+ 96.67
STAT 420: Methods of Applied Statistics Summer 2020 99.5 A+ 99.5
CS 498: Applied Machine Learning Fall 2020 100 A Extra HW
CS 598: Advanced Bayesian Modeling Spring 2021 96.9 A+ 95
CS 435: Cloud Networking Fall 2021 96.44 A 99
CS 412: Introduction to Data Mining Spring 2022 93.7 A 95
CS 519: Scientific Visualization Summer 2022 97.96 A 98
CS 598: Practical Statistical Learning Fall 2022 97.39 A No A+

About

My learning path to master the foundations of computer science

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published