Skip to content

Latest commit

 

History

History
146 lines (77 loc) · 7.24 KB

README_zh_CN.md

File metadata and controls

146 lines (77 loc) · 7.24 KB

计算机科学学习笔记

Favicon

我们都是迷失在璀璨梦境中的繁星,不顾一切只为点亮黑暗。

For English version please check here

点击这里阅读笔记

1 目的及背景

当我进入北大的物理学院学习以后,我发现对自己所学的专业兴趣不高。在学习与探索的过程中,我惊喜地发现自己对计算机科学兴趣浓厚。于是,我开始自学计算机相关课程,希望以后能在相关领域有所作为。然而,立志容易成志难。在自学的道路上,我遇到了许多令自己感到迷茫的问题。踌躇不前的我开始怀疑自己是否具备自学能力,也担忧自己能否自学成功。

万幸的是,我及时向自己的一位信科老师求助,老师热情的向我指点迷津,又向我推荐两位特别优秀的学长,让他们向我传授自己如何取得成功的经历。一位学长向我讲述自己在学术研究取得成功的秘诀,另一位学长向我推荐了CS自学指南。老师和学长用他们的倾囊相助,点燃我心中希望之光,我开始了自己的漫漫自学之路。

学习中,我详细地记录了学习笔记。随着笔记内容的不断增多,我突发奇想:“如果能把我所有自学的笔记整合起来,发布在自己的网页上,帮助像自己一样曾经止步不前的同行者,该有多好!”于是,这份笔记就幸运地诞生了,它也许并不向您期许的那样精准完美,但我会竭尽全力使这份笔记内容日渐完美。

2 使用建议

  1. 本笔记的作者非计算机科学专业学生,笔记中难免有错误与疏漏,请您多多包涵!

  2. 本文中部分的图片来自维基百科,出于版权考虑并未对其进行修改,但是其中部分图片没有背景,在夜间模式下阅读效果可能不佳。笔记默认为夜间模式,建议您点击搜索栏左侧的按钮切换至日间模式。

  3. 本笔记在最终结束后会发布pdf文档,包括中文版,您将在release部分看到。

  4. 感谢您的阅读!欢迎各位朋友通过邮箱与我交流。

3 参考列表

以下列表是我在完成这份笔记时所参考的内容。如果有作者的原创作品被使用却未被声明,或者被错误使用,请通过邮件与我联系删除,谢谢。

Topic 1: 数据结构与算法

  1. Algorithms Ⅰ & Ⅱ (Coursera) by Professor Robert Sedgewick & Kevin Wayne.

  2. CS61B: Data Structures and Algorithms (UC Berkeley) by Professor Josh Hug and the rest of CS61B staff.

  3. MIT 6.006: Introduction to Algorithms (MIT) by Professor Erik Demaine, Justin Solomonm, Dr. Jason Ku (Spring 2020).

  4. https://en.wikipedia.org/wiki/Tree_traversal.

  5. By The original uploader was Jasampler at Spanish Wikipedia. - Transferred from es.wikipedia to Commons., Public Domain, https://commons.wikimedia.org/w/index.php?curid=1755344.

  6. https://en.wikipedia.org/wiki/Catalan_number.

Topic 2: C++编程

  1. CS106L: Standard C++ Programming (Stanford University) by Professor Avery Wang, Anna Zeng and the rest of CS106L staff.

  2. CS61B: Data Structures and Algorithms (UC Berkeley) by Professor Josh Hug and the rest of CS61B staff.

  3. CS106B: Programming Abstractions (Stanford University) by Professor Marty Stepp and the rest of CS106B staff.

  4. CS61A: Structure and Interpretation of Computer Programs (UC Berkeley) by Professor John DeNero and the rest of CS61A staff.

  5. https://en.wikipedia.org/wiki/Standard_Template_Library.

  6. https://learn.microsoft.com/en-us/cpp/standard-library/cpp-standard-library-overview?view=msvc-170.

  7. https://en.wikipedia.org/wiki/C%2B%2B_Standard_Library.

  8. https://en.wikipedia.org/wiki/Namespace.

  9. https://en.cppreference.com/w/.

