Open Source Society University (OSSU)

Open Source Society University

Path to a free self-taught education in Computer Science!

Awesome Open Source Society University - Computer Science

Contents

About

This is a solid path for those of you who want to complete a Computer Science course on your own time, for free, with courses from the best universities in the World.

In our curriculum, we give preference to MOOC (Massive Open Online Course) style courses because these courses were created with our style of learning in mind.

Motivation & Preparation

Here are two interesting links that can make all the difference in your journey.

The first one is a motivational video that shows a guy that went through the "MIT Challenge", which consists of learning the entire 4-year MIT curriculum for Computer Science in 1 year.

The second link is a MOOC that will teach you learning techniques used by experts in art, music, literature, math, science, sports, and many other disciplines. These are fundamental abilities to succeed in our journey.

Are you ready to get started?

Curriculum


Introduction to Computer Science

Courses Duration Effort
Introduction to Computer Science - CS50 12 weeks 10-20 hours/week

Math (Mathematical Thinking)

Courses Duration Effort
Effective Thinking Through Mathematics 4 weeks 2-5 hours/week

Program Design

Courses Duration Effort
How to Code: Systematic Program Design - Part 1 5 weeks 8-12 hours/week
How to Code: Systematic Program Design - Part 2 5 weeks 8-12 hours/week
How to Code: Systematic Program Design - Part 3 5 weeks 8-12 hours/week

Math (Calculus and Discrete Math)

Courses Duration Effort
Calculus One 16 weeks 8-10 hours/week
Mathematics for Computer Science 12 weeks 5 hours/week

Algorithms

Courses Duration Effort
Algorithms, Part I 6 weeks 6-12 hours/week
Algorithms, Part II 6 weeks 6-12 hours/week

Programming Paradigms

Courses Duration Effort
Functional Programming Principles in Scala 7 weeks 5-7 hours/week
Object Oriented Programming in Java 6 weeks 4-6 hours/week

Software Testing

Courses Duration Effort
Software Testing 4 weeks 6 hours/week
Software Debugging 8 weeks 6 hours/week

Math (Calculus)

Courses Duration Effort
Calculus Two: Sequences and Series 7 weeks 9-10 hours/week

Software Architecture

Courses Duration Effort
Software Architecture & Design 8 weeks 6 hours/week

Theory

Courses Duration Effort
Intro to Theoretical Computer Science 9 weeks 6 hours/week

Software Engineering

Courses Duration Effort
Software Processes and Agile Practices 4 weeks 6-8 hours/week

Math (Probability)

Courses Duration Effort
Introduction to Probability - The Science of Uncertainty 16 weeks 12 hours/week

Computer Architecture

Courses Duration Effort
Computer Architecture - 5-8 hours/week

Operating Systems

Courses Duration Effort
Operating Systems and System Programming 10 weeks 2-3 hours/week

Computer Networks

Courses Duration Effort
Computer Networks - 4–12 hours/week

Databases

Courses Duration Effort
Databases 12 weeks 8-12 hours/week

Cloud Computing

Courses Duration Effort
Introduction to Cloud Computing 4 weeks 1 hour/week

Math (Linear Algebra)

Courses Duration Effort
Linear Algebra - Foundations to Frontiers 15 weeks 8 hours/week

Cryptography

Courses Duration Effort
Cryptography I 6 weeks 5-7 hours/week
Cryptography II 6 weeks 6-8 hours/week

Security

Courses Duration Effort
Introduction to Cyber Security 8 weeks 3 hours/week

Compilers

Courses Duration Effort
Compilers 9 weeks 6-8 hours/week

Parallel Computing

Courses Duration Effort
Parallel Computer Architecture and Programming 20 weeks -

UX Design

Courses Duration Effort
UX Design for Mobile Developers 6 weeks 6 hours/week

Computer Graphics

Courses Duration Effort
Computer Graphics 6 weeks 12 hours/week

Artificial Intelligence

Courses Duration Effort
Artificial Intelligence 12 weeks 15 hours/week

Machine Learning

Courses Duration Effort
Machine Learning 11 weeks 4-6 hours/week

Natural Language Processing

