选课类别:计划内与自由选修 | 教学类型:理论实验课 |
课程类别:本科计划内课程 | 开课单位:信息科学技术学院 |
课程层次:专业基础 | 学分:3.5 |
刘东老师的《数据结构及其算法》课程总体评价很好。很多同学反映老师上课幽默风趣,讲解清晰易懂,重点部分会细致讲解,对初学者十分友好。有同学表示,尽管有些内容进度较慢,但整体授课逻辑清晰,PPT资料详尽,对复习备考有助益。特定难点如KMP算法处理较慢,帮助学生更好掌握。
课程内容涵盖广泛,包括线性表、栈和队列、树和图等核心数据结构及其相关算法。课程节奏较快,一学期内快速覆盖关键内容,理论结合实验。部分同学指出进度可能不均衡(前面部分慢,后面部分快)。实验内容包括多项式计算器、表达式求值、Huffman树构建等,难度适中但具挑战性,有助于加深理解。
作业量较少,主要集中在书本习题和实验项目。实验项目需要编程实现,严谨性较强,时间分布较为集中,尤其是Huffman树构建实验难度较大。实验报告选题包含必做与选做项目,完成后有助于提升总评分数。助教在调试与批改作业上十分耐心,广受好评。
部分同学指出,期末考试题目描述不够详细,如快速排序题目未明确具体实现,导致答案多样性引发评分争议。期末笔试和上机考试同时进行,笔试偏基础,选择题和编程题并存,涉及较多细节知识。总评由平时作业、实验、上机考试及期末笔试综合决定。有同学反映,老师成绩调整有限,强调不调分,但也有同学表示老师实际上进行了一些调分。
助教蔡旻轩得到广泛好评,工作认真负责,及时解答同学疑惑,批改作业细致且标注问题,调试代码耐心细致,同学们称其为“课程亮点”。无论在平时调试还是作业批改方面,蔡助教都展现出对学生学习的高度责任感,深受学生欢迎。
总之,刘东老师的《数据结构及其算法》课程适合对C语言和数据结构基础较弱的同学,教学细致但进度略快,作业和实验安排合理,上课方式和助教表现都受到学生们的肯定。对于注重细节的同学,期末复习需多加小心。总体来说,这门课在教学内容、助教表现上表现优异,值得推荐。
【此篇为助教视角的点评】
本人为物院天文系21级硕士,申请了2022年秋季《数据结构及其算法》课程的助教。
由于涉及大量个人感悟,这篇点评里面的“水分”会非常地多。重要部分,对选课有参考价值的,已用粗体标出。
研一结束的时候,看到了助教申请系统开放的通知,便打算去体验一下这份工作。而当时在选择哪门课这件事上,却纠结了很久:首先,作为物院的硕士,选择物理系的课程助教自然是理所当然的。但当我回想起本科时期,学习普物和四大力学,总是非常痛苦且缺乏自信的时候,便很快地将这些课PASS掉了。毕竟,我可不想做一个80%的问题都回答不上的助教……随后,研究生阶段学的课也非常地难,唯一一门敢当助教的idl课,却不设助教。
那么还有哪些课,是学的比较踏实且自信的?这个时候,我便不由自主地想到了《数据结构》。这是我在大三的时候,跨专业选择的第一门课(PS:当时的授课老师是李春葆老师,他的《数据结构教程学习指导》恰好被刘老师列入了参考书籍清单)。因为在当时,本专业的课已经差不多学完了,并且学外专业的课也没有成绩上的压力,所以那个学期的学习给我留下了一个非常好的印象,最后收获也非常地大。于是,我便敲定了这门课的助教。
在经过了一段比较艰辛的申请历程后,有幸成为了刘老师这学期的助教。
在开学前的最后几天,刘老师把我们两位助教召集了起来,在线上简单地开了个见面会。会上主要讲了这门课的教学计划、助教职责以及对助教工作的基本要求。在听到“既有理论又有实验,并且作业没有现成的参考答案”时,感觉到工作量应该会比较大,不过这样也挺好,可以起到更好的锻炼作用。
第一节课是在8月31日,因为害怕迟到,所以提前半个多小时就到达了现场。先是带着本科时期的习惯跑到了第二排充电插座的旁边,然后突然想起现在是助教了,于是便又回退到了最后一排靠门的位置(此后就在那个位置固定了下来)。随着时间越来越接近2点,教室里的同学也渐渐地多了起来。
2点便开始上课了。在老师自我介绍的环节结束后,便轮到我们助教进行自我介绍了。不得不说,时隔多年再次在这么多人面前自我介绍,还是有些怯场的(哦,半年前的AGN课上也自我介绍过啊,那没事了)。小心翼翼地站起来,讲一下自己的名字、院系和专业后,便又很快坐了下去,开始设置课程群的相关权限。因为比较想体验当助教的感觉,所以在和另外一位助教协商之后,决定由我来当课程群的群主,这样的话可能接触到的提问就会更加全面一些。
很快便到了课间,在老师宣布课间休息的时候,我便慢慢地从最后一排走了上去,拿出粉笔,在黑板上写下了QQ群号,然后再慢慢地走了下去。看着群里的人数爆炸式地增长,仿佛又看到了曾经总想挤破头皮成为第一位群成员的自己。
下午在返回校外暂住地的车上,除了在群里通知一些注意事项之外,也回复了几位同学关于这门课程的疑惑。于是短暂的助教生涯便从这里开始了。
虽然刘老师对我们助教的要求只是“周一到机房答疑,周三来收个作业就可以离开,周五就不用来了”,但我却始终觉得作为一个助教,在不是特别抽不开身的情况下,这样做是有些不太负责的。所以我便每节课都坐在最后一排的那个位置,和同学们一起听老师讲课,时刻关注老师的进度,以更好地预判同学们可能提出的问题。
大概是因为一周有四个课时的缘故,这门课的节奏还是比较快的(比我们本科时期一周三课时的数据结构要明显快不少)。线性表和链表两周就讲完了,栈和队列也只花了一周半,后面的也一样地快,具体进度在下面列出,可供参考:
周次 | 内容 |
1 | C/C++语言预备 |
2 | 数据结构术语概念、实际/抽象数据类型、复杂度、线性表的概念、顺序表的表示及基本操作的实现 |
3 | 顺序表的应用、链表的特点与基本操作、双向链表、有序表 |
4 | 栈、栈的应用、前缀/中缀/后缀表达式、表达式求值、递归、Hanoi塔、队列的表示与实现 |
5 | 队列的表示与实现、链队列、循环队列、队列的应用、串、串的表示与实现、模式匹配、KMP算法 |
6 | KMP算法、数组、矩阵压缩、三元组表、树的基本概念和性质、完全二叉树、树的顺序/链式存储结构、二叉树的遍历、利用二叉树进行表达式求值 |
7 | 先序/中序/后续/层序遍历、遍历算法的应用、由遍历序列建立二叉树、线索二叉树、双亲表示法、孩子链表/兄弟表示法、树与二叉树的转换、树的遍历、森林 |
8 | 计算树的深度和度、Huffman树、Huffman编码、图的数学模型与基本概念、图的基本操作、子图与连通性、图的表示与实现 |
9 | 邻接矩阵/邻接表表示形式、深度/广度优先遍历、遍历的应用、遍历的应用、最小生成树 |
10 | 拓扑排序、关键路径、Dijkstra算法、查找表、折半查找、索引查找、二叉查找树 |
11 | 二叉查找树的操作、平衡二叉树、键树、Hash表、解决Hash冲突的方法、排序概念与分类、排序稳定性、简单选择排序、冒泡排序、简单插入排序 |
12 | 希尔排序、快速排序、堆排序、归并排序、基数排序、排序复杂度的下界 |
13 | 算法简介、递推与递归、分治、贪心策略、动态规划、回溯策略、分支限界法、考试相关事项 |
在上课这方面上,虽然我没有太仔细地听,但能够感觉到老师讲课还是挺生动的,肯定不会像许多经典“有声读物”那样地平淡。有些时候,老师也会冷不防地讲出一些笑话,场面还是比较活跃的。
每周三收作业的时候都会先分出40份交给另一位助教,然后剩下的再由自己带回去。通常情况下,也会有几位同学在QQ上将作业通过照片的形式进行补交。
刚开始的时候,觉得既然可以较为轻松地给出作业答案,那么改作业应该是件挺容易的事。所以在一开始的那两周,我是决定尽可能认真地批改的:每一份作业的代码都从头看到尾,即便是给出了完整的程序(题目只要求写出函数即可),也会从#include开始看,并尽可能的找出每一处遗漏或略显瑕疵之处,用红笔批注出来。
然而,在这样批改了两周后,我便发现这样的做法是非常不现实的。首先是这样会占用非常多的时间,几乎大半个周末都花在了改作业上;其次是每次作业批改结束后,我们都会给出我们写的作业讲解与参考答案,这样的话单独给每位同学都写一段批注就显得没那么必要了;还有一个更重要的因素,就是这样一来,手上的科研课题进度也会因此受到较大的影响,因为除了作业批改之外,还会有答疑等其他事项。
因此,在后续的作业批改中,我也逐渐调整了详略程度,尽可能地在不占用太多时间的前提下,保证不误判,并且让大家知道自己是在哪里因为什么原因出了错。这样一来,批改作业消耗的时间便缩短到了每周6小时左右。
一般情况下,绝大多数同学都会直接交书面的上来。而在封校期间的那两三周,则有相当一部分的线上提交作业是要在电脑上PS批改的。虽然用电脑打勾画圈比较困难,但也因此获得了可以打字的好处,可以说是有利有弊。
印象最深刻的是图的算法。那次作业同时出现了邻接矩阵、邻接表、最小生成树算法、最短路径算法、关键活动的题目,而这些题目都是需要画非常多的表格或图来描述的,因此批改起来异常地酸爽:不仅要看图的形状,还要看若干个单元格中的数字是否正确。有些时候,题目没有规定表格的填写顺序,因此只能在十几条边中慢慢地玩连连看……
作业主要可以分为编程题和客观题这两类,前者需要自己写出一个函数来实现题目所要求的功能,在自己电脑上能跑通的话再抄上去(这门课要求必须全手写)当然就没问题了;而后者则一般是照着书上教的方法,来依葫芦画瓢,进行逐步推演。从作业的难度上来看,倒是没有特别难的题目。但有一点比较难受,那就是很多题并没有描述得那么清楚,以至于在80位同学的眼中,会有80位哈姆雷特……
关于作业的迟交问题,为了防止大家全部在最后一周才将作业交上来,我参考了本科时期一位老师的作业迟交扣分方式,将迟交的惩罚设定为了:每无故迟交一周,当次作业的得分都会在本身的基础上乘以一个75%,依此类推。最后的效果也比较地满意:大家几乎都能够按时地提交作业。而对于作业本身,则是尽量地不扣分(前两次分数尽量控制在90分以上,后期分数基本控制在95分以上),以鼓励大家按时提交不往后拖。
这也是一个不同寻常的学期。在这几个月的时间里,先是经历了奥密克戎多点爆发导致的大面积、长时间的封控,然后再是突然的放开、疫情大面积扩散导致的教学任务提前中断。也许很多年后回想起来这一学期,都会记忆犹新。
因为这门课是在西区进行的,而上课的同学几乎又都住在中区,所以大家在上课的时候就需要先走出中区校门,穿过肥西路,然后再走进西区校门。当然,也许在你们看到这里的时候,中区和西区之间已经被人行天桥连接在一起了,但在疫情封控期间的2022年,东/中区和西区的确是两个近在咫尺却又难以互相通行的校区(虽然有校车,但每天也就只有十来个班次)。
第一次封控是在10月份的时候。国庆节刚一过,全国各地就相继冒出了较大规模(至少在封控期间属于最大规模了)的疫情,因此从中区到西区很快就只能通过申请的方式通行了。而在申请制实行约两周后,随着疫情的进一步发展,校方又由申请制改为了全封闭制,至此,所有同学在中西区之间的通行就只能凭借每天少得可怜的校车了。
在报备制刚转为审核制的时候,大多数同学还是能够通过审批到达西区上课的,线上提交的作业也没有多出太多。但当审核制转为完全封闭制后,校方提倡不跨校区上课,这就使得所有住在中区的同学原则上都需要待在宿舍线上上课。在刚转为封闭制的那一周,另一位助教还没来得及拿走放在办公桌上的作业就被封在了校外,于是只好先在周末的时候坐校车去西区将作业从校门口递过去,然后周三的时候再从校门口将作业拿回,并分发到中区其中一栋宿舍楼的大厅,随即赶校车前往西区教室开启直播(因为也有少部分同学住在西区,所以也需要保证教室的正常使用),下课后再返回中区宿舍楼,收取这一次的作业以及还没有被拿回的上次的作业。
但即便如此,也会有很多同学因为一些特殊状况而无法在上课期间将作业交到那个大厅。因此,在封校的那段时间,线上提交的作业一下子就窜到了两位数,周末改作业的大部分时间都转到了PS中进行。
而封校的第二周起,老师指定了几个东区教室,作为大家临时上课的地点。虽然这样一来能有超过半数的同学到达现场上课,但受到影响的依旧不在少数,因此线上提交的作业还是有相当的一部分。
第一次的封校持续了两三周,短暂地解封后,课程教学很快便恢复了原状。但紧接着,没过多久,随着疫情的进一步蔓延,刚解封一周的校园又从报备制调整为了审核制。这一次的力度似乎要更大一些,许多同学都因为审核没有通过,而无法到达西区教室,上课现场显得十分荒凉。
这个状况持续了没几天,就正式放开了。而就在这几天的时间里,先后进行了上机与理论A卷的期末考试。上机考试,大家担心的是被封控而无法到达现场。理论考试,大家担心的则是会不会阳。而在这冰火两重天的两个场景之间,却只相隔6天。
除了每周四个课时的理论学习,这门课还有上机实验的环节。在这个环节中,老师布置了五个上机项目(多项式计算器、表达式求值/银行排队模拟、Huffman树的构建、最短路径问题、排序算法耗时测试),让大家用一个学期的时间来完成。在学有余力的情况下,还可以再额外完成两个附加项目,以获得加分关于数据结构应用的更深层次的理解。
本学期的上机课程安排在周一下午16:00——18:15,西区活动中心的二楼机房。在几乎人手一台笔记本电脑的2022年,上机课程已不再要求大家都必须到场,取而代之的则是自愿参加。作为助教,我们要做的则是坐在机房,回答同学们的提问或帮助他们debug(主要还是debug)。在这个环节上,我也向老师提出了一个建议:由于来现场求助debug的同学并不多(最少的一次,只来了三位同学,不到一个小时便结束了),因此,这个上机课程或许也是可以和答疑环节放在一起的。
11月中旬,就在课程还在有条不紊地进行着的时候,老师在助教群里发布了学校安排的这门课程期末考试的初定时间。这不看不知道,一看吓一跳:考试时间被定在了12月11日,这个时间比考试周还要早半个月!
在将通知转发到群里后,大家也都炸开了锅,提出了不少的疑问与期望。提前一晚将大家的信息整合在一起后,我便在第二天下课的时候找老师问了问,随后将老师的回答整理成了一个文档,这才比较好地解答了大家的疑惑。第一次(记住这个第一次)“期末困境”得以解决。
在刘老师的课程里,期末除了专业统一的笔试环节外,还附加了一个上机考试。由于是老师个人安排的考试,因此上机考试的制度就相对比较宽松,可以由学生共同商讨考试时间,考试期间也可以任意地使用电脑进行资料的查阅。
上机考试的时候恰逢疫情防控的最后几天,那时已经有许多同学受到了防控的影响。在考试那天,就有好几位同学被隔离在了专家楼里,无法到现场参加。被隔离的同学,就只能在线上参加这场考试了。
考试开始前的最后五分钟,老师将试题文件发给了我们助教。随后,在考试开始的时候,我们再将这些文件转发到群里。考生将其中的代码文件按要求填充完整后,再打包传到公共邮箱中,以供我们下载并批改。
这一年的上机考试内容是链表的插入排序、前缀表达式线索化三叉树的建立。前者难度较低,容易想出思路,而后者则稍微需要花费一些时间进行思考。上机考试有一个超时扣分项:作答时间超出60分钟后交卷时,每2分钟都会扣掉1分,直至扣满20分为止。从交卷情况来看,绝大多数同学的作答时间都超出了100分钟,因此这20分的获取难度也是非常之大的。不过在最后整理成绩的时候,老师也会根据整体情况进行一个集体调分。
从答题情况来看,链表的插入排序大家都答得很好,绝大多数同学都能做对。而三叉树则是因为放在了第二题从而使得时间可能不够用,加上本身难度较第一题而言大了一些,导致许多同学都无法在有限的时间内得到正确的结果。因此在批改的时候,第一题很容易地就能给出一个很高的分数,而第二题就比较困难了,需要先运行程序,运行不通的话尝试小改程序看是不是只差一点就能跑通,实在跑不通的话再看代码逻辑,最后按逻辑和整洁度,打出一定的分数。
期末考试只比上机考试晚了六天。然而,就在这六天的时间里,疫情防控政策出现了一个180度的大转弯。周围小阳人的数量激增,学校也紧急通知让大家自愿返乡。一时间,QQ上的消息络绎不绝,有不少的同学来询问期末的相关政策。
由于通知过于突然,学校、小道消息、各学院和教务处的意见也一时半会无法统一,为此,我们也度过了一个学期以来最头疼的几个晚上。此刻,面对众多关于政策的问题,我们助教也无能为力,只好尽量保持言辞谨慎,因为我们也无法代替老师和教务处统一并回答大家的疑惑。在这样的情况下,哪怕是随意发出的几个字,都有可能会犯下致命的错误。
好在过了两三天,课程组最终确定了关于这门课的期末考试的政策:分AB卷,但只能考其中一次。这才逐渐平息了这场《第二次“期末困境”》。
最后,有三分之二的同学选择了A卷考试。其实关于考试的内容,我们助教在发完试卷后就将多余的卷子交回去了,因此关于试卷的具体内容,我们也不得而知。监考时,站在最后一排,看着大家奋笔疾书的背影。第一次从这个视角来观看考试,很是震撼。
期末考完后,需要在三天的时间里完成平时作业与上机的分数结算。前者的结算非常容易,而后者由于没有设定阶段性的ddl,许多同学都是在期末考试结束后来验收的(也有少数的同学在平时就同步完成了这些项目),这就使得上机作业的验收变得有些困难。
期末集中验收一共进行了好几轮。前几轮分别在USTC 1958和青年之家这两个地方进行,大家轮流排队来验收,一轮持续三小时。而到了最后两天,由于小阳人的数量激增,我们也不得不将最后两次的验收放在了腾讯会议上进行。总之,这绝对是难忘的一大经历了。
为了提高验收的效率,我用了半天的时间拿Python写了一个验收检查程序,用于生成随机的测试用例及预期输出结果,方便大家自检与检查。对于答案相对比较单一的多项式计算、表达式求值和图的最短路径,主要是由这个程序来检查;而对于答案比较开放的银行排队模拟、Huffman树构建和排序算法的比对,则主要是人工判断或加以一定的代码检查(这一部分主要是由另一位助教完成的)。
在突击了两三天后,总算是完成了ddl的结算工作。这个故事告诉我们,作为助教,能设立一个阶段性的ddl最好不过;而作为学生,能分阶段地完成各个实验也可以大幅减少最后阶段的压力以及排队的时间。
寒假结束返校的第二周,便是B卷的考试。相比于A卷而言,B卷考场的规模就没有那么大了,毕竟只剩下了三分之一的考生。
B卷考试在一个较小的考场进行,考完后的第三天便是阅卷,而阅卷后只过了一个中午,大家便能够查到自己的成绩了。在满屏的“谢谢老师”“谢谢助教”中,短暂的助教生涯就此划上了句号。
后来,由于我经常在中区食堂吃饭(&在东中西三个区里散步),也有不少的同学经常来东区上课,因此我也总能在路上或食堂里见到许多这门课里的同学。有同学表示以后可以经常偶遇了,也有同学表示明年他也要来申请数据结构这门课的助教。能够给大家带来一个良好的体验,的确感到非常地满足。通过评教系统中的评分排名,我也很荣幸地评上了优秀助教,再次感谢大家的支持!
现在大家陆续地从中区搬到高新区了,以后偶遇可能也不是那么地容易了。但有了这半年的互相陪伴的记忆,何尝不是一种随时随地都能够一直存在下去的偶遇?
作为一个高中有过一段时间信息竞赛经历的人来说,也即他人眼中的所谓“既得利益者”,本身我是没有准备对这门课进行评价的。但是在出分之后,又实在意难平,于是上来说两句。
评分:课程本身8分,助教10分,期末考6分(没错,我在评价期末考)
首先,公允的来讲,课程本身算不上好也算不上坏。信智学部的课程都一样,“无非”是课程内容老了点,脱离时代了一点,而这也无可厚非。这种历史性的通用性的问题自不必谈。至于上课,说实话一整个学期我都摆烂没怎么去上课,因此也不好评价。
然后对于助教,蔡助教真的是一位非常好的助教——虽然事实上我与助教的交流可能是微乎其微的。但是即使是从我和助教非常少量的交流中,我也能感受到助教的细心友好。顺带一提,在期末考后结束,虽然绩点已经出了并且难以改变,助教仍然使用了个人的时间陪我去档案室查卷,真的十分感动。
接下来就是期末考了。这门课的期末考卷真的是一团浆糊,完全不知所云。现在简单的举两个例子。
1. 对于某个数组进行一趟快速排序,求结果(3分)。众所周知,快速排序有很多种实现方式,这道题最后也没有按照多解批改,而是强制按照某一种(老师所讲的)实现来。个人而言,认为算法终究是重在理解,这样的没有任何关于算法的细节描述就要求给出结果的,未免过于不合理。科大的另一门课(计科,大数据的数据结构)所讲的快速排序与这门课就是两种写法。
建议:对期末卷加多一些的细节描述,尤其是这种没有过程只看答案的题目,不然任何微小的偏差所造成的影响都是致命的。(如果你要怼我,说就应该按照老师的来复习,我没有仔细记住老师的那种算法,那么就是你对)
2. 求迪杰斯特拉算法的运行状态(数组的值)(4分)。迪杰斯特拉与快排相比,整体逻辑还是清楚很多,一般也没有第二种写法。但是在实现上也还是可能出现微小的差别的。在进入大循环之前,一种做法是只有原点一个点,然后循环中逐步拓展;另一种做法是先对原点进行拓展,在循环内继续逐步拓展。这实际上就代表了两种可能性,两种对于迪杰斯特拉初态的不同理解。我在考试卷上再三考虑后决定将两个答案都写在卷子上,并用笔标注。然而,最终批卷时没有看到我的第二个与标准答案相同的答案,导致失分。
建议:同样希望有更多的细节描述。同时,不知道是这门课的传统还是因为今年疫情影响导致时间不够,这门课是直接出的gpa,没有出卷面分和查卷的过程。个人认为,所有的课程期末考后都应该有查卷的机会。毕竟,人无完人,批卷可能会出现错误,但是这样的错误落在每个学生头上便是不可承受之重。个人不完全统计,查卷时发现批卷时漏看的答案有6分,另有11分程序题/算法设计题给了我0分(由于查卷时老师赶得紧,没有具体的详细查看,不能确定是否是失误;但是以个人代码功底与自信,以及以往的情况,个人认为我的算法实现上比较不同,批卷时批卷者没看懂的概率较大。此条也是你杠就是你对,说我自信过度的一律不听)
简单总结一下。这门课我的作业实验是基本满分,上机考试的成绩和助教确认过确实是班级极为考前,期末卷面71,总评85(合着我还得感谢老师捞我到3.7是吧)。最后这个成绩确实是不符合我的预期,而且查卷之后没有办法修改成绩这件事情确实是让我非常气愤,但是只能说倒霉吧。
对于信智学部的所有考试,非开放类的题目我希望老师一定要好好确认严谨性。计算机类的这种题目,不严谨是大忌(我总不能每个非开放类题目旁边都写一大段注释吧!改卷的人也懒得看啊)
老师讲课还是不错的,比较细致,有关算法的东西一步一步的推(就是如果很快get到的话就显得有点无聊,楽),没有考勤没有小测没有期中考试,平时压力很小。
上机作业的话量不少(取决于你想在附加实验里捞多少分),而且有上机考试不是很友好:((((;期末笔试老师是不给往年题的,但是能找学长要到,题目模式很单一,刷一套就够了其实。
主要加分点是这门课的助教真的是我上过的课里数一数二好的了,为人很谦逊人品很好,而且非常有耐心,在作业里把错的部分标出来,还能写一下怎么改,上机实验可以耐心一起debug......蔡爹受我一拜!
给分未知,还没出分,我炸的一批,先给9分好评,要是给我捞起来了我就给点评改成10分:)
出分惹,被捞起来惹,感谢老师,卷面分未知,但窝感觉是奶了点:)
(跟一位同学交流了下,上机考试小寄应该没事,他上机寄了但是不耽误拿很高的总评)
首先,老师很好,可以来选。 刘东老师上课幽默风趣,讲解清晰易懂,遇到重难点(KMP)会放慢速度讲。 实验除了必做还有选做,做了可以加分(虽然不多)。
蔡助教yyds!
这学期我学了很多数据结构和算法方面的知识,LeetCode也刷了很多题,不过考试出来的那时候我还是有点绷不住:猪鼻了好多地方啊。所以当发现拿了优秀时,还是不敢相信自己的眼睛。
老师的讲课其实很好,善于诱导学生思考而不是直接告诉答案,这对学生深入了解数据结构和算法来说是非常有启发的。
课程实验是我花费时间最多的地方,有时会在一个实验上卡上三四个星期,尤其是完成特殊功能。但是,当做出来的那一刻,收获的喜悦是无与伦比的。
蔡助教不用多说,几乎每周都会拿着程序找他debug,他也会和我一起分析问题所在。作业批改方面尽心尽力,指出每一处的问题所在,也会对优秀的解答附上一句表扬。在对学生负责这方面,我实在找不出第二个更加贴心、耐心的助教了。
做了一份课程实验和作业的C++代码,挂在Github上了。不放链接,有缘无缘都请自己独立思考一下。
Github 仓库已经关闭,希望这学期可以看到同学们创新性的代码和思路!
老师给分真的不太好,不调分不捞人,在这门课上花了很多时间换来gpa减0.04
最努力的课拿了最低g,学P
11分给助教,7分给课程本身(根据具体分数可能会修改[已修改]),总体上给分成绩令我满意,比我大一的C好上一大截~
助教哥哥非常细心友好,必须吹爆!比起大一程设的助教,更耐心于帮我这种菜鸡de一些奇怪的bug,真心学到了不少耶。(评论发迟了qaq,希望助教还记得我bushi)
光是老师讲课水平和蔡助教的负责程度,这门课就足够满分了! 我看很多同学说没调分,个人感觉还是调了很多(前提是把每次大作业附加题写了就行) 期末最后一道代码题只因了,上机考试(可以上网查资料甚至偷偷交流)好难啊!!!!本来在上机考完之后就已经不抱希望了,结果总评出来刚好给捞到90了 建议把作业题做好,考前如果有途径可以看看往年题,这回考试出了很多往年原题
对课程的印象 数据结构这门课程的难度并不算特别大,只要平时有认真听课,理解掌握好书上的知识点(感觉就kmp那里和后面的树与图比较复杂),完成手写作业和上机实验即可。作业题有一定难度,不过量不大,在此不过多叙述;上机实验一共7个,其中必做实验5个,选做实验2个,本学期必做实验的考察内容是多项式计算器(栈)、表达式求值(栈)/银行排队系统模拟(队列?我没选这个)、霍夫曼编解码(最难的实验,HuffmanTree,可以在csdn或者githuh找找参考,不过csdn那几个貌似不是很靠谱)、最短路径(图,主体代码可参考课本)、排序算法(排序,可直接抄ppt),选做实验是旅行商问题和话费统计,在这里列出来供学弟学妹们参考。上机考试可以利用各种工具,包括但不限于教材、ppt、CSDN等(所以考试前一定要让电脑连好网络),一共有两道题,第一道好像是排序的,比较常规,第二题是非常诡异的二叉树三叉树混着考,班里几乎所有同学都没做出来(所以如果你觉得第二题太难,赶紧交卷赚个时间分吧hhh),不过话说回来,从最后的分数结果来看,上机考试的分数占比应该是被调低了,所以大家也不必过于在意上机考试。今年期末考由于疫情分了AB卷,我考的是A卷,A卷选择题跟往年卷有部分重合,建议有能力的同学做一两套往年卷,不会吃亏的,整份卷除了选择题有一道我不是很确定,其他题目都比较常规,难度不大。
对刘东老师的印象 刘老师讲课很细致从容,有一种娓娓道来的感觉,对数据结构及其算法知识薄弱的同学来说相对比较友好,上课是不点名的,而且也有开bb网课,所以想偷懒不去教室的同学也可以大胆尝试。老师也相当认真负责,关于课程内容有任何疑惑不解的地方,可以在下课后找老师询问,老师都会尽心尽力地为同学们答疑解惑。给分的话我感觉是挺奶的,比较熟的几个同学都给了优秀,但看了看其他同学的评论,似乎也有没被捞的,所以本着中立原则,给分那一项我给了一般。
对助教的印象 本学期有两位助教,分别是蔡旻轩师兄和李越师兄,这里重点吹一下蔡师兄。蔡师兄的助教工作非常认真负责,会及时解答同学们关于作业与上机实验的问题,在Huffman树这个难度较高的实验过程中,师兄还在github上找了一段代码供我们参考。蔡师兄平易近人、幽默风趣,会在作业本上与同学们积极互动(bushi),改作业也相当放水,会标注出错误,但不会扣太多分(一次作业满分一百,我错一两处,拿了99分,你细品),深受同学们的爱戴与拥护。
老师讲课形式还是很喜欢的,很细,适合我这种程设学的不好的。助教也很好,交作业debug什么都很好。扣个一分给自己吧,期末考的还行,然后3.3,估计因为上级寄了,期末大家太卷了。
碰到最好的助教,老师讲课有点无聊,讲的太细了而且板书我有点看不清,所以上课主打了一个陪伴,考前一个月很认真地复习了,花了很多时间在这门课上,最后就2.7,比预期低不少,有些难过,这学期一直在掉g,10分给助教,讲课有点无聊+绩点没达到预期扣一分(哭)
本课程以各种数据结构为中心,介绍数据结构的概念以及相关算法;如果之后还要修读《算法基础》等课程,那么这门课能起到非常好的引导作用。刘老师水平很高,上课氛围很好,作业不多比较轻松。一共有五次必做实验,实验报告选其中的几次写期末统一交;印象中最麻烦的一次就是哈夫曼树。(上机时间老师会在机房,甚至还会亲自帮同学Debug。)
最后给分基本按照比例,给个参考:卷面89,作业96,实验98,总评92。
刘老师很温柔,上课很有风范,有种青年才俊的感觉,上课听起来让人感觉很舒服。
刘老师的PPT思路很清晰,每一章的重点能直接捕捉到,这对课后复习帮助也很大。
至于考核得分问题,老师在上第一节课就说不调分,严格按照127比例来给分,按照我自己的成绩估算来看,结果应该是87.6,总评最终88,看起来应该确实没有调分。但是根据群友的消息来看,刘老师还是有一定程度的调分的。
作业的1,老师说不看正确与否只看是否按时提交,这一块大家应该都是满的。
实验的2,分为实验课的5个必做实验和2个选做实验和上机实验考试。
其中实验课5个必做实验每个2分,2个选做实验每个1分(最多拿到12分)
上机实验考试卷面一共100分,附加题有20分(按照10:1折算后最多拿到12分)
(这里吐槽一句,上机实验之前说假若正确率相同,提交的越快的分数越高,结果我提交的很早很早,最后似乎考察成绩时也没有参考提交时间。)
因此实验部分最多能拿到24分。
期末考试全学年统一阅卷按照卷面分数折合计算成绩。
考前并没有拿到数据结构期末考试的往年题目,据说是学科组不想让题出的越来越难,因此严格保密每年的考试题目。
考试题目大概是先是若干道基础选择题和若干道基础填空题,其中考的很杂,考的内容比如各个排序算法的复杂度,各个排序算法的优点,栈和队列的特点,出栈顺序等等,都是些细碎的知识点,学习时要注意细节,教材中每一章的课后总结对这一部分很有帮助。
大题部分我记得出了一个哈希表,出了一个排序算法,还有一个Dijkstra算法,最后大题是自己写代码应用题。大题部分就是要掌握树上罗列的各种算法。
还是感谢刘老师,大一玩飞了,C语言烂掉了,最后数据结构考的还不错,感谢刘老师。
以下附上本课程的课程主页:
Data Structure and Algorithm (ustc.edu.cn)
网安默认置课老师 平时和期末三七开 平时有作业 上机和上机考试 期末运气好些 92分 最后总评95 也学到很多
有的人表面说着不调分,背地里应该是偷偷调分了,至少我室友被大奶一口,自己也感觉被调了几分
老师上课讲得很细致,对比我的C程老师简直是云泥之别,平时作业也很少,但会有一次实验考试(开卷)
刘老师课讲得很好,讲得非常清楚,而且PPT也十分详尽,是在科大目前遇到讲课第二好的老师。 但是嘞,如果有分数焦虑的同学(比如我),建议不要选。一方面是刘老师本来说不调分(因为前几年分普遍高),但是今年由于分低说要调分。另一方面刘老师在考完之后不让透露平均分,也不告诉你实验具体给分标准,查卷也不让你自己看一下,就很焦虑。 期末考试偏简单,但是一错就完蛋(有一道邻接表的应用题,弧头弧尾想错了八分应该一分没有2333我还在想这道题真阴险)。 总之期末分数出来心态已经崩了,但是刘老师上课确实不错,而且作业很少,上完一学期也是挺享受的。唉,气死我了。
老师讲课比较耐心,也很生动。布置的作业量少,有时候一个星期只有一两道题。实验内容难度正常。
考试自我感觉良好,但总评创了新低。有点郁闷。
刘东老师的课虽然可能称不上精彩,不过也非常清晰,对初学者还是很友好的。个人感觉老师前面线性表的部分讲的有点慢了,导致图的部分速度偏快。实验题不算阴间,但也不是很水,需要下去之后码码代码。另外,学期末的时候还需要选三个实验提交三份实验报告,报告的格式会在老师的课程主页上写明。今年给分严格按照作业实验考试127不调分,据说卡绩也没有捞。由于自己C语言当时学得比较轻松,所以原本以为这门课3.7应该问题不大,结果不知为何考试卷面炸的非常惨(由于不给查卷,因此也没法知道自己炸在哪儿),加上不调分,最后喜提一个2.7,还是很失望的。所以也提醒学弟学妹们(如果有学妹的话)不要因为C语言学得好而掉以轻心。综上来说,从讲课角度,刘东老师的课还是值得推荐的;不过如果以后给分都这么给的话,选课时候还是要犹豫一下。
非常喜欢刘东老师讲课的思路和语言,循循善诱,给人感觉很温柔的老师。
平时作业挺少的,写代码的题不是很多,每周一个小时内应该都可以完成。
给分个人感觉很不错,考前刷一刷考研题的话基本上期末全会。这次卷子可能出的比较简单,选择填空基本上都是在捞学生,最后代码题有一定难度,需要开始的思路就比较清晰,否则手写代码很难修改结构。
收获多少主要还是看自己大作业时候有没有多学点其他东西吧,毕竟课上讲的并不多,都比较基础。
首先我本人是个计算机小白,对计算机类课程其实打心里都挺怵的。
大一的时候C语言程序设计就学得很痛苦,最后得了3.7,与身边某些看起来很轻松但最后总评4+的人对比,还是有些失落滴(不过人家或许提前在中学阶段下了功夫,成绩比我好也是必然)。
大一结束后从东区转到信息学院,虽然知道信息学院后续还要学数据结构及其算法和计算机网络,但实在不想学东区的专业就只好硬着头皮来上课了。
刘东老师给人一种青年才俊的感觉,讲课很清晰,重点部分会有很多页ppt展开详细讲,有些非重点但很有用的东西也会讲的比较多,有些非重点部分会略讲,相应的ppt篇幅也会减少,这对后期复习也有帮助,考前会画一画重点,答疑态度很好,他本人和信息学院自动化系熊老师好像还有一个联合实验室也挺强的,以及他上课有ppt而且开学初就会把这一学期所有的ppt都共享到课程群里,而且还会为学生解答一些其他方面的问题。我就曾经私发邮件问过他关于未来专业方向选择规划的问题,老师的回复很及时而且耐心,给我写了很多,超感动!!!老师给分也不错,我得到的分数总之是我意料之外的。
关于这门课程本身,我感觉计算机类课就和数学类课一样是一个无底洞,你可以挖得很深,也可以局限于把课后题做完。不过个人还是推荐深挖一点,这样考试会更从容不迫。本人在前半学期比较闲,多看了一些关于数据结构的东西,还去直接尝试过leetcode上的题(虽然用时超长呜呜呜),因此感觉这门课还是挺难的。心疼CS系的同学,他们的估计更难。这门课平时作业很少,就课后几个题而且还不是全做。这门课会有上机实验,五六个上机实验,难度本人觉得适中,主要是代码量稍大一些,然后不要犯一些逻辑错误,但是没有涉及很难的算法,上机实验推荐能做就尽早开始做。这门课没有期中考试,最后应该是总评=期末考试卷面分数+上机实验分数(有必做和选做)+上机实验报告分数+平时作业分数,各部分的比例会根据期末卷面来调整。上机实验好好做,实验报告认真写结果都会不错。
首先修正一下,这门课本学期的学分调整为3.5,下降了0.5个学分。
其次是评课:
上课来说,刘东老师很有青年学者的风范,讲课有条理加上PPT内容丰富,可以说是“胸有成竹,娓娓道来”。
上机来说,数据结构很重要的一部分是上机实验,刘老师的班一学期有五个必做实验和两个选做,做了选做实验并且写了实验报告应该会有加分。上机实验的难度可以说是适中,有难度但不会做不完,当然肯定课下得花时间写一写代码。感觉如果能独立完成实验并且坚持敲敲代码,对完成期末考试的编程题大有裨益。
作业来说,刘老师留的作业其实是挺少的。当然作业少,就意味着期末复习得多刷刷题练练了。作业少的老师都受欢迎,不过学习效果如何还是见仁见智。
助教来说,似乎是研究生?感觉助教挺忙的,每周二收了作业就走了,不过上机的时候能一直见到他们。但是还是十分负责,每周作业都会上传作业题编译通过的正确答案,似乎是助教亲自写的。
给分来说,只以我个人为参考。平时作业完成还行,期末感觉还是挺难的,没有查卷,实验报告写得比较认真并且做了选做(不是非常难),最后拿到了优秀。
总结就是无论考试难易,认真上课认真写报告,无论是你的收获还是你的绩点一定会让你满意的。
老师上课还是蛮认真负责的 而且前面线性表部分讲的特别细致(虽然上课很想睡觉) 进度前面有点慢导致后面上的比较快 但最后几章老师上课上的真的好(用的课本最后看的真的难受)深入浅出2333
然后上机实验也比较轻松 除了哈夫曼难度不是一个级别的
总之老师很负责啦
上课非常认真细致,不仅详细讲解了各类数据结构的原理和应用,而且有关c语言语法的部分也详细地讲了,造福对c语言掌握得不够好的同学(比如我),就是上课有点慢,而且催眠,我差不多睡了半个学期。。。。。。
作业感觉太少了,光做老师布置的作业是不够的,还得把课本上的其他题目刷一刷。
上机实验也偏简单,不过最难的哈夫曼编码只给了一个晚上做有点坑爹。
给分非常好,我睡了这么久,期末考试前随便刷了两套往年试卷,实验整了三个最简单的交报告上去,也给了3.7,强烈推荐。