注意:CS61A和CS61B部分内容被用于面向对象编程部分。

Topic 3: Python编程

  1. CS61A: Structure and Interpretation of Computer Programs (UC Berkeley) by Professor John DeNero and the rest of CS61A staff.

  2. https://en.wikipedia.org/wiki/Iterator.

Topic 4: 计算机体系结构

  1. CS61C: Great Ideas in Computer Architecture (UC Berkeley) by Professor Dan Garcia, Lecturer Stephan Kaminsky, Sean Farhat, Jenny Song, Peyrin Kao, and the rest of CS61C staff.

  2. CMU 15-213: Introduction to Computer Systems (Carnegie Mellon University) by Professor Randal E. Briant, David R. O'Hallaron, Brian Railing, Phillip Gibbons, David Varodayan, Mohamed Farag, and the rest of CMU 15-213 staff.

  3. Computer Systems: A Programmer's Perspective (3rd Edition) by Randal E. Bryant & David R. O'Hallaron.

  4. https://en.wikipedia.org/wiki/Byte.

  5. https://en.cppreference.com/w/cpp/language/sizeof.

  6. https://en.wikipedia.org/wiki/Sizeof.

  7. By Aeroid - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=137790829.

  8. https://en.wikipedia.org/wiki/Segmentation_fault.

  9. https://en.wikipedia.org/wiki/Bus_error.

  10. https://en.wikipedia.org/wiki/Floating-point_arithmetic.

Topic 5: 操作系统

  1. CS162: Operating System (UC Berkeley) by Professor John Kubiatowicz and the rest of CS162 staff.

Topic 6: 数据库系统

  1. CS186: Introduction to Database Systems (UC Berkeley) by Professor Alvin Cheung, Joe Hellerstein and the rest of CS186 staff.

Topic 7: Rust编程

  1. CS110L: Safety in Systems Programming (Stanford University) by Ryan Eberhardt, Julio Ballista, Thea Rossman and the rest of CS110L staff.

4 如何使用

笔记中不同颜色对应的含义如下:

  • BlueViolet: 代表不同板块的内容。
  • OrangeRed: 强调重点内容。
  • DarkOrange: 表示定义。
  • Fuchsia: 表示列表中不同内容。
  • LawnGreen: 代表数学证明。
  • IndianRed: 代表示例。

5 想要贡献自己的一份力?

这份笔记致力于帮助更多的人,因此欢迎各种形式的贡献,包括但不限于提出issue,PR!

您可以通过以下方式来帮助提升文档质量:

  1. 提出issue
  2. PR
  3. 通过邮箱与我联系并指出错误:kekeandzeyu@gmail.com

这份笔记使用Writerside完成并发布。如果您不熟悉此软件,你也可以直接提出issue或者通过邮箱与我联系。

这个仓库用来存储发布的html文档;Computer-Science-Study-Notes 仓库 用来存储Writerside编辑时使用的文件。

6 许可证

本笔记遵循MIT License

引用的其他作者的原创内容遵循原作者的许可证。

7 致谢

首先,我要向以上列表中所有教授、助教等表示感谢,感谢他们将自己渊博的知识无私地传授给我们这些初学者,也感谢他们将学习资料面向公众开放,这些宝贵的知识让我受益匪浅、终生难忘。

其次,我要向在自学过程中给予我帮助的师长和学长们表示感谢。

最后,我想把这部分留给我的母亲。感谢她数十年如一日倾尽心血养育我,为我不辞辛劳地默默的付出。在我自学计算机科学过程中,无论我遇到多么大的困难,她都在背后默默的支持我、鼓励我。这个小小的项目显然不能称作为一种“成功”,但是我想把我所有的小成就都归功于她。感谢她一直以来的陪伴与支持!