Courses Duration Effort
Introduction to Natural Language Processing 12 weeks -

Big Data

Courses Duration Effort
Introduction to Big Data 3 weeks 5-6 hours/week

Data Mining

Courses Duration Effort
Pattern Discovery in Data Mining 4 weeks 4-6 hours/week

Internet of Things

Courses Duration Effort
The Internet of Things 4 weeks 2 hours/week

Specializations

After finishing the courses above, start your specializations on the topics that you have more interest.

The following platforms currently offer specializations:

edX: xSeries

Coursera: Specializations

Udacity: Nanodegree

FutureLearn: Collections

keep learning

How to use this guide

Order of the classes

This guide was developed to be consumed in a linear approach. What does this mean? That you should complete one course at a time.

The courses are already in the order you should complete them. Just start in the Introduction to Computer Science section and after finishing the first course, start the next one.

OBS: If the course is not open, do it with the archived resources or wait until next class is open.

How to track and show your progress

  1. Create an account in Trello.
  2. Copy this board to your personal account. See how to copy a board here.

Now that you have a copy of our official board, you just need to pass the cards to the Doing column or Done column as you progress in your study.

We also have labels to help you have more control through the process. The meaning of each of these labels is:

  • Main Curriculum: cards with that label represent courses that are listed in our curriculum.
  • Extra Courses: cards with that label represent courses that was added by the student.
  • Doing: cards with that label represent courses the student is current doing.
  • Done: cards with that label represent courses finished by the student. Those cards should also have the link for at least one project/article built with the knowledge acquired in such course.
  • Section: cards with that label represent the section that we have in our curriculum. Those cards with the Section label are only to help the organization of the Done column. You should put the Course's cards below its respective Section's card.
  • Extra Sections: cards with that label represent sections that was added by the student.

The intention of this board is to provide our students a way to track their progress, and also the ability to show their progress through a public page for friends, family, employers, etc. You can change the status of your board to be public or private.

Should I take all courses?

Yes! The intention is to conclude all the courses listed here!

Duration of the project

It may take longer to complete all courses compared to a regular CS graduation, but I can guarantee you that your reward will be proportional to your extra effort!

You must focus on your habit, and forget about goals. Try to invest 1 ~ 2 hours every day studying this curriculum. If you do this, inevitably you'll finish this curriculum.

See more about "Commit to a process, not a goal" here.

Project Based

Here in OSS University, you do not need to take exams, because we are focused on real projects!

In order to show everyone that you successfully finished a course, you should create a real project.

"What does it mean?"

After you finish a course, you should think about a real world problem that you can solve using the acquired knowledge in the course. You don't need to create a big project, but you must create something to validate and consolidate your knowledge, and also to show to the world that you are capable to create something useful with the concepts that you learned.

The projects of all students will be listed in this file. Submit your project's information in that file after you conclude it.

Put the OSSU-CS badge in the README of your repository! Open Source Society University - Computer Science

You can create this project alone or with other students!

Project Suggestions

  • Projects: A list of practical projects that anyone can solve in any programming language.
  • app-specs: A curated list of applications specifications and implementations to practice new technologies, improve your portfolio and sharpen your skills.
  • FreeCodeCamp: Course that teaches you fullstack JavaScript development through a bunch of projects.
  • JavaScript Projects: List of projects related with the JavaScript Path.

And you should also…

Be creative!

This is a crucial part of your journey through all those courses.

You need to have in mind that what you are able to create with the concepts that you learned will be your certificate and this is what really matters!

In order to show that you really learned those things, you need to be creative!

Here are some tips about how you can do that:

  • Articles: create blog posts to synthesize/summarize what you learned.
  • GitHub repository: keep your course's files organized in a GH repository, so in that way other students can use it to study with your annotations.

Cooperative work

We love cooperative work! Use our channels to communicate with other fellows to combine and create new projects!

Which programming languages should I use?

My friend, here is the best part of liberty! You can use any language that you want to complete the courses.

The important thing for each course is to internalize the core concepts and to be able to use them with whatever tool (programming language) that you wish.

Content Policy

You must share only files that you are allowed to! Do NOT disrespect the code of conduct that you signed in the beginning of some courses.

Be creative in order to show your progress!



