程帆 chengfan85@gmail.com
沈赟 yun.shen3@gmail.com
前言
著名计算机科学家 Niklaus Emil Wirth (图灵奖得主,Pacal 语言发明者,15/02/1934 – 01/01/2024) 曾经说过一句名言:程序 = 算法 + 数据结构。
对于一个初学者而言,计算机专业的最大的挑战就是编程能力。除了 TCS 的一些 科目,计算机方向的原理都不算太难理解。很多情况下,初学者往往都是知道问题的解 法,但是无法把想法落实到程序,有心无力。编程能力是一个计算机专业的学生的核心 素养,也是初学者面前最大阻碍。提升编程能力,那就需要在算法和数据结构上下大功 夫。这也是最高效的途径。
本教材是《计算导论》的后续,读者需要有基本的编程经验,熟练使用一门高级编 程语言,例如 Python。本教材的主要内容是用 C++来讲授基本的数据结构与算法。基 本工作环境是基于 Linux 命令行下的 GCC 编译器。语言上从基本的 C 开始,逐步讲授 C++(包括现代 C++11)的常用语法。数据结构的内容覆盖 C++的 STL 中的常用数 据结构的原理与实现。算法部分则包含了《算法导论》中的经典算法。在此基础上,读 者被要求去解决大量的算法 (Leet code, Online Judge 等等) 练习题。
虽然现在 AI 可以帮我们写代码,但是我们还是需要具备相当的编码能力和经验, 这样才能更好的利用 AI 这个能力放大器。尤其是编程经验,这只能通过亲自动手解决 各种复杂的问题来积累。本教材会帮助读者进行专业的算法和数据结构训练,从而彻底 解决编码能力低的问题。
本教材是基于作者本人的计算机学习和教育的经验编写的,虽然没有公开在正式 课堂上使用过,但是私下提供给一些交大同学内部训练过,反馈良好。基于计算机学科 开放共享的精神,我决定将此教材公布在 github 公开使用。特此邀请沈赟博士从工业 界的视角提供协助,一起完成该书的撰写。由于个人能力的缺陷,相信本书还有相当的 漏洞,也欢迎读者不吝指出。在 github 评论,或者发邮件 chengfan85@gmail.com.
程帆 2025 年 12 月 20 日