大一寒假学习推荐

本博客仅代表个人观点,具有强烈的主观因素,仅供参考。

学习建议

对于 C 语言掌握得不错、已经具备一定的编程思维的同学,相信你也会自主地学习下学期的数据结构,因此你的数据结构我觉得可以开学跟着课堂进度即可。在具有整段自习时间的寒假很适合用来掌握某一门其他技术做拓展,这边强烈推荐先学 Python,虽然大三也会开 Python 编程的课,但是这门课早点学绝对是有利的,而且 Python 的序列结构也利于上手 STL 库。Python 被称之为“瑞士军刀”,由于其可以按照大量的第三方库,因此功能非常强大。除了程序设计和软件开发,Python 可以做很多领域的工作,例如数据分析、数据挖掘、机器学习、网络爬虫和网络安全等,如果不做这些也可以写写脚本减轻工作压力。如果你提前学习了 Python,课设可以考虑用面向对象编程实现数据结构,然后用 Python 做课设,因为用了 Python 可以跳过很多“造轮子”的过程,你就有更多的时间做拓展。后期如果想在课外拓展研究其他方向的内容,我相信 Python 也是很有用的工具。

对于上学期跟得上进度的同学,大家通过一学期的学习已经基本掌握了一些编程基础,具备了一些编程思想。由于数据结构比起 C 相对比较难,此处建议大家提前开始学习数据结构。课时太紧上学期没有讲链表,所以下学期开课时多多少少会比较难上手,因此希望大家可以先提前学习减轻下学期的压力。首先可以先学一些 C++ 的语法,通过一些 C++ 的语法可以使 C 语言的很多麻烦事都变得简便,具体学哪些可以参考我的博客——C++面向过程编程。接着希望大家好好对待链表,因为我们后面很多数据结构都是基于链表实现的,可以说链表的掌握程度会在很大程度上影响这门课的掌握情况。提前把链表学好绝对稳赚不赔,对于链表的基操要达到盲写代码的水平,可以通过动笔画图的方式先理解链表的工作原理再学习代码。如果时间有限,我觉得还是要把线性表先学完会比较好一些,我自己是在开课前先在 PTA 上刷了 20 多道链表题再去听课的。有时间的话可以再往后看一些内容,例如栈和队列也可以看一看。

对于 C 语言学习比较吃力的同学,我个人的建议也是先预习数据结构。首先我不是很推荐再去复习 C 语言,因为 C 语言只是个开始,现在再去返工 C 语言战略要义已经很小了。虽然下学期需要用 C 语言实现数据结构,但是数据结构的内容可以反过来帮助你掌握 C 语言。因为一种结构的实现可链式存储也可以顺序存储,顺序结构在 C 语言一般使用数组实现,链式结构需要用到指针实现,定义结构时需要会写结构体。因此把线性表章节提前预习,代码模仿着多写一写,顺序表帮你搞定数组,链表帮你搞定指针,定义结构帮你搞定结构体,数据结构的基操需要用到 3 大基本结构,这不就齐了嘛!通过预习线性表这个章节,不仅能恶补 C 语言的知识,又为下学期的学习减轻压力,就个人而言我非常推荐预习线性表。

数据结构资料推荐

教材

数据结构(C语言版)

这本书是非常经典的教材,编写的逻辑很完善,该有的要素都有,是很多考试的参考书。严蔚敏教授也是清华大学的老教授了,在数据结构方面有很丰富的教学经验,B 站上也找得到严老师的课程。吐槽这本教材的人也比较多,大家可以自行了解,个人比较想吐槽的就是伪代码,有的是没法运行的。这本书有新版(我放的图就是),新版和旧版都没有问题。

数据结构教程(第5版)

武汉大学李春葆教授主编的书,是我们上课选用的教材。我当时这本书由于疫情卡在学校了,所以没有细看,大致翻了一下内容很丰富,代码也样例很多(是能运行的)。

技术书

大话数据结构

个人理解的技术书和教材不同,技术书写出来是给程序员看的。作者程杰自身就是工作在一线的软件工程师,这本书就是他结合自身的理解编写的。语言非常生动,全书都在模仿程老师给大家上课的情景下写的,不想教材那样一眼一眼的非常有趣。无论是样例和图例都很多,个人认为非常适合编程基础较差的同学阅读,之前编程课学得不错的同学也可以用来预习。
网上也有人指出这本书有些地方略为不严谨,不过也有勘误的资料。个人认为作者很尽力地在举例子让这些结构好理解,但是有的地方例子举太过了反倒显得复杂,从图章节之后就有点这种感觉。其次是书中的代码也是伪代码,不过可以搞一份这本书的配套样例代码来跑一跑。这本书也有新版(我放的是旧版),新版和旧版都没有问题。

漫画算法:小灰的算法之旅

程序员小灰是 CSDN 上的博主,写了很多用漫画讲解算法疑难点的博客。在他的漫画中的主角是一只仓鼠,每篇博客开头都会以某种奇怪的理由向老板请假,实则是参加其他公司的面试,每次都是被面试官问倒后引出博客的主题。通过漫画讲解的算法化抽象为具体,使得很多疑难问题变得好理解。最近程序员小灰把他的漫画出书了,感兴趣可以搞一本来学一学。

算法导论

数据结构与算法方面“圣经”级别的存在,搞定这本书就能完全掌握数据结构了。而且这本书是“导论”,所以阅读难度不是很大(狗头),推荐人手一本(。

慕课

数据结构-浙江大学

中国大学 MOOC 上数据结构的经典慕课,由浙大的陈越教授和何钦铭教授主讲,课程体系很完善,难度也比较大一些。课程链接——数据结构

数据结构与算法基础-青岛大学王卓老师

这门课是王卓老师自己录制的 B 站独占的课程,讲解得非常清晰易于理解。由于王老师没有讲解代码,可以用这些视频预习复习,结合课本的代码样例进行学习。课程目录——《数据结构与算法基础》教学视频目录

其他资料

  1. 程序员小灰的博客:高质量的漫画算法博客,通过漫画的方式讲解很多疑难点,可以当做拓展资料阅读;
  2. 数据结构博客清单:我自己写的博客,是开课时我做的学习笔记,由于要交作业写得很认真;
  3. VisuAlgo:数据结构的可视化网页,遇到不理解的结构可以到这个网站上模拟一下,化抽象为具体。

Python 资料推荐

技术书

Python 编程-从入门到实践

这本书我是有细读过的,是一本面向 0 编程基础的 Python 技术书。作者的笔法循循善诱,生动形象读起来向故事一样,不像课本那样文绉绉的,非常适合没有写过任何代码的读者。每个章节都配有一些题目,都不是无的放矢,具有很高的可行性。这里作者并没有深究某个编程语法,然后详尽地展示出与该语法有关的所有内容,而是带领着读者建立基本的编程思想。其实很多老外写的书都有这个特点,并不是为了学习某些知识点而学习,而是真正从我们想要什么,想要通过编程实现什么出发,这种编程的思路是值得感受的。
本书最大的特点就是分为了 2 个部分,第一个部分仔细研究后,就能够上手 Python 的编程了,阅读后适当写点题目更佳。第二部分是 3 个小项目,分别是游戏编程、数据可视化和 WEB 编程,读完第一部分后可以跟着作者做这 3 个小项目,可以马上做个能看的玩具出来。但是我本人认为第二部分可以不看,因为学习 Python 很多时候是已经确定自己要用 Python 完成什么功能,那 3 个小项目只是起到练练手的作用,可以在读完第一部分后紧接着学习自己想要研究的方向的库。

Python 编程快速上手-让繁琐工作自动化

这本书我没有细读,但是也大致翻了一下。这本书的样例代码很多,图例也很多,按照模块总结编程技术进行讲解。老外写的书嘛,这本书也没有文绉绉的,每个语法点都是为了实现某个功能而讲解的。相比《从入门到实践》,这本书讲解会更为详细一些,后面的章节也更为实用,很适合当一本工具书来用。例如正则表达式、文件读写、简易的爬虫、操作 Excel 和 GUI 等,都是可以用于帮助繁琐的工作能够自动化的技术。

慕课

Python 程序设计与应用-集美大学

视频制作质量很高,内容丰富,讲解也很有条理,跟着学习可以打下很好的编程基础。课程链接——Python 程序设计与应用

Python 语言程序设计-北京理工大学

中国大学 MOOC 上的高人气慕课,课程累计学习着已经超过 300 万。视频质量很高,嵩天老师语言生动有条理,逻辑非常清晰。在讲解 Python 的基本语法的同时,嵩天老师也讲解了很多 Python 的小应用,都很有趣。课程面向 0 基础的同学,很适合非科班或者是没有写过代码的同学学习。但是如果之前学过编程且学得不错的话可能会觉得节奏有点慢,可以在学习完基础语法后看一下嵩天老师推出的其他 Python 课程,都非常不错。课程链接——Python语言程序设计

Python 语言基础与应用-北京大学

这门课并没有照本宣科地念 PPT,而是由陈斌老师根据自己的思路进行讲解,内容很丰富,扩展了很多很实用的模块。课程链接——Python语言基础与应用

其他资料

  1. Python不完全入门指南:郑老师写的 Python 教程,跟着学可以快速上手;
  2. Python 教程——廖雪峰:廖雪峰老师搭建并编写了很多免费的编程教程,他的 Python 教程同样是非常经典而高质量的资料;
  3. 我自己的 Python 专题博客:侧重一些小专题进行讲解,可以当做一些小补充;
  4. Graphviz 安装并使用 (Python):Python 的 Graphviz 库可以用来做树结构和图结构的可视化,学完可以考虑结合课设做拓展;
  5. 复杂网络软件 networkx:Python 的 networkx 可以用于画拓扑图,学完可以考虑结合课设做图结构的可视化。

C++

由于我们学数据结构会用到 C++ 的面向过程编程的部分和 STL 库,因此这里也给一篇博客——C++面向过程编程,请大家在开课前完成自学。同时一本参考书,如果打算往 C++ 程序开发方向走的同学可以看看。

技术书

Essential C++

《Essential C++》这本书直译过来就是 C++ 的精华,搞定这本书可以速成 C++,也可以通过它实现从 C 到 C++ 的过度。该系列的书是侯捷翻译的,打算搞 C++ 的同学可以把这个系列的书都搞过来研究。

慕课

程序设计与算法(三)C++面向对象程序设计-北京大学

北京大学郭炜老师主讲的慕课,郭老师的讲解本身就很风趣,且编程知识也被合理地进行分类。如果只是为了达到下学期上课的程度,只需要看第一周的内容即可,打算搞 C++ 的同学可以继续把整门课都看完。课程链接——程序设计与算法(三)C++面向对象程序设计

posted @ 2021-02-08 00:11  乌漆WhiteMoon  阅读(534)  评论(0编辑  收藏  举报