选课类别:计划内与自由选修 | 教学类型:理论实验课 |
课程类别:本科计划内课程 | 开课单位:计算机科学与技术系 |
课程层次:专业基础 | 学分:4.0 |
数据结构是计算机学科一门重要的专业基础课,该课程系统地讨论各种常用的数据结构及其应用,各种查找和排序的方法,及其综合分析比较,能够培养学生数据抽象和程序设计的能力,算法时、空复杂性的分析能力。
万寿红老师的《数据结构》课程讲授详尽、清晰,课堂风格活泼,适合初学者。老师的教学细致到位,例如在涉及复杂算法时,会逐步引导学生理解。老师的PPT质量高,图文并茂,也补充了教材没有的部分。课堂会适时点名,适合认真听讲的学生,竞赛学生或希望自学的同学可能会选择性出勤。
考试题目合理,包含选择、填空、简答和算法设计题,主要考查基础内容,如二叉树、哈夫曼树、图算法等。考试难度适中,给分较好,期末考试成绩占总评比重较大。普遍认为通过期末充分复习能够取得好成绩。对于实验和作业的占比低,但完成度仍需保证。
课程包括5个实验,分别涉及线性表、栈和队列、哈夫曼树、图与哈希表,需提交实验报告。实验量中等,但实验内容的重要性体现在对实践能力的提升。作业不多,主要为中偏上难度的算法题,旨在帮助理解课程重点。实验和作业可补交,助教评分较为宽松,但高质量的实验报告仍需时间和精力。
助教整体表现较好,积极回答问题,作业评分较宽松。部分学生反映习题课质量不高。实验和作业的讲解有时推迟,部分同学希望改进以便更好地查漏补缺。
万寿红老师的《数据结构》课程适合有意打好数据结构基础、享受较高教学质量以及有自学意愿的同学选择。课程强烈推荐提前温习C语言的基础知识。非信竞基础的同学如果认真上课并完成实验,能在期末得到不错的成绩。对于基础较好的学生,课内挑战可能不足,自主学习与竞赛结合能最大化提升。
2025.1.16 昨天早上考的昨天晚上就出卷面分,课程组效率高的。今天查卷查完心情不错(同时发现万老师班相比其他几个班评课数目不多),遂评。
本人:大一觉得自己物理学得依托,C学的还可以,于是run了。(非信竞党)ds这门课是现学的,所以同非信竞党可以参考一下,对竞赛党参考价值不大。
个人错题:(ds期末 24秋)完全二叉树有5000个结点,求其中的叶子结点个数____。
错解:一个高度为k的完全二叉树的结点总数n: 2^(k-1)-1<n≤2^(k)-1,所以这个二叉树有13层。前k-1层有2^(12)-1=4095个结点,叶子结点数=最后一层结点数=5000-4095=905.
然而这是不对的,倒数第二层也有叶子结点,叶子结点数!=最后一层结点数。倒数第二层结点数目为2^(12-1)=2048,叶子结点数=905+(2048-\math.ceil(905/2))=2500.
方法2在评论区。
最后两个算法题有点忘了,记得的友友们可以贴一下哈。
出分在意料之内,看不出给分好坏。总体上说你的总评主要取决于考试吧,实验和作业占比不会像ics那么高。
现在是深夜两点四十分……早上八点半考试,最后一场了
期末周破防的我想知道自己能否看完万老师的PPT……
突然就想写个点评,这还是第一次写点评哈哈哈哈哈,期末考试刚考完不久,成绩也还没出了,而且关于给分高低我也说不准,毕竟本人成绩并不是特别好,所以该电评主要讲一讲上这门课的感受。 首先是老师,感觉万老师上课非常有活力,很有趣啊,就想前面点评说的,像在给小孩子讲课一样,就是有种看周星驰电影的那种感觉,(可能这种形容不太准确,但我突然就想到了这个所以就提一嘴),老师刚开始讲得很清楚也很慢,感觉讲得很好,而且ppt也非常好,并且对于每个算法老师都会举例子,感觉举一些例子对于理解算法的过程还是很有帮助的,并且ppt上也配有有很多图片。总之,感觉老师在讲课和ppt上做得都很好,哦对了,点名还是会点的,印象中好像点过四五次。所以对于万老师,我给满分! 关于实验,实验总共有五个,分别是线性表,栈和队列,哈夫曼树,图,哈希表,难度感觉还可以,只要认真做基本都可以完成的。然后需要写实验报告(明天就要交实验报告了而我才刚开始写啊啊啊啊啊!) 关于教材,教材使用的是清华大学的数据结构(c语言版),教材写得也很好,但有些老师的ppt在有些地方会更详细一点,比如会补充一些书上没有的代码或者例子。 关于助教,感觉助教长得还蛮帅的哈哈哈哈(做实验时他边上的朋友也很帅),感觉助教人也很好,作业的打分也听宽松的,应该不是很严然后本学期是上了两次习题课,第一次听了一点,助教会讲一下作业和和一些拓展,比如当时提到了一个双指针的拓展,(因为之前没学过)所以当时听了之后就觉得很有趣。第二次习题课没认真听。 大概就是这些,总之感觉还是蛮不错的。
旧事重提: 非常后悔当时听课不够认真,这倒与考试无关,主要是现在回想起老师上课带你一步步分析算法,而我在后排不时刷着手机,总有种怅然的悲伤。 虽然我上课状态一言难尽,但确实得承认这门课,或者说妮可很多课的确可以通过自学掌握大部分知识。这门课在这学期置给了ai和ds,所以到课的人也不是很多,老师经常点名。 还是那句话,选择大于努力,建议别选ds和ai的课。 这本教材是大概20年以前的,我不晓得ppt的情况,但内容非常详细。同时,也并非所有内容都有考察,带星号的几乎不会考试,但老师还是会带你过一遍算法。这些内容,应该会在读研的时候发挥作用。 实验一共五个,好像不是最多的,但也不少。每个实验满分十分但有附加两分。整体难度还好,有难有易。但话又说回来,这班几乎都是ds和ai,都在卷,不做附加会有点吃亏。此外,实验允许补交,但会扣除一定分数。 但是,这门课考试难度完全出乎我意料。我估计平均分能有八十几,在如此高的分数下,总评占比几乎都给了考试,实验和作业加起来估计也就10%-20%,可以说,考试决定你的成绩。 我的实验并没有做满全部的分,作业又不是满分,但是在出勤率慢的情况下,考试91分,最终总评93。 一些建议: 好好听课,好好听课,好好听课 你的水平取决于你自己,你的成绩取决于你的同行 选择大于努力,别来ds或者ai
非常好老师,使我的电脑旋转
GPA之母,总评93,,
作为一名高中竞赛生+ACM队员,记忆中只去上了屈指可数的几次课。。。。自从万老师说“觉得自学期末能考好的可以不来听课”我就没怎么来过(除了一个讲B-树的清晨,记得那天整个教室只有不到40人OTZ)(此处映射一波疯狂点名的马老师)
我是大一被马老师“图形化”+眼花缭乱的讲课方式吓到了隔壁数据结构班的。
总体感受上,万老师讲课的ppt和清晰程度实在是好(此处映射一波马老师),而且对实验报告啊内容啊各方面的细节要求也十分清楚(再次映射一波马老师),助教们也很用心的在判作业和验收实验(顺道映射一波马老师的助教们)
今年的期末卷子是万老师出的(因为我期中反馈的时候说马老师老喜欢出只有自己班留过的作业原题然后他就帅锅了OTZ)。不偏不怪,难易也很适合(前一晚上熬夜看B树和各种哈希各种排序结果考的都很基本OTZ),基本是选择填空+程序填空+简单的算法结果模拟+程序设计题(最后觉得试卷体量较大还延长了15分钟QAQ)
我是卡上了4.3,估计给分也都比较好。
真的,觉得马老师比较那啥的可以换过来,真的,我觉得很赚
老师会点名,提醒一下,尤其是辅修和叠课的
鉴定为若至期末😋,很好期末使我不挂科
讲课清晰,会帮我们回顾c语言知识,会带我们层层分析算法
半夜发现出分了,庆幸自己去查卷了,找回了两分,没被卡绩
老师非常好,助教只能说还OK。
哥们要更新一下,实验报告要写吐血了,话说为什么数据结构还要写实验报告,吐血了吐血了。
挺重要的课,怪我太摆烂了总评84,劝学弟学妹好好学。
前面的同学说的都很详细了,我就来说说实验吧。
实验的基本原则:做的越多分越高(助教会有具体的评分标准)
1. 稀疏一元多项式的运算和表示
输入一元多项式的每项系数和幂次以录入多项式,同时支持多项式的加减乘除、微分积分求值等功能。
2. 简单的栈与队列的实现
我做的是「行编辑器」,「括号配对检验」,「银行业务模拟」三个题目,一共(应该)有五个。
3. 二叉树的应用
利用 Huffman 树压缩 & 解压文件。
值得注意的是,这里可以用范式 Huffman 编码,降低存储 Huffman 树的开销;分割文件为一个一个的 Trunk,可以更好的利用局域的相似性。
更能肝的同学可以研究一下 deflate,实现一波(我本来想这样做的,但是发现时间确实不是很够...)
4. 图的应用
输入一个无向图,输出图的深度优先搜索遍历顺序与广度优先搜索遍历顺序。显然的,最后的答案会有多种可能,这里统一要求:当有多个节点可以搜索时,优先去节点编号最小的那个。
输入一个无向铁通讯网图,用Prim和Kruskal算法计算最小生成树并输出。
输入一个无向铁路交通图、始发站和终点站,用Dijkstra算法计算从始发站到终点站的最短路径。
5. 哈希表
(1). 输入关键字序列;
(2). 用除留余数法构建哈希函数,用线性探测法解决冲突,构建哈希表HT1;
(3). 用除留余数法构建哈希函数,用拉链法解决冲突,构建哈希表HT2;
(4). 分别对HT1和HT2计算在等概率情况下查找成功和查找失败的ASL;
(5). 分别在HT1和HT2中查找给定的关键字,给出比较次数
还有,万老师给分太好啦~4.3 路过(溜
期末周靠着评课社区的前人留言才顺利速通,现在到我评论了。
先说课程风格。万老师很负责任,两位助教也比较尽心,线下沟通很好说话,但线上消息回的很少。听老师讲课有点喂饭的感觉,很详细。仔细听应该能收获不少,可惜我耐不下性子。实验有五次,可能中间十一月其他课期中考试会比较紧张。其他时间认真对待问题不大。作业不多,但作为小白我每次写个算法的伪代码都磕磕绊绊的。(最终期末的算法题也需要伪代码,最好平时留意一下)。课堂会点名,次数也不少,喜欢翘课的同学需要注意。
再说考试内容。这学期分为选择、填空、简答、算法设计四部分。
选填主要是对学过的数据存储结构的考察,可以留意一下二叉树的一些数字特征。复习的时候广义表、特殊数组存储等内容需要过一遍,容易忽略。刚刚查卷发现自己自己把广义表的长度当成深度了,线索二叉树好像也做错了。
简答题今年考察了B树的插入删除,Dijstra算法,和Prim算法,以及构建线性探测的哈希表并求ASL。
算法设计题第一题为给定1<K<M,求从1到M中取K个数和为N的所有解,第二题是Dijistra算法的变形。第一题当时在考场上递归函数老是写不好,最好助教给了一半分。
给分的内容先空着,等总评出来再补
老师讲课超好,可以说是很少我能听下去的课之一,而且助教很帅(
给分也超好,作业和实验都可以补交,唯一美中不足的是实验报告要写吐了
大数据置课,人很少,所以有些卷。老师讲的很详细,像在给中学生上课。PPT做的挺好的。因为期末很简单,所以给分基本就是期末考的分数,我卷面89,总评91。实验有五个,难度还好,作业随便写写基本都十分。唯一槽点就是助教习题课讲的太烂了(虽然人很帅)。
老师讲的很清楚,和教小学生差不多,考试也不难,主要是我考前熬夜,考试差点睡着结果翻车-_-
老师讲课抑扬顿挫,很认真,很仔细,像是引导小学生一样。但说实话,从高中以来已经很久没有听过这样的课了,所以很不适应,经常是听着听着就不想听,宁愿自学了。课堂风格感觉和隔壁马老师(天花乱坠)是各有千秋,看哪个是你的菜了。
试卷出的挺好的,平时作业和实验涉及的多的基本就是重点了,没有考一些很偏很难的点。像B+树、旋转、KMP之类到了考前还觉得很偏很难不太会的都是没有考的。感觉考前把PPT完整过一遍就差不多了。