Skip to content

Latest commit

 

History

History
397 lines (273 loc) · 39.8 KB

File metadata and controls

397 lines (273 loc) · 39.8 KB

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

❤️💕💕CS自学指南,大学教育无论是深度还是广度都没有办法支撑我们的职业素养,这个板块算是自己在CS学习中额外补充和记录的。个人博客:http://nsddd.top


[TOC]


image-20220906221230859

开源社会大学

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

惊人的 开源社会大学 - 计算机科学

内容

概括

OSSU 课程是使用在线材料进行的**完整的计算机科学教育。**这不仅仅是为了职业培训或职业发展。它适用于那些想要在所有计算学科的基础概念方面有适当、全面的基础的人,以及那些有纪律、意志和(最重要的是!)良好习惯的人,主要是靠自己获得这种教育,但需要支持来自世界各地的学习者社区。

它是根据本科计算机科学专业的学位要求设计的,减去通识教育(非 CS)要求,因为假设大多数学习此课程的人已经在 CS 领域之外接受过教育。这些课程本身是世界上最好的,通常来自哈佛、普林斯顿、麻省理工等,但经过专门选择以满足以下标准。

课程必须

  • 开放报名
  • 定期运行(最好是自定进度,否则每年运行多次)
  • 教学材料和教学原则的质量普遍较高
  • 符合CS 2013的课程标准:计算机科学本科学位课程的课程指南

当没有课程符合上述标准时,课程作业将辅以书籍。当有课程或书籍不适合课程但质量很高时,它们属于extras/coursesextras/readings

组织。课程设计如下:

  • 介绍 CS:让学生尝试 CS,看看它是否适合他们
  • Core CS:大致相当于计算机科学课程的前三年,参加所有专业都必须参加的课程
  • Advanced CS:大致相当于计算机科学课程的最后一年,根据学生的兴趣选修
  • 最终项目:一个让学生验证、巩固和展示他们的知识的项目,以供他们在世界各地的同龄人评估

持续时间。如果您仔细计划并每周投入大约 20 小时的学习时间,则可以在大约 2 年内完成学业。学习者可以使用这个价差 来估计他们的结束日期。制作一份副本并在工作表中输入您的开始日期和每周预计小时数Timeline。当您完成课程时,您可以在Curriculum Data表格中输入您的实际课程完成日期并获得更新的完成估计。

成本。所有或几乎所有课程材料都免费提供。但是,某些课程可能会为要评分的作业/测试/项目收费。请注意,CourseraedX都提供经济援助。

根据您自己的时间和预算决定花费多少或多少;请记住,您不能购买成功!

过程。学生可以单独或分组学习课程,有序或无序。

  • 我们建议您在 Core CS 中完成所有课程,只有在您确定之前已经学习过该材料时才跳过课程。
  • 为简单起见,我们建议按照从上到下的顺序学习课程(尤其是 Core CS),因为它们已经按照先决条件进行了拓扑排序
  • 高级 CS 课程是选修课。选择你想成为专家的一门学科(例如高级编程),然后学习该标题下的所有课程。您也可以创建自己的自定义主题,但我们建议您从社区获得对您选择的主题的验证。

内容政策。如果您打算公开展示您的一些课程作业,则必须仅共享您被允许共享的文件。 不要不尊重您在每门课程开始时签署的行为准则!

如何贡献

获得帮助(关于我们的常见问题和聊天室的详细信息)

社区

  • 我们有一个不和谐的服务器!不和谐这应该是您与其他 OSSU 学生交谈的第一站。你为什么不现在自我介绍一下?加入 OSSU Discord
  • 您还可以通过 GitHub 问题进行交互。如果课程有问题,或者需要对课程进行更改,这里就是开始对话的地方。在这里阅读更多。
  • 订阅我们的时事通讯
  • 开源社会大学添加到您的LinkedIn个人资料中!
  • 注意:在搜索 OSSU 时,您可能会发现一个未维护且已弃用的 firebase 应用程序。您可以放心地忽略它。在常见问题解答中阅读更多信息。

课程

