Skip to content

A free self-taught education in Computer Science!

Notifications You must be signed in to change notification settings

HimoriK/computer-science

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Awesome Open Source Society University - Computer Science

Contents

Summary

Learn Computer Science with a free curated curriculum. There is no easy way to learn this stuff, there are quick ways, yes. Not easy ways though. The quickest way, is to pick up a free book and teach yourself. That's 1 big book, or 3 specialized smaller ones. To prove my point, before you consider going on Coursera, search for a popular programming language here and reviews for the courses you're interested in. Reviews imply Coursera > edX, but online curriculum is limited, as even the best universities in the world have educational issues. MIT content is also outdated. Videos are okay, but attention drifts, while practice lingers. Don't outsource your education or base it on old content. Get a proper book written in (preferably) your style and no fluff. Or pay for a good degree program.

Sequence

The curriculum is designed as follows:
  • Intro CS: for students to try out CS and see if it's right for them
  • Core CS: classes that all majors would be required to take
  • Advanced CS: optional according to the student's interests
  • Final Project: validate knowledge, and be evaluated worldwide

Curriculum


Prerequisites

  • Core CS assumes the student has already taken high school math, including algebra, geometry, and pre-calculus.
  • Advanced CS assumes the student has already taken the entirety of Core CS and is knowledgeable enough now to decide which electives to take.
  • Note that Advanced systems assumes the student has taken a basic physics course (e.g. AP Physics in high school).

Intro CS

Introduction to Programming

If you've never written a for-loop, or a string in programming, start here.

Courses Duration Effort
Python for Everybody 10 weeks 10 hours/week

Introduction to Computer Science

This course will introduce you to the world of computer science. Students who have been introduced to programming, either from the courses above or through study elsewhere, should take this course for a flavor of the material to come. If you finish the course curious, Computer Science is likely for you!

Topics covered: computation imperative programming basic data structures and algorithms etc

Courses Duration Effort
Python Programming Primer or The Coder's Apprentice 10 weeks 10 hours/week

Core CS

All coursework under Core CS is required, unless otherwise indicated.

Core programming

Topics covered: functional programming unit testing object-oriented design static & dynamic types etc

Books
Learn a bit of Python, focus on learning C as it's concepts can be applied to other languages and most OS are based on it, including Windows and Linux. When you look into the inter-workings of a program, you will see either C or assembly. Newer languages are basically fancy C with new implementations. However it's good to know a bunch so you aren't stuck to one language's features or limited codebase.
'C/C++' aren't the same
Computer Science I
Algorithms and Course *Optional
Data Structures and Course
Intro to Compilers and Language Design or LittleOSBook

Core math

Discrete math (Math for CS) is a prerequisite and closely related to the study of algorithms and data structures. Calculus both prepares students for discrete math and helps students develop mathematical maturity.

Topics covered: discrete mathematics mathematical proofs basic statistics O-notation discrete probability more math

Courses Duration Effort Notes
Calculus I-II 13 weeks 6-10 hours/week high school math
Calculus III 6 weeks 5-10 hours/week
Discrete Math 10 weeks 5 hours/week Part 2

CS Tools

Practice over theory.

Topics covered: terminals and shell scripting cli environments version control

Courses Duration Effort
Optional: The Missing Semester of Your CS Education 2 weeks 12 hours/week

Core systems

Topics covered: memory assembly virtual machines compilers operating systems network protocols

Courses Duration Effort Additional Text
Computer Networking: a Top-Down Approach 8 weeks 4–12 hours/week Computer Networks

Core theory

Topics covered: sorting and searching shortest paths data structures dynamic programming

Core security

Topics covered Secure Design Defensive Programming Threats and Attacks Network Security Cryptography and more

Courses Duration Effort Prerequisites
Cybersecurity Fundamentals or this 8 weeks 10-12 hours/week
The Art of Memory Forensics 6 weeks 7-10 hours/week

Core applications

Topics covered: refactoring data modeling neural networks un/supervised learning OpenGL ray tracing

Courses Duration Effort Prerequisites
Databases: Introduction 2 weeks 10 hours/week SQL-101 & Foundations
Machine Learning 11 weeks 9 hours/week
Computer Graphics 6 weeks 12 hours/week OpenGL #Optional OGLdev

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. Students should take every course that is relevant to the field they intend to go into.

Advanced programming

Topics covered: debugging theory and practice goal-oriented programming parallel computing

Courses Duration Effort
Parallel Programming 4 weeks 6-8 hours/week
OS Dev 8 weeks 6-8 hours/week

Advanced systems

Topics covered: digital signaling combinational logic sequential logic finite state machines virtualization parallel processing virtual memory and more

Courses Duration Effort
Computer Architecture 10 weeks 6 hours/week

Advanced Information Security

Courses Duration Effort Prerequisites
Digital Forensics Concepts 3 weeks 2-3 hours/week Core Security

Advanced math

Courses Duration Effort Prerequisites
Essence of Linear Algebra - - high school math
Introduction to Applied Linear Algebra 14 weeks 12 hours/week corequisite: Essence of Linear Algebra
Introduction to Number Theory 14 weeks 12 hours/week
Introduction to Formal Logic 10 weeks 4-8 hours/week Set Theory
Probability 15 weeks 5-10 hours/week

Final project

This curriculum is project-focused.

After you've gotten through all of Core CS and Advanced CS relevant to you, work on a real project and showcase your skills to employers. You can create any project, or find an existing one via websites like CodeTriage or First Timers Only.

Here are example project-oriented programs.

Courses Duration Effort Prerequisites
Fullstack Open 12 weeks 15 hours/week programming
Modern Robotics (Specialization) 26 weeks 3 hours/week physics, linear algebra, calculus, linear ordinary differential equations
Cloud Computing (Specialization) 30 weeks 2-6 hours/week C++ programming
Data Science (Specialization) 43 weeks 1-6 hours/week none
Game Design and Development with Unity 2020 (Specialization) 6 months 5 hours/week programming, interactive design

About

A free self-taught education in Computer Science!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages