GithubHelp home page GithubHelp logo

osu-cs's Introduction


NB This curriculum is my modified version of the OSSU and Open Source Computer Degree syllabus with extra MIT OCW EECS courses.


The Open Source University (The OSU)

Standing on the shoulders of giants

Your path to a Open Source Computer Science Degree

This is a curated list of free courses from reputable universities like MIT, Stanford, and Princeton that satisfy the same requirements as an undergraduate Computer Science degree, minus general education.

Summary

The OSU curriculum is a complete education in computer science using online materials initially based on the OSSU, MIT OCW and OSCS syllabi. As per the OSSU's mandate, "The courses themselves are among the very best in the world, often coming from Harvard, Princeton, MIT, etc.". The aim being to take the best elements of these open source courses in order to provide the framework for a comprehensive Computer Science Degree syllabus.

Please note, this syllabus is initially forked from the OSSU and Forrest Knight OSCS syllabuses. I've taken what I consider to be the best elements of both and have added other courses from the MIT OCW courselist in alignment with my own interests e.g I replaced the Duke/ San Diego Java courses with MIT courses in Java, C and C++, based on my own interests. (Please note git commit messages for things I have changed and updated - at the moment I'm tweaking courses as I go through the syllabus i.e. I add new courses or swap courses if I feel there is a better or more pertinent version of a course eg swapping out University of San Diego's course on computer graphics for MIT's course or adding extra game development courses from MIT (including OCW notes as well as the lecture video's usually linked to both MIT OCW site and Youtube)).

After having sampled a good chunk of the courses from the afore-mentioned institutions, I ascertained that the content and structure of the MIT courses were the best fit for my educational needs. This was time consuming in the short-run but overall makes sure my time and effort is directed properly.

As such, these following courses/ modules are pertinent to how I want to shape my own syllabus. For example, I am particularly interested in AI, neuroscience, computational biology and mathematics in relation to the study of computer science. Where applicable, the MIT courses are done via edx etc, but please note that not all courses are certificate eligible (as they are sourced from the MIT OCW directory directly).

I've also looked at the 6-3 MIT catalog and the general MIT OCW course list and also this list in order to put together a curriculum that reflects my interests and educational needs (hence a lot of the graduate courses towards the end of the syllabus).

One way to appraoch this OSU Computer Science Degree syllabus, which I highly recommend, is to do what I have done and use an existing open source syllabus (or that of the OSSU or OSCS) that satisfies the demands of a full degree, and create your own Open Source Degree Syllabus and tailor it to your own needs! Refer to Course Info for general details on what is involved in the syllabus.

Introduction to Computer Science

Why study Computer Science?

Title Overview
What Do computer Scientists Do (from lecture 26 that goes over what Computer Scientists do and what careers CS students can go into.)
Intro lecture to Computer Science MIT

Computer Science Basics

Courses School Duration Effort Frequency Notes
Computer Science 101 Stanford - - self-paced introductory course
Intro to Computer Science Harvard 10 weeks 10-20 hours/week self-paced none
Introduction to Computer Science and Programming using Python (Part 1) (alt) MIT 9 weeks 15 hours/week high school algebra
Computational thinking and problem solving Penn 4 weeks 3-6 hours per week self-paced none

CS50 Extension Courses

Courses School Duration Effort Notes
Beyond CS50 Harvardx 1 week 11 lectures CS50
CS50 Web Programming with Python and Javascript Harvardx 12 weeks 6-9 hours per week CS50
CS50 Game Development Harvardx 12 weeks 6-9 hours per week CS50
CS50 Mobile Development with React-Native Harvardx 12 week/11 lectures 6-9 hours per week CS50

Core Programming

Courses School Duration Effort Frequency Notes
Introduction to Computational thinking and data science (Part 2) (alt) MIT 9 weeks 15 hours/week high school algebra
Introduction to Programming in Java MIT 4 weeks 2 sessions per week 1 hour per session Video Lectures, MIT lecture notes
Introduction to C and C++ MIT 4 weeks 2 sessions per week 1 hour per session none
Effective programming in C and C++ MIT 10 lectures 3 sessions per week 2 hours per session
Practical programming in C MIT weeks 3 weeks 5 sessions per week 90 mins per session none

Readings

GIR/ AUS courses

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 These courses are part of my General Institute Requirements (GIRs) and Advanced Undergraduate Subjects (AUS)

Courses School Duration Effort Frequency Notes
Reverse Engineering the Mind: Brain and Cognitive sciences (panel discussion) MIT 80 mins 1 session Panel discussion none
Introduction to Computational Neuroscience MIT 26 lectures 8 problem sets self-paced Basic biology, chemistry, and physics. intro/ review YT playlist
Foundations of Computational and Systems Biology MIT 22 sessions 80 mins per session self-paced (AUS) see MIT OCW for additional paperwork/ coursework
Computation Structures MIT 26 sessions 45-60 mins per session self-paced (GIR) YT playlistCircuits and Electronics
Automata, Computability and Complexity MIT 23 sessions 90 mins per session self-paced none
Theory of Computation MIT 6 assignments - self-paced graduate level
Mathematics for Computer Science MIT 1 13 weeks 5 hours/week Self-paced Calculus 1C
Calculus 1A: Differentiation MIT 12 weeks 6-10 hours/week self-paced pre-calculus
Calculus 1B: Integration MIT 15 weeks 6-10 hours/week self-paced Calculus 1A: Differentiation
Calculus 1C: Coordinate Systems & Infinite Series MIT 8 weeks 6-10 hours/week self-paced Calculus 1B: Integration

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

1: Students struggling with MIT Math for CS can consider taking the Discrete Mathematics Specialization first. It is more interactive but less comprehensive, and it costs money to unlock full interactivity.

Theory

Courses School Duration Effort Frequency Notes
Computer Science: Algorithms, Theory, and Machines Princeton 10 weeks 2-5 hours/week once a month Calculus 1A (all), basic programming
Multicore Programming Primer MIT 31 sessions self-paced - MIT OCW lecture notes, YT video lectures
Algorithms, Part I Princeton 6 weeks 6-12 hours/week once a month Computer Science: Algorithms, Theory, and Machines
Algorithms, Part II Princeton 6 weeks 6-12 hours/week once a month Algorithms, Part I

Applications

Courses School Duration Effort Notes
Databases Stanford 12 weeks 8-12 hours/week some programming, basic CS
Machine Learning Stanford 11 weeks 4-6 hours/week linear algebra
Creating Video Games MIT 45 sessions self-paced MIT OCW, YT video lectures
Computer Graphics MIT self-paced self-paced video lectures/ MIT OCW lecture notes / C++ or Java, linear algebra
Cryptography I Stanford 6 weeks 5-7 hours/week linear algebra, probability

Auxiliary CS courses

Courses School Duration Effort Frequency Notes
Linux Command Line Basics Udacity 1 week 5 hours/week self-paced none
The Unix Workbench JHU 4 weeks 4 hours/week once a month none
Automated Software Testing(Alt) TUDelft 5 weeks 3-5 hours per week self-paced none
UML Class Diagrams for Software Engineering Ku Leuven 3 weeks 4-5 hours per week self-paced none
Kotlin for Java developers Jetbrains 19 hours 7 hours per week self-paced Java basics
Building Scalable Java Microservices with Spring Boot and Spring Cloud Google Cloud 15 hours 6-8 hours per week self-paced Basic Java
Parallel, Concurrent, and Distributed Programming in Java Specialization Rice 2 months 10 hours per week self-paced Basic Java

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 School Duration Effort Notes
Compilers Stanford 9 weeks 6-8 hours/week none
Software Debugging Udacity 8 weeks 6 hours/week Python, object-oriented programming
Software Testing Udacity 4 weeks 6 hours/week Python, programming experience
LAFF - On Programming for Correctness UT of Austin 7 weeks 6 hours/week linear algebra
Introduction to Parallel Programming (alt) Udacity 12 weeks - C, algorithms
Software Architecture & Design Udacity 8 weeks 6 hours/week software engineering in Java
Building scalable Java Microservices Google Cloud 3 weeks 6-8 hours per week Prior Java experience

Math pre-requisites

Courses School Duration Effort Frequency Notes
Introduction to Mathemetical Thinking Stanford 9 Weeks 23 hours Self-paced
Precalculus ASU 15 weeks 9-10 hours per week - high school math
Essence of Calculus YT - - - high school math
Essence of Linear Algebra YT - - - pre-calculus
Linear Algebra - Foundations to Frontiers (alt) UT of Austin 15 weeks 8 hours/week - Essence of Linear Algebra
Mathematical Thinking in Computer Science UC San Diego 6 weeks 2-5 hours/week once a month none

Advanced math

Topics covered: parametric equations polar coordinate systems multivariable integrals multivariable differentials probability theory and more

Courses School Duration Effort Notes
Multivariable Calculus MIT 13 weeks 12 hours/week MIT Calculus 1C
Introduction to Probability - The Science of Uncertainty MIT 18 weeks 12 hours/week Multivariable Calculus

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 School Duration Effort Notes
Introduction to Logic Stanford 10 weeks 4-8 hours/week set theory
Automata Theory Stanford 7 weeks 10 hours/week discrete mathematics, logic, algorithms
Computational Geometry TsingHau University 16 weeks 8 hours/week algorithms, C++
Introduction to Formal Concept Analysis NRU o HE 6 weeks 4-6 hours/week logic, probability
Game Theory Stanford 8 weeks x hours/week mathematical thinking, probability, calculus

Specializations

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.

Refine this list once specialisation/ final year project is chosen NB: This list is a refelction of my own specialisation interests (please refer to EDX/ Coursera/ MIT OCW for more specialisations)

AI/ ML route

Courses Duration Effort Notes
Machine Learning (Specialisation) 8 months 7 hours per week Data clustering algorithms, machine learning, classification algorithms
Deep Learning (Specialisation) 3 months 11 hours per week tensorflow, convolutional neural network, artificial neural network, deep learning
Advanced Data Science with IBM (Specialisation) 2 months 14 hours per week data science, IOT, deep learning, Apache Spark
IBM AI Engineering (Professional Certificate) 2 months 12 hours per week data science, deep learning, artificial intelligence, machine learning
IBM Applied Engineering (Professional Certificate) 2 months 13 hours per week data science, deep learning, artificial intelligence, machine learning, Watson AI
Advanced Machine Learning (Specialisation) Flexible set your own deadlines

Game dev/ Unity route

Courses Duration Effort Notes
C# Programming for Unity Game Development (Specialisation) 5 months 6 hours per week video game development, C#, Unity, game programming
Unity 3D Artist (Specialisation) 4 months 4 hours per week asset creation and management, light, reflection and post processing effects, scene interactions, character setup and animation
Unity XR: How to build AR and VR apps 4 months 5 hours per week xr, ar, vr, mr, mobile apps, hand-held ar

Blockchain route

Courses Duration Effort Notes
Blockchain - University of California, Irvine 2 months 9 hours per week Beginner level
Blockchain - University of Buffalo 2 months 12 hours per week smart contract , ethereum , blockchains , solidity
Blockchain revolution for the enterprise 2 months 12 hours per week

osu-cs's People

Contributors

sjkingdev avatar

Stargazers

Rowanelizabeth avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.