| 选课类别:计划内与自由选修 | 教学类型:理论实验课 |
| 课程类别:本科计划内课程 | 开课单位:信息科学技术学院 |
| 课程层次:专业基础 | 学分:3.5 |
许小东老师的《数据结构及其算法》课程内容适中,适合没有 OI 基础的学生。教学细致,以 PPT 为主,内容详实,图文并茂且适合复习与自学。课堂教学逻辑清晰,注重算法的理解和实现过程,时常结合画图解释复杂概念,帮助学生理解数据结构性质、实现方法和应用举例。然而,课堂气氛因语调较为平稳,可能略显单调。
考试难度被普遍认为友好,偏向考察算法的理解和数据结构的性质,较少涉及手写代码。部分学生反映考试复习能够通过往年题型提升,因考题内容重复度较高。而作业和考试原题重复度高有助于获取好成绩。尽管优秀率普遍达到较高水平,高分段较为严格,个别学生反映遭遇绩点被压。许老师可能会将卡绩点学生总评调低一分以避免尴尬局面。
许老师的作业题质量高,但难度和题目理解有时超出考试。评分严格,平时分的重要性较大。实验包括 6 个常规项目,难度适中,主要考察编程细节和 C 语言基础。有学生建议把老师的代码改成个人习惯的样式以便理解。作业和实验被视为复习的重要资料,但禁用 STL,强调基础代码练习。
学生对该课程的教学质量持正面评价,认为内容充实且递进,能有效帮助构建算法知识框架。但对于追求高绩点的学生而言,可能需要付出更多努力以避免因评分严格而卡绩点。学习成果上,大多数学生对数据结构和算法的理解有所提升,并建议复习往年题以有效减少考试压力。
本学期助教这门课,虽然感觉这学期的助教体验不太好。这门课的培养方案自25级起已经调整,以后多半是会在春季开课(为了塞新的ai课,把数据结构提前到1春,计嵌提前到2秋)。写点东西给后面的助教参考。
随堂方面只需要每周去一个助教收作业,也就是两周一次早八。对于大四老登来说实在是有点困难,助教为什么不能翘课呢
改作业方面,题目大概率是祖传的,但是老师会把选项调换导致答案出错,另外手写代码题有一点多,即便是手写,大部分的手写代码经常是一点注释没有,同时有llm生成的味道,改起来非常坐牢。
实验方面,是让我比较难绷的,这个班还是祖传的几个实验(约瑟夫环,停车场队列,Huffman树,MST,hash表),可以说是没什么意思。多文件编译配环境教学部分翻车了,我先是拿隔壁班的tutorial(配置launch.json的)抄了一下,又觉得应该使用cmake tools更加《工程化》一点(事实证明这些祖传实验都只能是强行工程化)。然后给的模板CMakeLists.txt还让学生在pdf里面复制,导致了神秘未显示符号bug。事实证明,直接使用图形化的cmake tools就行了,方便且不会出错,对于这几个实验也够用了,调试也方便。当然我自己也是半吊子,只会用,但是出了问题不知道怎么解决,只知道把build文件夹删掉重启一下就好了(逃
然后的都是神秘问题了,实验的问题基本都聚集在文件读写上面,空格/回车没读之类的,几乎没有处理过和数据结构相关的问题,ai的使用非常泛滥,但是难绷的点是90%的人都不会用coding agent,经常看到有人在手机上打开豆包,然后在电脑上敲。然后就是很多人对ai生成的代码一点不看,最后一个哈希表实验,要求对给定的不同源程序文件进行扫描,利用哈希表统计获得C语言关键字的使用频度。本意就是个统计单词出现频率,但是很多人写了复杂的逻辑让字符串,注释中的关键字不被统计。按理说就算这里的表述模糊了,当结果和助教不一致的时候,应该能反应过来和助教进行讨论这部分的处理,然而由于都是纯llm生成的,最后对照频度表折腾半天,才让我们反应过来了。最后两次实验还特地提问了MST使用的算法流程,哈希表解决冲突的方式,然后有人看着代码都回答不出来(那你实验是怎么写的.jpg)在ai时代下怎么设计实验已经成为了一个困难的问题,我个人是赞成使用ai的,但是允许使用ai又会导致变得课程实验变得太复杂。考虑到大部分小登只会手机上打开豆包这种操作,或许搞一个大点项目会比较好?
考试方面,比较常规。这次的卷子似乎略难,但是我们班考的比较好。听过一点老师上课,在生源没有明显差异的前提下,这确实可以展现一点上课水平。过几天出G,反正说是调分到正态分布。(感觉压根没怎么调,好像别的班也差不多?)
然后还有一些课程无关问题,这门课使用wx群,我个人喜欢wx用于处理家庭,实验室的事情,qq用于和朋友聊天,水群娱乐。我也确实通过当助教认识了很多朋友。使用wx群使得这件事情变得严肃无趣了很多,直到学期末才有人发现我原来就是mmd(逃)
许老师上课,一个字:稳;两个字:平稳。基本上听不出老师的语调起伏,某种程度上可能比较催眠?但对于一个毫无OI基础且新转来网安的小白来说,这样的基础课是不敢不听的。细听之下居然还找到一些感觉,虽然平稳,但老师上课的逻辑清楚,极有耐心,但凡碰到稍显复杂的过程都会画图讲解(而且他的手和他的语速一样慢),有时候确实让人着急。
还值得一提的是许老师的PPT做的很好,图片与代码都很详实,适合提前预习,也适合考试前复习。
课程总体内容不难,甚至可以说偏简单。一个章节可以大致分为:数据结构的性质、具体实现方法(一般是顺序和链式)、应用举例。没有涉及到很高深且难以理解的算法。性质(比如栈的先进后出)和实现方法(循环队列的判空判满条件)对应考试的选填,应用举例一般是算法,对应考试的简答和代码题。
实验仅需完成那千年不变的6个,24年没有选做题,不知道之后会不会有。课程快结束的时候许老师问过同学,实验的时间主要花在C的语法bug上还是数据结构的实现上,大部分同学似乎都是前者,所以C的基础还是有参考意义的。实验可以补交,而且每次实验的时间总体还是宽松的。我自己习惯在宿舍敲好代码,线下去机房直接提交,但最后一次哈希表的实验公布题目太晚了,以至于只能在机房写,最后也在一节课内完成了(没想到文档给的参考输出居然有错,害我找了好久的bug……本来可以当堂课提交的)。
来一个马后炮,实验推荐自己“造轮子”,就是自己实现一遍各种数据结构的代码,或者把老师的参考代码改成自己喜欢的形状狠狠塞进u盘,方便随时include。比如我个人喜欢用 & 引用传参,但老师的代码很多是用 ** 实现的,直接套老师的代码会很别扭,也容易和自己的写法冲突导致语法bug,所以后期我都是临时手动改他的参考代码,挺费事但又懒的自己写一遍(别学我)。我25春学期会监督我室友按照这套办法做,看看效果如何 \doge。
作业偏难,真的,所以如果你平时要借助AI那放心,这不是你的问题。不夸张的说作业不论是选填还是大题,都有许多是超过了期末考试难度不少的。关于作业的给分,我感觉是很好的,虽然助教会写上80、90这样的分数,但从总评来看平时分应该是给满了的(大概吧)。
考试不重代码实现、不重代码实现、不重代码实现!!!期末考试不需要你把各种算法的代码装满脑袋,它考察的多是数据结构的性质(比如利用栈的先进后出性质判断可能的输出序列)和算法的具体实现过程(比如Dijkstra算法实现中各顶点的状态变化,要求画图描述或者填一个数组),不会要你手写算法的代码。当然代码题需要手写伪代码,但根据往年题和24年期末,考树结构相关的可能性很大,毕竟递归写起来方便,逻辑也清楚。
最后卷面未知,但我Dijkstra有一个数组的含义忘记是什么了,导致有一小题是空着的,总评居然97,应该是把八九十分的作业给满了,而且卷面捞的力度不小。但毕竟是个人感受,所以给分好坏的评价选的一般。
老师很贴心,这学期为了避免被喷卡绩点,把卡绩的同学直接总评-1

期末竟然考了六七年前的原题,可以说是十分生草。
对数据结构这门课的总体感觉就是:上课难度和考试难度完全是天差地别。考前很努力地啃了很久代码,结果发现考试考的绝大多数都只涉及对算法的理解,而不涉及算法如何实现,可以说是相当友好的考试了。复习时可以把重心放在每个算法的实现过程,而不用狂背各种代码。(不过话又说回来,对考验敲代码水平而言,手写程序的确是最次的考核方式,点名批评大一程设考试)
xxd老师的作业出得很神奇,选择题跟考试题型十分接近,有效锻炼考试熟练度。助教在改作业时也会按照百分制认真批改,哪里出错一目了然,复习时对着作业过一遍,差不多就能把概念搞清楚了。同时,老师的ppt内容也很详细。除了期末不给划重点,得去偷看其他班给的重点之外,老师的课还是值得一上的。
不过老师的实验课要求每一次都要去签到,就算已经没有需要验收的大作业也得签到,考核有点过于严格了()
没有 OI 基础。
实验难度总体尚可,问题多出在编程细节。(我不扎实呜呜呜)
作业题质量挺好,但部分题意不清;作业评分好严苛,平时分-- 的我心在滴血。
ppt 质量很好,老师讲的也很细致,每节课前一般都有小练习,好评。
考试难度不高,题目应该都能写,不过还是被爆了,寄点狂掉qwq。
总体感受,个人对学习成果还是满意的。至少现在,面对自己以前不知所云,只会膜拜的 DFS、BFS 等一堆算法和名词,也能说出自己的看法和理解了。
还是在进步的嘛。给自己点个赞了。
老师上课认真,ppt的内容也比较充实,会适当补充部分内容,平时作业是通过bb系统提交,内容和题型和考试相关,期末也遇到不少原题,6个实验感觉大部分偏简单,基本是涉及到的章节算法设计的复现,套了个应用的外壳。给分优秀率基本给满了,平时作业和实验认真做问题不大,95飘过。
量信人的第一门信院课,中规中矩的课程。
考试的时候大部分题目是类似于应用题,就是让你人脑推演算法的运算步骤,比如让你画一下Dijstra算法每一步的运算。所以对于书上指针乱飞的实际代码并不会太考察,有一种奥数的美。课程挺好的,不太喜欢这种考试形式。
给分一般,基本没捞。
感觉班里大佬很多,所以只在大一学过c的话,想拿高绩点确实吃力。东哥讲课真的很清晰,ppt做的也超详细,我c学的不算很好,所以上机实验课确实有点难,但是还是跟着老师把数据结构这门课掌握了,学期末也开放了课堂回放便于大家复习。另外我感觉东哥还是很奶的,给我东哥满分,推荐大家选东哥的课(东哥的线电讲的也不错)
这学期置课置了这个班,就没换了。
老师的课上的还是不错的,认真听的话,ppt上的算法都是能听懂的。
考试比想象中简单。考前还在想一些复杂算法的代码可能手写不出来,然后发现后面的20分编程题貌似只考链表和树,可能还会穿插排序、查找算法(貌似这课每年都这么考?)。
给分方面的话,老师会把优秀率拉满,但是高分段会比较杀。本人卷面91,总评92)))没卡绩,但我的评价是如卡。(叹气)
想了半天原因,觉得可能是,就算作业实验都认真写认真交了,大家平时分也都不是满的,然后总评会因此扣个两分?(但我作业分也不低啊。。)
所以大家如果只是想拿优秀的话,这个班挺好的。但如果有更高的追求,建议换个平时分能拉满的老师(哎,叹气)
《数据结构及其算法》这门课程基本学不到什么东西,如果在大一的《C语言程序设计课》上拿到了3.7以上的绩点的话,这门课应该对你来说会学的比较轻松。
本课程大概讲述了一些数据结构,算法内容其实不算很多,实际上也就了解一下就能够应付期末考试,但你深入学习这个课程也不会教你更多的东西。数据结构平常稍微听一下也就会了,不需要什么思考。而本学期学的数据结构基本可以在C++STL内实现,所以做实验的时候禁用STL(要是给用那还用做实验?)。所以经过这个学期最大的收获可能是链表运用的十分熟练(bushi
老师讲课讲的不错,会在课堂上演示数据结构、算法是如何实现的,对于理解有很大帮助。
鉴于助教作业分给的过分低了(作业按照考试来改)导致卡绩点,故给这门课送上助教给过我最低的作业分。
复习的时候一定要看一下往年题,熟悉一下题型,还有就是最后最好用教材复习,其他书有时候术语不统一,本人就吃了大亏🤕
养生班,有一次点名没到,考前看作业题速成,不过最后还能有3.7,优秀率38%