选课类别:基础 | 教学类型:理论实验课 |
课程类别:研究生课程 | 开课单位:先进技术研究院 |
课程层次:硕士 | 学分:3.0 |
1
软件学院的算法
平时三次点名,每次课最后会以随堂检测写题的形式进行。
12次作业,8次实验,一共占30%。作业偏难且量大,实验难度适中(有lc hard题),每次作业大家的分值普遍在8-10(10分制),奉劝对自己实力不是很有信心的同学上网搜题参考。
一开始说是会有2次小测(开卷考试),但由于疫情合并成了一次期中考试,占分20%-30%。考试会考作业题,建议带着作业去考试。期中最后一道题是动态规划。
期末考试闭卷,题型填空、简答、大题。填空简答考的不偏,徐老师最后划重点的细节有些应该是以前考过的,不会全考,但多多少少考一点(只考一点哦)。今年最后两道大题(大题不止两道)分别是:
四个数进行加减乘除括号,看是否能求24,设计算法并分析时间复杂度。思路是回溯递归。
st表
按找到的往年题和今年的题对比,期末考试递归式求解和同余方程组求解是必考的。
考试试卷总体来说不难(除了最后一两道大题),给分还是比较实在但最后应该提了点分。本人无算法基础,lc刷个位数,作业和实验分数在9-10偏多,点名都在,期中动态规划不会写,期末st表不会写(填空简答也空了一些),最后拿了90+。
该课程默认同学学过C语言和数据结构,课程亮点:善于从直觉讲清楚算法的设计动机,作业、考试也鼓励我们在写伪代码之前写上核心思想;即使前导课程讲解过算法,由于《算法导论》的实现非常优雅,上课也会着重讲其实现;对关键算法时间复杂度推导详尽;结合自己接触过、了解过的研究,展示基于经典数据结构的延申或其他心得。
前面花了大量时间打基础,留下后面的一些遗憾。斐波那契树、B树略去未讲,转而以二项树作为入门;后续一些高级主题只讲了串匹配和数论,数论部分讲解又显得有些仓促。
关于考试,确实没有要死记硬背的内容(红黑树6个case之类的就不会考),但凡是讲过的内容都是重点,一定要结合作业复习。
试卷将有20分左右的思考题,不能直接从教材得来,有时要结合自身思考。可参考本科生内容: https://icourse.club/course/5261/
按一贯风格,老师上课补充的部分得记笔记,例如早期一次课老师讲了大数乘法(还是其他什么?)当今最好的时间复杂度,老师说可能会考,结果应验了,虽然也就填空题2个空。