开源社会大学(OSSU)data-canonical-src

开源社会大学

  计算机科学免费自学教育之路!

       真棒       开源社大学   

目录

关于

这是您想要自行完成计算机科学课程的实际路径免费,与最好的大学在世界各地的课程。

在我们的课程中,我们优先选择MOOC(Massive Open Online Course)风格课程,因为这些课程是以我们的学习风格创造的。

动机与准备

这里有两个有趣的链接,可以使所有在旅程中的区别。

第一个是一个动机视频,显示了一个穿过麻省理赔挑战的人,其中包括在 1年内学习计算机科学的整个 4年麻省理工学院课程

第二个链接是一个MOOC,它将教你如何使用艺术,音乐,文学,数学,科学,体育和许多其他学科的专家学习技巧。这些是基本能力,以在我们的旅程中取得成功。

您是否准备入门?

课程


计算机科学导论

Courses Duration Effort
Introduction to Computer Science - CS50 12 weeks 10-20 hours/week

数学(数学思考)

Courses Duration Effort
Effective Thinking Through Mathematics 4 weeks 2-5 hours/week

程序设计

Courses Duration Effort
How to Code: Systematic Program Design - Part 1 5 weeks 8-12 hours/week
How to Code: Systematic Program Design - Part 2 5 weeks 8-12 hours/week
How to Code: Systematic Program Design - Part 3 5 weeks 8-12 hours/week

算法

Courses Duration Effort
Algorithms, Part I 6 weeks 6-12 hours/week
Algorithms, Part II 6 weeks 6-12 hours/week

编程范例

Courses Duration Effort
Functional Programming Principles in Scala 7 weeks 5-7 hours/week
Object Oriented Programming in Java 6 weeks 4-6 hours/week

软件测试

Courses Duration Effort
Software Testing 4 weeks 6 hours/week
Software Debugging 8 weeks 6 hours/week

数学(微积分)

Courses Duration Effort
Calculus Two: Sequences and Series 7 weeks 9-10 hours/week

软件体系结构

Courses Duration Effort
Software Architecture & Design 8 weeks 6 hours/week

理论

Courses Duration Effort
Intro to Theoretical Computer Science 9 weeks 6 hours/week

软件工程

Courses Duration Effort
Software Processes and Agile Practices 4 weeks 6-8 hours/week

数学(概率)

Courses Duration Effort
Introduction to Probability - The Science of Uncertainty 16 weeks 12 hours/week

计算机体系结构

Courses Duration Effort
Computer Architecture - 5-8 hours/week

操作系统

Courses Duration Effort
Operating Systems and System Programming 10 weeks 2-3 hours/week

计算机网络

Courses Duration Effort
Computer Networks - 4–12 hours/week

数据库

Courses Duration Effort
Databases 12 weeks 8-12 hours/week

云计算

Courses Duration Effort
Introduction to Cloud Computing 4 weeks 1 hour/week

数学(线性代数)

Courses Duration Effort
Linear Algebra - Foundations to Frontiers 15 weeks 8 hours/week

密码学

Courses Duration Effort
Cryptography I 6 weeks 5-7 hours/week
Cryptography II 6 weeks 6-8 hours/week

安全性

Courses Duration Effort
Introduction to Cyber Security 8 weeks 3 hours/week

编译器

Courses Duration Effort
Compilers 9 weeks 6-8 hours/week

并行计算

Courses Duration Effort
Parallel Computer Architecture and Programming 20 weeks -

UX设计

Courses Duration Effort
UX Design for Mobile Developers 6 weeks 6 hours/week

计算机图形

Courses Duration Effort
Computer Graphics 6 weeks 12 hours/week

人工智能

Courses Duration Effort
Artificial Intelligence 12 weeks 15 hours/week

机器学习

Courses Duration Effort
Machine Learning 11 weeks 4-6 hours/week

自然语言处理

Courses Duration Effort
Introduction to Natural Language Processing 12 weeks -

大数据

Courses Duration Effort
Introduction to Big Data 3 weeks 5-6 hours/week

数据挖掘

Courses Duration Effort
Pattern Discovery in Data Mining 4 weeks 4-6 hours/week

物联网

Courses Duration Effort
The Internet of Things 4 weeks 2 hours/week

专业化

完成上述课程之后,开始您对更感兴趣的话题的专业化。

以下平台目前提供专业服务:

edX: xSeries

Coursera: Specializations

Udacity: Nanodegree

FutureLearn: Collections

继续学习data-canonical-src

如何使用本指南

课程顺序

本指南的开发是以线性方式消费的。这是什么意思?你应该一次完成一门课程。

课程已按照您要完成的顺序 。只需从计算机科学导论部分开始,完成第一个课程后,开始下一步。

OBS:如果课程没有打开,请使用归档资源进行操作,或等到下一课程打开。

如何跟踪并显示进度

  1. Create an account in Trello.
  2. Copy this board to your personal account. See how to copy a board here.

现在你已经有了我们的官方版本的副本,你只需要在你学习进度时把卡传递给 Doing 列或 Done 列。 / p>

我们也有标签,以帮助您更好地控制流程。这些标签的含义是:

  • 主要课程:具有该标签的卡片代表课程中列出的课程。
  • 额外课程:具有该标签的卡片代表学生添加的课程。
  • 执行:带有该标签的卡表示学生目前正在做的课程。
  • 完成:具有该标签的卡片代表学生完成的课程。这些卡还应该具有至少一个项目/文章的链接,该项目/文章是用这种课程获得的知识构建的。
  • Section :具有该标签的卡片代表我们课程中的部分。那些具有 Section 标签的卡只是为了帮助组织Done列。您应该将课程的卡片放在其相应的卡片下。
  • 额外部分:具有该标签的卡片代表学生添加的部分。

该委员会的目的是为我们的学生提供跟踪他们进步的方法,以及通过公共页面向朋友,家人,雇主等展现他们的进展的能力。您可以将您的董事会的状态更改为公开私人

我应该参加所有课程吗?

是!目的是总结所有这里列出的课程。

项目持续时间

与正常的CS毕业相比,完成所有课程可能需要更长时间,但我可以保证您的奖励与您的额外努力成正比

您必须专注于习惯,并且忘记关于目标。尝试每天投入1〜2小时研究这门课程。如果您这样做,不可避免地,您将完成此课程。

See more about "Commit to a process, not a goal" here.

基于项目的

OSS大学中,您需要参加考试,因为我们专注于真实项目

为了向大家显示成功完成课程,您应该创建一个真实项目

"What does it mean?"

完成课程之后,您应该考虑一个真实世界的问题,您可以使用课程中获得的知识来解决问题。您不需要创建一个大型项目,但您必须创建一些验证巩固您的知识,并向世界展示您有能力创建与您学到的概念有用的东西。

所有学生的项目将列在文件中。

将OSSU-CS徽章放在您的存储库的README中! 开源学会学报

您可以单独或与其他学生一起创建此项目!

Project Suggestions

  • 项目:任何人都可以用任何编程语言解决的实际项目列表。
  • 应用规范:策划的应用规范和实施列表,用于实践新技术,改进您的投资组合并锐化您的技能。
  • FreeCodeCamp :课程,教你如何通过一系列项目来完善JavaScript开发。
  • JavaScript项目:与 JavaScript Path

你也应该…

创意!

这是您通过所有这些课程旅程的关键部分。

需要,请注意,您可以使用您学到的概念创建将是您的证书,这是真正重要的< / strong>!

为了显示您真的了解了这些内容,您需要广告素材

以下是有关如何实现的一些提示:

  • 文章:创建博客帖子以综合/总结您学到的内容。
  • GitHub存储库:将您的课程文件保存在GH存储库中,这样其他学生可以使用它来学习注释。

合作工作

我们喜欢合作工作!使用我们的渠道与其他研究员沟通,以组合和创建新项目!

应该使用哪些编程语言?

我的朋友,这里是自由的最好的一部分!您可以使用您想要完成课程的任何语言。

每个课程的重要事情是内部化 核心概念,并且能够使用任何工具(编程语言)你希望。

内容政策

您必须分享只有允许文件! 不要不尊重您在某些课程开始时签名的行为准则

Be creative in order to show your progress!