课程版本:(8.0.0变更日志


先决条件

  • Core CS假设学生已经学习过高中数学,包括代数、几何和微积分。
  • 高级 CS假定学生已经学习了全部核心 CS,并且现在知识渊博,可以决定选修哪些选修课。
  • 请注意,高级系统假定学生已经学习了基础物理课程(例如高中的 AP 物理)。

介绍 CS

编程导论

如果您从未编写过 for 循环,或者不知道编程中的字符串是什么,请从这里开始。本课程是自定进度的,允许您调整每周花费的小时数以满足您的需求。

涵盖的主题simple programs simple data structures

培训班 期间 努力 先决条件 讨论
适合所有人的 Python 10 周 10 小时/周 没有任何 聊天

计算机科学导论

本课程将向您介绍计算机科学的世界。已经通过上述课程或通过其他地方的学习了解编程的学生应该参加这门课程,以获得材料的味道。如果您完成课程想要更多,计算机科学可能适合您!

涵盖的主题computation imperative programming basic data structures and algorithms and more

培训班 期间 努力 先决条件 讨论
计算机科学和 Python 编程简介( alt ) 9 周 15 小时/周 高中代数 聊天

核心 CS

除非另有说明,否则核心 CS 下的所有课程都是必需的。

核心编程

涵盖的主题functional programming design for testing program requirements common design patterns unit testing object-oriented design static typing dynamic typing ML-family languages (via Standard ML) Lisp-family languages (via Racket) Ruby and more

How to Code 课程基于教科书How to Design Programs。第一版可在线免费获得,包括问题集和解决方案。鼓励学生完成这些作业。

培训班 期间 努力 先决条件 讨论
如何编码 - 简单数据 7 周 8-10 小时/周 没有任何 聊天
如何编码 - 复杂数据 6 周 8-10 小时/周 如何编码:简单数据 聊天
编程语言,A 部分 5 周 4-8 小时/周 如何编码(听教练 聊天
编程语言,B 部分 3周 4-8 小时/周 编程语言,A 部分 聊天
编程语言,C 部分 3周 4-8 小时/周 编程语言,B 部分 聊天
面向对象设计 4 周 4小时/周 基础Java
设计模式 4 周 4小时/周 面向对象设计
软件架构 4 周 2-5 小时/周 设计模式

核心数学

离散数学(Math for CS)是先决条件,与算法和数据结构的研究密切相关。微积分既为学生准备离散数学,又帮助学生发展数学成熟度。

涵盖的主题discrete mathematics mathematical proofs basic statistics O-notation discrete probability and more

培训班 期间 努力 笔记 先决条件 讨论
微积分 1A:微分( alt ) 13 周 6-10 小时/周 替代课程涵盖本课程和以下 2 门课程 高中数学 聊天
微积分 1B:积分 13 周 5-10 小时/周 - 微积分 1A 聊天
微积分 1C:坐标系和无限级数 6 周 5-10 小时/周 - 微积分 1B 聊天
计算机科学数学替代 13 周 5小时/周 2015/2019 解决方案 2010 解决方案 2005 解决方案 微积分1C 聊天

计算机科学工具

理解理论很重要,但您也需要创建程序。有许多工具被广泛用于简化该过程。现在学习它们,以简化您未来的工作编写程序。

涵盖的主题terminals and shell scripting vim command line environments version control and more

培训班 期间 努力 先决条件 讨论
您的 CS 教育缺少的学期 2周 12 小时/周 - 聊天

核心系统

涵盖的主题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

培训班 期间 努力 附加文本/作业 先决条件 讨论
从第一原理构建现代计算机:从 Nand 到俄罗斯方块( alt ) 6 周 7-13 小时/周 - 类 C 编程语言 聊天
从第一原理构建现代计算机:Nand 到俄罗斯方块第二部分 6 周 12-18 小时/周 - 其中一种编程语言,从 Nand 到俄罗斯方块第一部分 聊天
操作系统:三个简单的部分 10-12 周 6-10 小时/周 - 强大的 C 编程 聊天
计算机网络:自上而下的方法 8 周 4–12 小时/周 Wireshark 实验室 代数、概率、基础 CS 聊天

核心理论

涵盖的主题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

培训班 期间 努力 先决条件 讨论
分而治之、排序和搜索以及随机算法 4 周 4-8 小时/周 任何编程语言,计算机科学数学 聊天
图搜索、最短路径和数据结构 4 周 4-8 小时/周 分而治之、排序和搜索以及随机算法 聊天
贪心算法、最小生成树和动态规划 4 周 4-8 小时/周 图搜索、最短路径和数据结构 聊天
重新审视最短路径、NP 完全问题以及如何处理它们 4 周 4-8 小时/周 贪心算法、最小生成树和动态规划 聊天

核心安全

涵盖的主题 Confidentiality, Integrity, Availability Secure Design Defensive Programming Threats and Attacks Network Security Cryptography and more

培训班 期间 努力 先决条件 讨论
网络安全基础 8 周 10-12 小时/周 - 聊天
安全编码原理 4 周 4小时/周 - 聊天
识别安全漏洞 4 周 4小时/周 - 聊天

选择以下选项之一

培训班 期间 努力 先决条件 讨论
识别 C/C++ 编程中的安全漏洞 4 周 5小时/周 - 聊天
利用和保护 Java 应用程序中的漏洞 4 周 5小时/周 - 聊天

核心应用

涵盖的主题Agile methodology REST software specifications refactoring relational databases transaction processing data modeling neural networks supervised learning unsupervised learning OpenGL ray tracing and more

培训班 期间 努力 先决条件 讨论
数据库:建模和理论 2周 10 小时/周 核心编程 聊天
数据库:关系数据库和 SQL 2周 10 小时/周 核心编程 聊天
数据库:半结构化数据 2周 10 小时/周 核心编程 聊天
机器学习 11 周 4-6 小时/周 线性代数 聊天
计算机图形学 6 周 12 小时/周 C++ 或 Java,线性代数 聊天
软件工程:简介 6 周 8-10 小时/周 核心编程和一个相当大的项目 聊天

核心道德

涵盖的主题Social Context Analytical Tools Professional Ethics Intellectual Property Privacy and Civil Liberties and more

培训班 期间 努力 先决条件 讨论
伦理、技术和工程 9 周 2小时/周 没有任何 聊天
知识产权概论 4 周 2小时/周 没有任何 聊天
数据隐私基础 3周 3小时/周 没有任何 聊天

高级计算机

在完成Core CS 的所有必修课程后,学生应根据兴趣从 Advanced CS 中选择一部分课程。并非子类别中的每门课程都需要学习。但是学生应该参加与他们打算进入的领域相关的每一门课程。

高级编程

涵盖的主题debugging theory and practice goal-oriented programming parallel computing object-oriented analysis and design UML large-scale software architecture and design and more

培训班 期间 努力 先决条件
并行编程 4 周 6-8 小时/周 斯卡拉编程
编译器 9 周 6-8 小时/周 没有任何
Haskell 简介 14 周 - -
立即学习 Prolog!替代)* 12 周 - -
软件调试 8 周 6小时/周 Python,面向对象编程
软件测试 4 周 6小时/周 Python,编程经验

(*) Blackburn、Bos、Striegnitz 的书(从源代码编译,在CC 许可下重新分发)

先进的系统

涵盖的主题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

培训班 期间 努力 先决条件 笔记
计算结构 1:数字电路 alt1 alt2 10 周 6小时/周 Nand2俄罗斯方块II 备用链接包含所有 3 门课程。
计算结构2:计算机体系结构 10 周 6小时/周 计算结构 1
计算结构3:计算机组织 10 周 6小时/周 计算结构 2

进阶理论

涵盖的主题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 game trees and more

培训班 期间 努力 先决条件
计算理论讲座 8 周 10 小时/周 离散数学、逻辑、算法
计算几何 16 周 8 小时/周 算法,C++
博弈论 8 周 3小时/周 数学思维、概率、微积分

高级信息安全

培训班 期间 努力 先决条件
网络安全基础 5 周 4-6 小时/周 了解基本的网络技术
安全治理与合规 3周 3小时/周 -
数字取证概念 3周 2-3 小时/周 核心安全
安全软件开发:需求、设计和重用 7 周 1-2小时/周 核心编程和核心安全
安全软件开发:实施 7 周 1-2小时/周 安全软件开发:需求、设计和重用
安全软件开发:验证和更专业的主题 7 周 1-2小时/周 安全软件开发:实施

高等数学

培训班 期间 努力 先决条件 讨论
线性代数的本质 - - 高中数学 聊天
线性代数 14 周 12 小时/周 并存:线性代数的本质 聊天
数值方法导论 14 周 12 小时/周 线性代数 聊天
逻辑导论 10 周 4-8 小时/周 集合论 聊天
可能性 24 周 12 小时/周 差异化与整合 聊天

最终项目

OSS 大学以项目为中心。每门课程的作业和考试都是为了让您准备好利用您的知识解决现实世界的问题。

在你完成了所有核心 CS 和高级 CS 与你相关的部分之后,你应该考虑一个可以使用你所获得的知识来解决的问题。真实的项目工作不仅在简历上看起来很棒,而且该项目还将验证和巩固您的知识。您可以创建全新的东西,或者您可以通过 CodeTriageFirst Timers Only等网站找到需要帮助的现有项目。

在创建项目方面需要更多指导的学生可以选择使用一系列面向项目的课程。这是一个选项示例(还有更多可用,此时您应该能够识别一个有趣且与您相关的系列):

培训班 期间 努力 先决条件
全栈开放 12 周 15 小时/周 编程
现代机器人(专业) 26 周 2-5 小时/周 大一物理、线性代数、微积分、线性常微分方程
数据挖掘(专业) 30 周 2-5 小时/周 机器学习
大数据(专业) 30 周 3-5 小时/周 没有任何
物联网(专业) 30 周 1-5 小时/周 强大的编程
云计算(专业) 30 周 2-6 小时/周 C++ 编程
数据科学(专业) 43 周 1-6 小时/周 没有任何
Scala 中的函数式编程(专业化) 29 周 4-5小时/周 一年编程经验
使用 Unity 2020 进行游戏设计和开发(专业化) 6个月 5小时/周 编程、交互设计

评估

完成最终项目后:

  • 通过拉取请求将您的项目信息提交给PROJECTS 。
  • 将 OSSU-CS 徽章放入存储库的自述文件中! 开源社会大学 - 计算机科学
    • 降价:[![Open Source Society University - Computer Science](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/ossu/computer-science)
    • HTML:<a href="https://github.com/ossu/computer-science"><img alt="Open Source Society University - Computer Science" src="https://img.shields.io/badge/OSSU-computer--science-blue.svg"></a>
  • 使用我们的社区渠道向您的同学宣布。

征求你的 OSSU 同行的反馈。你不会被传统意义上的“评分”——每个人都有自己的衡量标准来衡量他们认为的成功。评估的目的是作为您向全世界宣布您是计算机科学家的第一个声明,并获得聆听反馈的经验——无论是正面的还是负面的。

最终的项目评估有第二个目的:评估 OSSU 通过其社区和课程是否成功地完成了引导独立学习者获得世界级计算机科学教育的使命。

合作工作

您可以单独或与其他学生一起创建此项目! 我们热爱合作工作!使用我们的渠道与其他伙伴交流以组合和创建新项目!

我应该使用哪种编程语言?

我的朋友,这就是自由最好的部分!您可以使用任何您想要完成最终项目的语言。

重要的是化核心概念并能够将它们与您希望的任何工具(编程语言)一起使用。

恭喜

完成上述课程的要求后,您将完成相当于完整的计算机科学学士学位。恭喜!

你的下一步是什么?可能性是无限的和重叠的:

  • 寻找开发人员的工作!
  • 查看您可以阅读的经典书籍的阅读材料,这些书籍将提高您的技能并扩展您的知识。
  • 加入本地开发者聚会(例如通过meetup.com)。
  • 关注软件开发领域的新兴技术:
    • 通过Elixir探索演员模型,这是一种基于久经考验的 Erlang 虚拟机的新型 Web 函数式编程语言!
    • 通过Rust探索借用和生命周期,Rust是一种无需垃圾收集器即可实现内存和线程安全的系统语言!
    • 通过Idris探索依赖类型系统,这是一种受 Haskell 启发的新语言,对类型驱动开发提供前所未有的支持。

保持学习

行为守则

OSSU 的行为准则

如何展示你的进步

  1. 在Trello中创建一个帐户。
  2. 将此板复制到您的个人帐户。在此处查看如何复制板。

现在您已经拥有了我们的官方板的副本,您只需在学习过程中将卡片传递到Doing列或Done列。

我们还提供标签来帮助您更好地控制整个过程。每个标签的含义是:

  • Main Curriculum:带有该标签的卡片代表我们课程中列出的课程。
  • Extra Resources:带有该标签的卡片代表学生添加的课程。
  • Doing:带有该标签的卡片代表学生当前正在学习的课程。
  • Done:带有该标签的卡片代表学生完成的课程。这些卡片还应该包含至少一个项目/文章的链接,这些项目/文章是利用在此类课程中获得的知识构建的。
  • Section:带有该标签的卡片代表我们课程中的部分。那些带有Section标签的卡片只是为了帮助完成列的组织。您应该将课程卡片放在相应部门卡片的下方。

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

团队

END 链接