Skip to content

mzh-lin/Computer-Science

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 

Repository files navigation

Computer-Science

It is a complete education in computer science using online materials

To-Do List

Curriculum version:8.0.0(seeCHANGELOG)

Intro CS

Introduction to Programming

**Topics covered**:`simple programs` `simple data structures`
Courses Effort Prerequisites Status
Python for Everyone 58 hours none Unfinished
Fundamentals of Computing 138 hours high school mathematics Unfinished

Introduction to Computer Science

Topics coveredcomputation imperative programming basic data structures and algorithms and more

Courses Duration Effort Prerequisites Status
Introduction to Computer Science and Programming using Python(alt) 9 weeks 15 hours/week high school algebra Unfinished

Core CS

Core programming

Courses Duration Effort Prerequisites Status
How to Code - Simple Data 7 weeks 8-10 hours/week none Unfinished
How to Code - Complex Data 6 weeks 8-10 hours/week How to Code: Simple Data Unfinished
Software Construction - Data Abstraction 6 weeks 8-10 hours/week How to Code - Complex Data Unfinished
Software Construction - Object-Oriented Design 6 weeks 8-10 hours/week Software Construction - Data Abstraction Unfinished
Programming Languages, Part A 4 weeks 8-16 hours/week recommended: Java, C Unfinished
Programming Languages, Part B 3 weeks 8-16 hours/week Programming Languages, Part A Unfinished
Programming Languages, Part C 3 weeks 8-16 hours/week Programming Languages, Part B Unfinished

Readings

Core math

**Topics covered**: `linear transformations` `matrices` `vectors` `mathematical proofs` `number theory` `differential calculus` `integral calculus` `sequences and series` `discrete mathematics` `basic statistics` `O-notation` `graph theory` `vector calculus` `discrete probability` `and more`
Courses Duration Effort Prerequisites Status
Essence of Linear Algebra - - pre-calculus Unfinished
Linear Algebra - Foundations to Frontiers (alt) 15 weeks 8 hours/week Essence of Linear Algebra Unfinished
Calculus 1A: Differentiation 13 weeks 6-10 hours/week pre-calculus Unfinished
Calculus 1B: Integration 13 weeks 5-10 hours/week Calculus 1A Unfinished
Calculus 1C: Coordinate Systems & Infinite Series 13 weeks 5-10 hours/week Calculus 1B Unfinished
Mathematics for Computer Science 13 weeks 5 hours/week Calculus 1C Unfinished

Core Sysytems

**Topics covered**: `procedural programming` `manual memory management` `boolean algebra` `gate logic` `memory` `computer architecture` `assembly` `machine language` `virtual machines` `high-level languages` `compilers` `operating systems` `network protocols` `and more`
Courses Duration Effort Additional Text / Assignments Prerequisites Status
Introduction to Computer Science - CS50 (alt) 12 weeks 10-20 hours/week After the sections on C, skip to the next course. Why? introductory programming Unfinished
Build a Modern Computer from First Principles: From Nand to Tetris (alt) 6 weeks 7-13 hours/week - C-like programming language Unfinished
Build a Modern Computer from First Principles: Nand to Tetris Part II 6 weeks 12-18 hours/week - one of these programming languages, From Nand to Tetris Part I Unfinished
Introduction to Computer Networking 8 weeks 4–12 hours/week Assignment 1 Assignment 2 Assignment 3 Assignment 4 algebra, probability, basic CS Unfinished
ops-class.org - Hack the Kernel 15 weeks 6 hours/week Replace course textbook with Operating Systems: Three Easy Pieces algorithms Unfinished

Core theory

**Topics covered**: `divide and conquer` `sorting and searching` `randomized algorithms` `graph search` `shortest paths` `data structures` `greedy algorithms` `minimum spanning trees` `dynamic programming` `NP-completeness` `and more`
Courses Duration Effort Prerequisites Status
Algorithms: Design and Analysis, Part I 8 weeks 4-8 hours/week any programming language, Mathematics for Computer Science Unfinished
Algorithms: Design and Analysis, Part II 8 weeks 4-8 hours/week Part I Unfinished

Core applications

Topics covered: Agile methodology REST software specifications refactoring relational databases transaction processing data modeling neural networks supervised learning unsupervised learning OpenGL raytracing block ciphers authentication public key encryption and more

Courses Duration Effort Prerequisites Status
Databases 12 weeks 8-12 hours/week some programming, basic CS Unfinished
Machine Learning 11 weeks 4-6 hours/week linear algebra Unfinished
Computer Graphics 6 weeks 12 hours/week C++ or Java, linear algebra Unfinished
Cryptography I 6 weeks 5-7 hours/week linear algebra, probability Unfinished
Software Engineering: Introduction 6 weeks 8-10 hours/week Software Construction - Object-Oriented Design Unfinished
Software Development Capstone Project 6-7 weeks 8-10 hours/week Software Engineering: Introduction Unfinished

Advanced CS

After completing every required course in Core CS, students should choose a subset of courses from Advanced CS based on interest. Not every course from a subcategory needs to be taken. But students should take every course that is relevant to the field they intend to go into.

