Skip to content

Commit

Permalink
[COURSE] Harvard CS50P, MIT6.006, and MIT6.046 (#387)
Browse files Browse the repository at this point in the history
* Typo fixed

* Add MIT 6.006

* Add MIT 6.006 (En)

* Add MIT 6.046

* Add MIT 6.046

* Add MIT 6.006 (en)

* Add MIT 6.006 (en)

* Add MIT 6.046 (en)

* Add Harvard CS50P

* Add Harvard CS50P

* Add Harvard CS50P(En)

* MIT Missing Semester timeline

* CS50P added

* Algorithms related courses added

* Space added
  • Loading branch information
taylover2016 authored Jan 18, 2023
1 parent afa5d5a commit af82c1f
Show file tree
Hide file tree
Showing 9 changed files with 133 additions and 4 deletions.
9 changes: 7 additions & 2 deletions docs/CS学习规划.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
学会提问:也许你会惊讶,提问也算计算机必备技能吗,还放在第一条?我觉得在开源社区中,学会提问是一项非常重要的能力,它包含两方面的事情。其一是会变相地培养你自主解决问题的能力,因为从形成问题、描述问题并发布、他人回答、最后再到理解回答这个周期是非常长的,如果遇到什么鸡毛蒜皮的事情都希望别人最好远程桌面手把手帮你完成,那计算机的世界基本与你无缘了。其二,如果真的经过尝试还无法解决,可以借助开源社区的帮助,但这时候如何通过简洁的文字让别人瞬间理解你的处境以及目的,就显得尤为重要。推荐阅读[提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md)这篇文章,这不仅能提高你解决问题的概率和效率,也能让开源社区里无偿提供解答的人们拥有一个好心情。

[MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md) 这门课覆盖了这些工具中绝大部分,而且有相当详细的使用指导,强烈建议小白学习。
[MIT-Missing-Semester](编程入门/MIT-Missing-Semester.md) 这门课覆盖了这些工具中绝大部分,而且有相当详细的使用指导,强烈建议小白学习。不过需要注意的一点是,在课程中会不时提到一些与开发流程相关的术语。因此推荐至少在学完计算机导论级别的课程之后进行学习。

[翻墙](必学工具/翻墙.md):由于一些众所周知的原因,谷歌、GitHub 等网站在大陆无法访问。然而很多时候,谷歌和 StackOverflow 可以解决你在开发过程中遇到的 99% 的问题。因此,学会翻墙几乎是一个内地 CSer 的必备技能。(考虑到法律问题,这个文档提供的翻墙方式仅对拥有北大邮箱的用户适用)。

Expand Down Expand Up @@ -145,6 +145,7 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是

#### Python

- [CS50P: CS50's Introduction to Programming with Python](编程入门/CS50P.md)
- [Harvard CS50: This is CS50x](编程入门/CS50.md)
- [UCB CS61A: Structure and Interpretation of Computer Programs](编程入门/CS61A.md)

Expand Down Expand Up @@ -179,7 +180,11 @@ IDE (Integrated Development Environment):集成开发环境,说白了就是

### 数据结构与算法

算法是计算机科学的核心,也是几乎一切专业课程的基础。如何将实际问题通过数学抽象转化为算法问题,并选用合适的数据结构在时间和内存大小的限制下将其解决是算法课的永恒主题。如果你受够了老师的照本宣科,那么我强烈推荐伯克利的 [UCB CS61B: Data Structures and Algorithms](数据结构与算法/CS61B.md) 和普林斯顿的 [Coursera: Algorithms I & II](数据结构与算法/Algo.md),这两门课的都讲得深入浅出并且会有丰富且有趣的编程实验将理论与知识结合起来。此外,对一些更高级的算法以及 NP 问题感兴趣的同学可以学习伯克利的算法设计与分析课程 [UCB CS170: Efficient Algorithms and Intractable Problems](数据结构与算法/CS170.md)
算法是计算机科学的核心,也是几乎一切专业课程的基础。如何将实际问题通过数学抽象转化为算法问题,并选用合适的数据结构在时间和内存大小的限制下将其解决是算法课的永恒主题。如果你受够了老师的照本宣科,那么我强烈推荐伯克利的 [UCB CS61B: Data Structures and Algorithms](数据结构与算法/CS61B.md) 和普林斯顿的 [Coursera: Algorithms I & II](数据结构与算法/Algo.md),这两门课的都讲得深入浅出并且会有丰富且有趣的编程实验将理论与知识结合起来。

以上两门课程都是基于 Java 语言,如果你想学习 C/C++ 描述的版本,可以参考斯坦福的数据结构与基础算法课程 [Stanford CS106B/X: Programming Abstractions](编程入门/CS106B_CS106X.md)。偏好 Python 的同学可以学习 MIT 的算法入门课 [MIT 6.006: Introduction to Algorithms](数据结构与算法/6.006.md)

对一些更高级的算法以及 NP 问题感兴趣的同学可以学习伯克利的算法设计与分析课程 [UCB CS170: Efficient Algorithms and Intractable Problems](数据结构与算法/CS170.md) 或者 MIT 的高阶算法 [MIT 6.046: Design and Analysis of Algorithms](数据结构与算法/6.046.md)

### 软件工程

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# The Information Theory, Patter Recognition, and Neural Networks
# The Information Theory, Pattern Recognition, and Neural Networks

## Descriptions

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# The Information Theory, Patter Recognition, and Neural Networks
# The Information Theory, Pattern Recognition, and Neural Networks

## 课程简介

Expand Down
20 changes: 20 additions & 0 deletions docs/数据结构与算法/6.006.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# MIT 6.006: Introduction to Algorithms

## Descriptions

- Offered by: MIT
- Prerequisites: Introductory level courses of programming (CS50/CS61A/CS106A or equivalent)
- Programming Languages: Python
- Difficulty: 🌟🌟🌟🌟🌟
- Class Hour: 100 hours+

Probably the most precious course from the EECS department of MIT. Taught by Erik Demaine, one of the geniuses in Algorithms.

Compared with CS106B/X (Data structures and algorithms using C++), 6.006 emphasizes the algorithms more. It also covers several classical data structures such as AVL trees. You may use it to learn more about algorithms after CS106B/X.

## Course Resources

- Course Website: [Fall 2011](https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011/)
- Recordings: [Fall 2011](https://www.bilibili.com/video/BV1b7411e7ZP)
- Textbooks: Introduction to Algorithms (CLRS)
- Assignments: [Fall 2011](https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011/pages/assignments/)
20 changes: 20 additions & 0 deletions docs/数据结构与算法/6.006.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# MIT 6.006: Introduction to Algorithms

## 课程简介

- 所属大学:MIT
- 先修要求:计算机导论(CS50/CS61A or equivalent)
- 编程语言:Python
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时:100h+

MIT-EECS 系的瑰宝。授课老师之一是算法届的奇才 Erik Demaine. 相比较于斯坦福的 [CS106B/X](../编程入门/CS106B_CS106X.md)(基于 C++ 的数据结构与算法课程),该课程更侧重于算法方面的详细讲解。课程也覆盖了一些经典的数据结构,如 AVL 树等。个人感觉在讲解方面比 CS106B 更加详细,也弥补了 CS106B 在算法方面讲解的不足。适合在 CS106B 入门之后巩固算法知识。

不过该课程也是出了名的难,大家需要做好一定的心理准备。

## 课程资源

- 课程网站:[Fall 2011](https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011/)
- 课程视频:[Fall 2011](https://www.bilibili.com/video/BV1b7411e7ZP)
- 课程教材:Introduction to Algorithms (CLRS)
- 课程作业:[Fall 2011](https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011/pages/assignments/)
22 changes: 22 additions & 0 deletions docs/数据结构与算法/6.046.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# MIT 6.046: Design and Analysis of Algorithms

## Descriptions

- Offered by: MIT
- Prerequisites: Introductory level courses of Algorithms (6.006/CS61B/CS106B/CS106X or equivalent)
- Programming Languages: Python
- Difficulty: 🌟🌟🌟🌟🌟
- Class Hour: 100 hours+

Part 2 of the MIT Algorithms Trilogy. Taught by Erik Demaine, Srini Devadas, and Nancy Lynch.

Compared with 6.006 where you just learn and use the algorithms directly, in 6.046 you will be required to learn a methodology to "Design and analyze" algorithms to solve certain problems. There are few programming exercises in this course, and most of the assignmnets are about proposing an algorithm and do some mathematical proofs. Therefore, it would be much harder than 6.006.

Part 3 of the MIT Algorithms Trilogy is 6.854 Advanced Algorithms. But for the most of the exercises you'll encounter in tests and job-hunting, 6.046 is definitely enough.

## Course Resources

- Course Website: [Spring 2015](https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015/)
- Recordings: [Spring 2015](https://www.bilibili.com/video/BV1A7411E737)
- Textbooks: Introduction to Algorithms (CLRS)
- Assignments: [Spring 2015](https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015/pages/assignments/)
22 changes: 22 additions & 0 deletions docs/数据结构与算法/6.046.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# MIT 6.046: Design and Analysis of Algorithms

## 课程简介

- 所属大学:MIT
- 先修要求:算法入门(6.006/CS61B/CS106B/CS106X or equivalent)
- 编程语言:Python
- 课程难度:🌟🌟🌟🌟🌟
- 预计学时:100h+

6.006的后续课程。授课老师依旧是 Erik Demaine 和 Srini Devadas,此外还有一位新老师 Nancy Lynch.

相比较于“现学现用”的6.006,6.046更加侧重于如何运用课上所学到的内容举一反三,设计出一套完备的算法并能够证明该算法能解决相应的问题。虽然该课程在板书以及作业中的编程语言为 Python,但基本上没有编程作业;绝大部分的作业都是提出要求,然后需要学生进行算法设计以及合理性证明。所以该课程的难度又提高了一大截:)

在该门课程后还有一门 6.854 高级算法,但对于绝大多数考试以及应聘来说,学完该课程基本上已经能覆盖99%的题目了。

## 课程资源

- 课程网站:[Spring 2015](https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015/)
- 课程视频:[Spring 2015](https://www.bilibili.com/video/BV1A7411E737)
- 课程教材:Introduction to Algorithms (CLRS)
- 课程作业:[Spring 2015](https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015/pages/assignments/)
20 changes: 20 additions & 0 deletions docs/编程入门/CS50P.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# CS50P Introduction to Programming with Python

## Descriptions

- Offered by: Harvard University
- Prerequisites: No prerequisites
- Programming Languages: Python
- Difficulty: 🌟🌟
- Class Hour: 30-40 hours

One of the CS50 families, taught by David J. Malan. You'll learn how to program in Python and "Pythonic" ways to deal with everthing. The course also introduces libraries, code testing, and handling exceptions.

No programming experiences are assumed. So it may be appropriate for anyone who wants to learn Python.

## Course Resources

- Course Website: [2022](https://cs50.harvard.edu/python/2022/)
- Recordings: [2022](https://www.bilibili.com/video/BV1z5411X7wX)
- Textbooks: No textbook required
- Assignments: [2022](https://cs50.harvard.edu/python/2022/)
20 changes: 20 additions & 0 deletions docs/编程入门/CS50P.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# CS50P Introduction to Programming with Python

## 课程简介

- 所属大学:Harvard University
- 先修要求:无
- 编程语言:Python
- 课程难度:🌟🌟
- 预计学时:30-40 hours

CS50的番外篇,依旧由 David J. Malan 授课。在该课程中你将学会 Python 的基础与进阶语法,以及各种 “Pythonic” 的编程方法。此外对于 Python 特色的代码库、代码测试以及错误处理,该课程也会较为深入地探究。

该课程无需任何编程基础,且相对平易近人。适合所有想要快速入门 Python 语言的各阶段学生。

## 课程资源

- 课程网站:[2022](https://cs50.harvard.edu/python/2022/)
- 课程视频:[2022](https://www.bilibili.com/video/BV1z5411X7wX)
- 课程教材:无
- 课程作业:[2022](https://cs50.harvard.edu/python/2022/)

0 comments on commit af82c1f

Please sign in to comment.