Skip to content

Commit

Permalink
[ENHANCE] Add resources for CS106B/X (#627)
Browse files Browse the repository at this point in the history
* add markdown_extensions

* update CPP/CS106B

* fixs are made based on suggestions

---------

Co-authored-by: Andy-xiaokang <21777877404@qq.com>
  • Loading branch information
Andy-xiaokang and Andy-xiaokang committed Jun 16, 2024
1 parent 4a1932f commit 68bcd3b
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 7 deletions.
16 changes: 13 additions & 3 deletions docs/编程入门/cpp/CS106B_CS106X.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,20 @@
- Difficulty: 🌟🌟
- Class Hour: 50-70 hours

CS106B/X are advanced programming courses at Stanford. CS106X is more difficult and in-depth than CS106B, but the main content is similar. Based on programming assignments in C++ language, students will develop the ability to solve real-world problems through programming abstraction. It also covers some simple data structures and algorithms, but is generally not as systematic as a specialized data structures course.
CS106B/X are advanced programming courses at Stanford. CS106X is more difficult and in-depth than CS106B, but the main content is similar. Based on programming assignments in C++ language, students will develop the ability to solve real-world problems through programming abstraction. It also covers some simple data structures and algorithms, but is generally not as systematic as a specialized data structures course.

Some very basic but practical data structures and algorithms: collections, ADT, recursion, BFS, DFS, backtracking, sorting, hash, pointer, linked list, BST, OOP, pass by value, pass by reference, stack allocation, heap allocation, memory management. Additionally, some very useful techniques, such as how to use a debugger to troubleshoot, and how to escape from an initialized maze by reading the content in the debugger in assignment 8.

Like CS61A, code frameworks and test programs are provided. Although not as detailed as the CS61A tests, the assignments also require you to add your own test cases. Each assignment comes with a detailed document that guides you step-by-step to achieve each milestone. In the end, you can observe the results of your data structures and algorithm implementations in the GUI provided by the starter code, which is very rewarding. Each assignment corresponds to very interesting and practical cases, such as the final task of implementing Huffman encoding to compress and decompress files.

## Resources

- Course Website: [CS106B](https://web.stanford.edu/class/cs106b/), [CS106X](https://web.stanford.edu/class/cs106x/)
- Course Website: [CS106B](https://web.stanford.edu/class/cs106b/), [CS106B 2022 winter](https://web.stanford.edu/class/archive/cs/cs106b/cs106b.1224/), [CS106X](https://web.stanford.edu/class/cs106x/)
- Textbook: <https://web.stanford.edu/class/cs106x/res/reader/CS106BX-Reader.pdf>
- Recordings: <https://www.bilibili.com/video/BV1G7411k7jG>
- Recordings: <https://www.bilibili.com/video/BV1G7411k7jG> <https://www.youtube.com/watch?v=FIroM06V2MA&list=PL-h0BZdG_K4kAmsfvAik-Za826pNbQd0d>
- assignments: [CS106B 2022 winter](https://web.stanford.edu/class/archive/cs/cs106b/cs106b.1224/) 9 assignments

## Complementary Resources

@Andy-xiaokang All the resources and assignment implementations used in studying this course are compiled in [Andy-xiaokang/CS106B - GitHub](https://github.com/Andy-xiaokang/CS106B)
about the incompatible libray you can refer to [readme](https://github.com/Andy-xiaokang/CS106B/blob/master/README.md#postscript) and I recommend the video [youtube spring 2015](https://www.youtube.com/watch?v=FIroM06V2MA&list=PL-h0BZdG_K4kAmsfvAik-Za826pNbQd0d)
17 changes: 13 additions & 4 deletions docs/编程入门/cpp/CS106B_CS106X.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,23 @@
- 课程难度:🌟🌟
- 预计学时:50-70 小时

Stanford 的进阶编程课,CS106X 在难度和深度上会比 CS106B 有所提高,但主体内容类似。主要通过 C++ 语言让学生在实际的编程作业里培养通过编程抽象解决实际问题的能力,同时也会涉及一些简单的数据结构和算法的知识,但总体来说没有一门专门的数据结构课那么系统。
Stanford 的进阶编程课,CS106X 在难度和深度上会比 CS106B 有所提高,但主体内容类似。主要通过 C++ 语言让学生在实际的编程作业里培养通过编程抽象解决实际问题的能力,同时也会涉及一些简单的数据结构和算法的知识,但总体来说没有一门专门的数据结构课那么系统。

课程内容包括很多基础但实用的数据结构和算法以及相关概念:collections, ADT, recursion, BFS, DFS, backtracking, sorting, hash, pointer, linked list, BST, OOP, pass by value, pass by reference, stack allocation, heap allocation, memory management。此外课程还会教授一些实用技巧,比如如何使用 debugger 排错,在 assignment8 中你会通过阅读 debugger 中的内容逃出迷宫。

和 CS61A 一样提供代码框架和测试程序,虽然没有 CS61A 测试的那么详细,但是作业中也有要求可以自己添加测试用例。每一个作业都会给出一份详细的文档,一步一步地实现每一个 milestone, 最后便可以在 starter code 给出的 GUI 中观察到自己的数据结构和算法实现的效果,非常有成就感。每一个作业都对应非常有趣又实际的案例,比如最后的任务是实现 huffman encoding 来压缩文件和解压文件。

## 课程资源

- 课程网站:[CS106B](https://web.stanford.edu/class/cs106b/), [CS106X](https://web.stanford.edu/class/cs106x/)
- 课程网站:[CS106B Latest](https://web.stanford.edu/class/cs106b/), [CS106B 2022 winter](https://web.stanford.edu/class/archive/cs/cs106b/cs106b.1224/), [CS106X Latest](https://web.stanford.edu/class/cs106x/)
- 课程教材:<https://web.stanford.edu/class/cs106x/res/reader/CS106BX-Reader.pdf>
- 课程视频:<https://www.bilibili.com/video/BV1G7411k7jG>
- 课程视频:[youtube spring 2015](https://www.youtube.com/watch?v=FIroM06V2MA&list=PL-h0BZdG_K4kAmsfvAik-Za826pNbQd0d), [bilibili 2018 winter](https://www.bilibili.com/video/BV1G7411k7jG)
- 课程作业:详见 [CS106B 2022 winter](https://web.stanford.edu/class/archive/cs/cs106b/cs106b.1224/), 最重要的是9个 assignment

## 资源汇总

@akun0311 在学习这门课中用到的所有资源和作业实现都汇总在 [akun0311/CS106B-X-CS106L - GitHub](https://github.com/akun0311/CS106B-X-CS106L-) 中。
@akun0311 在学习这门课中用到的所有资源和作业实现都汇总在 [akun0311/CS106B-X-CS106L - GitHub](https://github.com/akun0311/CS106B-X-CS106L-) 中。
@Andy-xiaokang 在学习这门课中用到的所有资源和作业实现都汇总在 [Andy-xiaokang/CS106B - GitHub](https://github.com/Andy-xiaokang/CS106B) 中。

关于 assignments 中版本不兼容的问题可以详见 [readme](https://github.com/Andy-xiaokang/CS106B/blob/master/README.md#postscript)
课程视频我推荐 [youtube spring 2015](https://www.youtube.com/watch?v=FIroM06V2MA&list=PL-h0BZdG_K4kAmsfvAik-Za826pNbQd0d) 这个版本,授课激情,并且可以看到老师和学生之间在提问环节的精彩交互(几百名优秀 compiler 的观察总会提出一些有趣的问题)

0 comments on commit 68bcd3b

Please sign in to comment.