The Advanced CS study should then end with one of the Specializations under Advanced applications. A Specialization's Capstone, if taken, may act as the Final project, if permitted by the Honor Code of the course. If not, or if a student chooses not to take the Capstone, then a separate Final project will need to be done to complete this curriculum.

Advanced programming

Topics covered: debugging theory and practice goal-oriented programming GPU programming CUDA parallel computing object-oriented analysis and design UML large-scale software architecture and design and more

Courses Duration Effort Prerequisites Status
Compilers 9 weeks 6-8 hours/week none Unfinished
Software Debugging 8 weeks 6 hours/week Python, object-oriented programming Unfinished
Software Testing 4 weeks 6 hours/week Python, programming experience Unfinished
LAFF - On Programming for Correctness 7 weeks 6 hours/week linear algebra Unfinished
Introduction to Parallel Programming (alt) 12 weeks - C, algorithms Unfinished
Software Architecture & Design 8 weeks 6 hours/week software engineering in Java Unfinished

Advanced math

**Topics covered**: `parametric equations` `polar coordinate systems` `multivariable integrals` `multivariable differentials` `probability theory` `and more`
Courses Duration Effort Prerequisites Status
Multivariable Calculus 13 weeks 12 hours/week MIT Calculus 1C Unfinished
Introduction to Probability - The Science of Uncertainty 18 weeks 12 hours/week Multivariable Calculus Unfinished

Advanced systems

Topics covered: digital signaling combinational logic CMOS technologies sequential logic finite state machines processor instruction sets caches pipelining virtualization parallel processing virtual memory synchronization primitives system call interface and more

Courses Duration Effort Prerequisites Status
Reliable Distributed Systems, Part 1 5 weeks 5 hours/week Scala, intermediate CS Unfinished
Reliable Distributed Systems, Part 2 5 weeks 5 hours/week Part 1 Unfinished
Electricity and Magnetism, Part 11 7 weeks 8-10 hours/week calculus, basic mechanics Unfinished
Electricity and Magnetism, Part 2 7 weeks 8-10 hours/week Electricity and Magnetism, Part 1 Unfinished
Computation Structures 1: Digital Circuits 10 weeks 6 hours/week electricity, magnetism Unfinished
Computation Structures 2: Computer Architecture 10 weeks 6 hours/week Computation Structures 1 Unfinished
Computation Structures 3: Computer Organization 10 weeks 6 hours/week Computation Structures 2 Unfinished

1 Note: These courses assume knowledge of basic physics. (Why?) If you are struggling, you can find a physics MOOC or utilize the materials from Khan Academy: Khan Academy - Physics

Advanced theory

**Topics covered**: `formal languages` `Turing machines` `computability` `event-driven concurrency` `automata` `distributed shared memory` `consensus algorithms` `state machine replication` `computational geometry theory` `propositional logic` `relational logic` `Herbrand logic` `concept lattices` `game trees` `and more`
Courses Duration Effort Prerequisites Status
Introduction to Logic 10 weeks 4-8 hours/week set theory Unfinished
Automata Theory 7 weeks 10 hours/week discrete mathematics, logic, algorithms Unfinished
Computational Geometry 16 weeks 8 hours/week algorithms, C++ Unfinished
Introduction to Formal Concept Analysis 6 weeks 4-6 hours/week logic, probability Unfinished
Game Theory 8 weeks x hours/week mathematical thinking, probability, calculus Unfinished

Advanced applications

These Coursera Specializations all end with a Capstone project. Depending on the course, you may be able to utilize the Capstone as your Final Project for this Computer Science curriculum. Note that doing a Specialization with the Capstone at the end always costs money. So if you don't wish to spend money or use the Capstone as your Final, it may be possible to take the courses in the Specialization for free by manually searching for them, but not all allow this.
Courses Duration Effort Prerequisites Status
Introduction to Logic 10 weeks 4-8 hours/week set theory Unfinished
Automata Theory 7 weeks 10 hours/week discrete mathematics, logic, algorithms Unfinished
Computational Geometry 16 weeks 8 hours/week algorithms, C++ Unfinished
Introduction to Formal Concept Analysis 6 weeks 4-6 hours/week logic, probability Unfinished
Game Theory 8 weeks x hours/week mathematical thinking, probability, calculus Unfinished

Final project

After you've gotten through all of Core CS and the parts of Advanced CS relevant to you, you should think about a problem that you can solve using the knowledge you've acquired. Not only does real project work look great on a resume, but the project will also validate and consolidate your knowledge. You can create something entirely new, or you can find an existing project that needs help via websites like CodeTriage or First Timers Only.

Another option is using the Capstone project from taking one of the Specializations in Advanced applications; whether or not this makes sense depends on the course, the project, and whether or not the course's Honor Code permits you to display your work publicly. In some cases, it may not be permitted; do not violate your course's Honor Code!

Pro CS

After completing the requirements of the curriculum above, you will have completed the equivalent of a full bachelor's degree in Computer Science, or quite close to one. You can stop in the Advanced CS section, but the next step to completing your studies is to develop skills and knowledge in a specific domain. Many of these courses are graduate-level.

Choose one or more of the following specializations:

These aren't the only specializations you can choose. Check the following websites for more options:

References

https://github.com/ossu/computer-science#pro-cs

About

It is a complete education in computer science using online materials

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors