选课类别:计划内与自由选修 | 教学类型:理论实验课 |
课程类别:本科计划内课程 | 开课单位:计算机科学与技术系 |
课程层次:专业基础 | 学分:3.5 |
"在计算机科学中,算法(Algorithm)可以理解为求解问题的一个具体计算步骤。本课程主要介绍算法的基本概念,以及算法设计和分析的基本方法和技巧。课程包含了高级数据结构和算法的若干基本内容:算法分析的基本技术、排序、堆和优先队列、红黑树、平摊分析、二项堆、分离集合、分治法、动态规划、贪心法、快速富利叶变换、图论算法、串匹配等,和典型计算问题的求解算法。"
李向阳和谈海生老师共同讲授这门《算法基础》课程。李向阳老师以其富有感染力的授课风格,将算法的核心思想与广泛的应用案例相结合,而谈海生老师则注重算法思想的深入剖析和清晰的逻辑讲解。两位老师从不同侧面使课程兼具理论深度和实际应用性,课程内容全面涵盖了《算法导论》的大部分章节,提供了一个深刻理解算法思想的机会。
课程评估由期中和期末考试组成。考试题目重在考察对算法的理解与应用,没有死记硬背的要求,对上课内容的掌握尤为重要。期中考试相对较难,包含书本思考题原题,而期末考试相对简单。附加题有助于更深入的算法探讨。给分相对合理,优秀率符合标准,但评卷对某些题目较为严格,错误部分可能爆零,影响总分。
作业分为书面作业和OJ实验。书面作业使用LaTeX编写,题目多是课后习题,偏学术证明题。OJ实验即在线编程作业,虽然具有挑战性,但对于代码能力有很好的提升,题目覆盖了课堂所学的大部分算法。总的来说,作业和实验负担不轻但非常有成效。
谈老师课堂组织井然有序,细致讲解算法设计与思想,强调理论与实际的结合。而李老师注重通过发散思维拓展学生对算法背景知识的视野。两位老师风格互补,使学生能够从多角度理解算法。同时,课程中涉及的内容让学生有机会接触前沿的计算理论与技术。
课程内容既包含基础的排序与数据结构,又涉及更高层次的动态规划、贪心算法、网络流等,更有NP问题和近似算法介绍。上课还会引入实际应用案例和面试题,这使得理论学习不再仅仅是书本知识,而是联系实践的核心竞争力。
总体而言,《算法基础》课程是挑战性与收获并存的课程。它要求对计算机科学基础知识有较好的掌握,适合那些对算法有探究精神的学生。对于普通学生来说,课程压力相对较大,但从长远来看,能为计算机科学的学习和实践打下扎实基础。
给他课前五分钟的时间,他能给你三周出三次小测。给他一些课本思考题,他能让你的作业整出离散和数分。这就是大名鼎鼎的算法基础课程。国庆假期期间,大家都在四处狂欢,而算法基础的学生们只能看着晦涩难懂的题目,花费数十个小时而毫无头绪。当你以为终于写完了的时候,下一个为期一周的作业接踵而至。戴高乐曾言:“因为要写这门课的作业而查的资料,我数了一个晚上,并不是我数完了,而是因为天亮了”。计算机科学之父图灵声泪俱下地说道:“倘若我能早点到中科大的算法基础课程进修,现代计算机的出现至少将提前30年”。就连美国五星上将麦克阿瑟都表示:“要是我的士兵都能在这门课程中学习一个月,三天之内赢得太平洋战争都不在话下。”这就是令人神往的算法基础课程。大型纪录片《算法基础传奇》持续为您播出。
1.20:纯纯的nt,期末周布置实验,期末结束了还得赶实验,好像谁放假都很有空一样,还得花时间完成那nt实验
仅从作业难度上说:
lxy的算法算是“质疑cx,理解cx,成为cx,超越cx”了(bushi
上学期在cx班水群看群友因为太难破防还心存侥幸,这下妹想到小丑竟是我自己🤣🤣🤣
哈哈,这就是lxy和他的弟子们带给我的自信😊😊😊光敲latex就快10h了然鹅还妹写完🤣🤣🤣
看出作业的TA在某群里说“为什么大家不喜欢我出的作业”😂😂😂我只能说TA有点高估了普通鸡皮的数学功底了。题写不出来一点还会喜欢做题,那怕不是精神出了点问题罢……
但是话说回来,没有现成答案+善用搜索引擎也没有太大作用+只能用脑子想 还是很全新的体验,只不过普通鸡皮真的没有太多时间浪费在一门课上(毕竟又不是所有人毕业以后要去搞算法)
nnd16周了还tm布置作业,cnm(是不是还要布置那惦记的第五次实验🤣🤣🤣
别说攻击性强,LINKE实验室的是不是都多少带点nt。数据隐私和算法基础都tm这么恶心人🤣🤣🤣
喜欢学算法的快来!!!🤣🤣🤣🤡🤡🤡
鉴定为助教乱tm出题,你是在考我算法呢还是考我离散和淑芬呢? 看了去年的作业题,这学期是助教自己出的是吧。助教无敌是吧,什么傻暖助教。 全是证明题目,你能不能换个班带助教,别尼玛来祸害计科了。 去数院带课不好吗?在算法课秀尼玛的数学呢。
前排提醒: 非本班学生看到反响如此激烈想来说两句. 分数复制当前均分, 四围是根据自己和舍友做hw1体验给的. 作为没选课但出于兴趣跟着做了两次hw的云旁听, 我没有到教室上过课, 也没有加课群, 因此完全不了解这门课老师和助教的行为. 本篇所有内容都围绕hw的题目及大家对此的反馈, 与其它方面无关.
`
其实抛开数量和时间限制不谈, 我还挺喜欢这两次作业的题目的. 一方面它对前置知识的需求恰到好处: 既全面覆盖前置课程内容又不需要过多拓展 (除了逆天的4.3.2) ; 另一方面它又不只是定义回顾, 证明题在套定义的部分之外依然要求思维量故颇具挑战性. 我因为没有跟着学这门课, hw1的第三大题完全没看, 其它题都自己试着做了一遍, 感觉很有收获. 如果每次作业都尽力攻克每一道题, 坚持一个学期相比会对自己的理论能力有不小的提升, 虽然现实条件大概率不允许这么做就是了.
那么为什么相当多的学生体验如此糟糕呢? 显然数量和时间的不平衡是一个重要因素, 但不是全部. 反证法: 如果问题仅仅出在题目数量过多, 而国庆假期过短, 那么学生至少可以正常地写完一定比例的题目, 剩下的部分大概会自发以宿舍为单位形成互助小组解决. 但现实情况是许多学生攻克一道题目都举步维艰, thus lead to contradiction! 更大的问题在于, 对许多学生来说, 前置知识的需求程度与实际掌握程度完全是脱节的. 当然出题人可以辩解说需要用到的数学无非是数分, 离散, 按理说学生都已经学过. 但已经学过的知识大面积地出现用时方恨少的状况, 恐怕不是学生的过失, 而是更反映出那个老生常谈的问题: 计科, 乃至信智学部前两年的数学基础课教出了什么效果. 这里面既可能有具体某年课堂或某位老师出了失误的因素, 也可能是教学的设置本身就有系统性的问题.
一以蔽之, 这两次的算法作业仅就难度而言, 与其说是失当或理论性过重, 不如说是与学生当下的数学基础不匹配. 而不匹配的根源或许不是算法基础的理论拔得过高 (毕竟在期末不统考的前提下, 老师本就应有一定程度上根据自己的理念微调课堂方向的权限. 这也有利于学生所接触内容的多元化) , 而是此前的某些课程没能合格地完成自己的任务.
顺便借此发表一些主观的 "暴论" : 比起数学基本功的缺乏, 数学基础课的不作为给学生带来的更深的坏处或许是对数学本身的恐惧与厌恶. 从同学们对hw1的评价来看, 多数学生在面对需要思维量的数学时第一反应不是试着思考, 而是抗拒乃至攻击数学. 虽然这么说可能显得有些出于私好, 但我还是认为计算机学习者即使不一定要有多丰富的具体数学知识, 也应保有一些钻研数学原理的动力. 或许计科专业后续除了算法基础外没有第二门课程有这么强的理论性, 所以这一点的重要性并不凸显. 但一个人的学习又何止于本科的课程呢? 能让如此多的学生在上过两年后如此一致地厌恶数学, 排斥需要用到数学的内容, 计科的数学基础课可谓影响深远. 相比之下, 让学生在学习中厌恨物理就没有那么大的负面影响, 毕竟我们将来真的用不到量子力学.
期末100+10 总评100
这门课谈老师主讲李老师偶尔上上。李老师的理论水平很高,不愧是拿过Godel Prize的Shang-Hua Teng的弟子,本身课程没有什么收获,但听他上课总是有不同的体验。谈老师讲的也很深,涉及了一些研究生课才会上的东西。
总的来说两次考试都特别简单,助教出卷也特别好,重在考察理解。课程期间帮助教上了一次习题课。不过建议以后助教在OJ题目上加入防作弊功能,就考试情况来看,与OJ上过题人数严重不符。
也希望后面选修这门课的同学在OJ独立自主的完成任务,因为平时分是短暂的,从课堂上学到知识才是关键,这也是两位老师和几名助教的期许。特别感谢几名助教的付出,让这门课与传统的科大计算机课有所不同,尤其体现在考试卷子上。
最后想夹带点私货,欢迎大家加入USTC算法交流群:132655724。 里面有很多很厉害的学长学姐,我们也会组织大家参加ICPC/CCPC各类赛事。
来科大以来收获最多的几门课之一。
这门课这学期是谈老师讲了大部分内容,然后李老师做一些补充。个人感觉很好地兼顾了不同基础水平的同学们,毕竟算法这东西简单的部分确实非常简单,难了却能难上天。而且很难得的在200人大课上依然给予了同学们很多自己思考各种问题的机会,孩子非常喜欢。两位老师在讲课中展示了很多算法设计中的设计思想和证明思想,非常注重理论与实例的联系,也有意识地引入了很多面试题和科研命题作为补充,这两点相比计科很多念书老师真的是强太多了。
作业这边以算法证明和算法推导为主,基本没有从书上抄概念之类的恶心问题。(点名批评操作系统和COD)
实验的话基本都在100行内可以搞定。几乎所有需要实现的算法书上都有伪代码。最麻烦的应该就是手写红黑树,但一个老师给了伪代码,再一个数据结构讲过实现起来非常简单的AVL,所以总体还是比较轻松的。然后就本学期贪心还有一个比较有思考难度的实验,我觉得挺有意思的。
考试的话分为期中和期末两场。用李老师的话来说,“我的考试你们根本不用复习,听了课肯定考得不差。”我觉得他说的挺对。期中期末考试题目中哪怕是判断题也完全不涉及名词的语言定义,算法题目只要好好理解了每一种算法的思想和流程基本一马平川,也完全不需要背诵什么伪代码。最后的附加题考了一些近似算法的设计和证明,可以说确实对得起附加题三个字,深刻体现出算法这门课的深层次思想。
另外就是李老师有意识的在课上拔高了很多近似算法思想,个人感觉非常有意义,极大地提升了大家对复杂度、结果的认识。这些是无论参加多少算法竞赛都无法收获到的。
当然这门课也不可能是完美的。在这里也提出一些小的意见(私货):
1.感觉下个学期可以再开一个平行班?现在这个平行班一下子有200人实在太多了。(甚至有些缺氧)
2.计算理论部分有点太匆忙了(一节课过了两章),感觉如果可以的话希望把字符串的部分砍一些挪到程序设计2,然后后面多花几节课讲一下NP问题和近似算法问题。这一部分复习的时候看了一遍书发现有很多值得探讨的内容没能涉及到,感觉挺可惜的。
关于评分:
。。。抱歉真的对不住各位
我真的没有想要卷。。。考前甚至跑去树袋熊网吧练沙皇去了(然而并没有学会)
然而据助教说我依然是最高分。。。
没有具体查两次考试的成绩,但期中期末应该都是90+10,实验是正题附加题全部ac。
真的对不住。。。我自裁。。。
这门课两个老师都会来上课,主要还是谈老师讲,但在谈老师出差时会由李老师来上课。两个老师风格不同,看往年评课说李老师讲课比较烂,谈老师比较认真;不过我个人体验来说李老师讲课还是可以的,比较有槽点的是每次李老师来上课都会强调说自己前一天备课准备了整整一面的讲稿,还常常会从知识点本身引申出提到自己博士期间做过某某工作;谈老师认真确实很认真,也能感受出老师想让我们感受算法的一些思想,不过个人觉得老师表达能力有点差,显得嘴有时跟不上脑子。
上课使用的所有 slides 都在 课程主页 上有,全部使用英文,是往年由 LINKE 实验室里研究生使用 \(\LaTeX\) 制作的。
一共有 9 次小测,每次小测会有一到两道题目,基本属于送分题,但这小测次数之多还是很让人感到不爽。
课堂内容在上面的课程主页也可以看到,基本涵盖了算法导论大部分内容,个人感觉内容还是很不错的,基本都属于必学的。
这学期一共10次作业,5次实验。个人感觉学期初饱受争议的某个助教负责出的第一二五八次作业还是很不错的,看得出来助教出作业花了不少心思,不过做起来也确实不轻松。剩下的作业大多属于基础题,所花时间要少一些。我统计了一下完成每次作业花的时间见下图 (仅写 latex 源码的时间,不包括思考时间)。
实验全在 oj 上完成,不需要写报告。前四次实验每次四个题目,第五次实验八个题目,每个题目10分,只需完成200分即可拿到满分。前面几次实验难度还算正常,最后一次实验难度较高,基本上包括了学过的各种比较难的算法或者没学过的算法变体 (单调栈、FFT、最大流、强连通分量、红黑树、并查集、斐波那契堆、字符串哈希)。
体验较差的地方在于结课甚至考试周之后还有作业实验。
我个人觉得期中期末两次考试好像都挺难的,不过批改好像比较松。期中期末都会有附加题,然后以 100 分计,回忆版见 这个评课 。
期中期末前谈老师好像都有在课上的复习环节。
不过值得吐槽的是老师期中前说,期中要给大家一个下马威,比较难,期末会出得简单一点,让大家过个好年。
收获还是很多的,个人觉得选这个班确实能学到东西。
几个算法基础班级,除去顾乃杰老师 (现在教辅修班了) 和春季的陈雪老师班 (难且高雅),徐云老师班和谈李班就属于各有千秋,都挺好的。
以下内容不计入评课:
助教:一共五位助教,期中期末各有一次习题课,个人觉得助教还行。
给分:给分好像是会先按比例算出一个成绩,再根据排名最高的五位同学的平均分进行调分,公式还是挺好的。
一些资料分享:
发一个回忆版题目,markdown的上下标复制过来无效了,自己脑补一下吧
判断题6个,每个5分,若错误请简要说明理由
f(n)=5f(n/2)+n2.5+n1.5 时间复杂度为 O(n2.5) (主定理试卷上给了)
任意红黑树左右子树高度差不超过2
任意无向连通图任意边权,最小生成树都是唯一的
堆排序时间复杂度最坏 O(n2)
johnson算法重新标注边权后任意两个点的最短距离不变
只含字符0和1的字符串 ,pi 数组为 0 1 2 3 2 1 0,这样的串有且仅有两个
大题前4题每个10分
定义红黑树森林两种操作为:
maketree(T, x) 创建一个新的红黑树,仅含一个节点x
merge(T1, T2) 合并两个红黑树,小的合并到大的上
给出长度为n的操作序列使操作的均摊复杂度最大
(这题题面冗长,记不太清了)
一只鸟要直线向南飞到目的地,距离为 d,(直线上)中途有 n 个树距离起点 a1 a2... an 可以休息,鸟的体力有限,每次休息后飞行距离不超过y,鸟在起点已经休息过,给出飞到目的地休息次数最小的策略并证明
网络流2F计算题 ,图很小
第一问写出NP NPC NP-hard 定义
第二问判断下面的命题是否正确并给出理由:若A能多项式时间规约到B,且B能多项式时间规约到A,则AB要么都是NP-hard,要么都不是
大题后两题每个15分
(3sum问题)第一问:ABC三个数组每个分别有n个元素,设计算法求出一组 ijk 使得 a[i]+b[j]+c[k]=0 ,并使时间复杂度尽可能小
第二问:若每个元素值域[-M, M], 请给出 O(MlogM) 算法,试卷有提示FFT
第一问:有n个长方体积木,第 i 个积木的长和宽 ai bi(长大于宽),堆叠积木,要求上面的积木长和宽分别小于下面的积木长和宽,设计算法求最高堆几个,并使时间复杂度尽可能小
第二问:若有n种尺寸长方体积木,第 i 种积木尺寸 ai×bi×ci ,每种都三个,每个都可以指定哪条边为长,哪条为宽,哪条为高,堆叠积木,要求上面的积木长和宽分别小于下面的积木长和宽,设计算法求最高堆多高,要求时间复杂度O(n2)
附加题二选一10分,题目比较冗长记不清楚了,不保证没有影响做题的错误表述或遗漏条件
一行n个金蛋每个里面有一个数字,相邻鸡蛋的数字相差±1,可以敲鸡蛋看到里面的数字,目标是找到装着数字0的鸡蛋,设计最优敲击方案使得在n趋于无穷时,在最坏情况下需要敲击鸡蛋的个数除以n-1的比值趋于一个常数,并证明
有宜居行星和不宜居行星共n个,可以在行星 i 和 j 之间花费 wij 修建虫洞使其连通 ,wij 满足三角不等式,目标花费尽可能小代价让宜居行星之间连通,请给出2-近似算法并证明
出分来评
这门课程压力大,作业多,小测多,水学分者勿入
不过这门课也是真的锻炼人,把10次作业都用latex写一遍(+tikz画图)之后,对latex写作应该就能入门了。(因此把收获多少改为了很多)
在翻hw2的时候发现了神奇的一道题
我有点看不懂
课程主页:https://cloud.linkeedge.top:1443/
这门课由李院长和谈老师授课,本学期大多数的时间是由谈老师讲课的。谈老师平时上课语速较快,声音有点小,但是本人每次坐前排听课,所以影响也不是很大。李院长上课则是给人比较悠闲的感觉。个人更加喜欢谈老师的风格,谈老师的上课内容十分紧凑,一节课下来把课本重要的内容都说清楚了,干货满满。
平时的作业分为笔头作业和OJ。笔头作业第一个月只布置了一次,之后一周一次,每次3-4题,虽然不算多,但是感觉想把过程写得很清楚明白需要非常多的笔墨(至少我每道题都会把比较完整的分析过程写下来)。偶尔会有几道比较奇怪的题目不知道要干啥…不过大部分题目都是与上课所教算法有关的,认真写收获还是很大的。OJ的话感觉第一次实验难度最大(因为第一次用OJ不太熟悉,而且确实有一题难度挺大,要用哈希表才能满分),后面的实验只用到课上所学算法就能解决。像红黑树,最大流等相关的实验,我一般是上CSDN找现成的框架然后改一改直接套,属于是懒人行为了。对于时间非常充足的人来说,可以尝试一下自己去实现这些结构。如果时间不是很充足的话,学这门课只需要熟悉各种算法的使用背景和思路就好了,以后要用到相关算法时,查阅资料即可。
考试的话期中和期末难度都比较适中,期末更加简单点。本人水平一般,复习得不是很充分,期中没做附加题考了74,期末附加题写了点过程考了81,最后总评给了86,算是非常奶了,应该比以往给分要好。
总结:课堂收获非常大,尤其是谈老师的课,认真听老师讲算法的实现和原理的推导会有很深的体会。平时作业不算很多,而且对编程的要求也不算太高(可以上网找框架),好好理解各种算法才是最重要的。考试难度适中,奶量尚可,5星好评。
这门课前半学期院长上课,后半学期谭老师上课。内容是数据结构以及基本算法,讲了《算法导论》的大部分内容,我这种之前没学过算法的收获还是蛮多的。
两位老师的讲课水平都还不错。噢对了,今年院长评上了ACM Fellow,所以讲课有点天马行空也很正常。谭海生老师曾是科大计院的郭奖大佬,讲课也算有板有眼。
作业使用Latex编辑,可以帮你熟悉下Latex语法,然后通过FTP提交。 一共有十次作业,而且内容基本上是《算法导论》的课后习题,偶尔会布置两道OJ题。
实验则是提交到OJ,会有运行时间限制。一共有6次,前5次均是4道题,最后一次只有一道KMP,理由是到期末没时间做了233333。体贴的助教会根据大家的提交情况适当延后DDL,最后一次实验甚至延迟到了最后一门考试之后四天。总之这门课负担还是挺重的,但是也提高了自己的编程能力。
这门课有期中考试和期末考试,考前会有样卷,考试内容不算难,大家考的应该都还不错。这里要夸一下助教,做PPT,搭建OJ,布置作业,布置实验,出试卷以及答疑,这些活都是助教的锅23333333。
最后给分还行,推荐大家来选呀~
上课基本没听,主要是作为学过算法竞赛的同学,听起来主要内容其实都非常简单。
但是不可否认课程内容里还是有一些东西相对来说更严谨,而且学起来数学味道更重。
这学期作业第一次作业太难崩了,后续也有好多下不了手的作业,而且小测,OJ和作业交叉甚至同时出现,非常难崩。
大一时就买了算法导论,那个时候看觉得内容好多,全是字全是话全是公式,这怎么看的下去?
现在看,其实如果理解了主要内容,抓住算法设计的核心idea,那么书上的大段图文都是可以直接跳过的。更何况中文书的翻译质量本来也就那样,真要看也没必要逐字逐句细钻研。我个人建议书上最重要的还是表格,图示和课后题以及思考题,能看懂图里算法的推导过程就足够理解算法,能做会课后题和思考题就足够掌握这章内容了。至于那些公式推导和文字说明,能看懂的看一看,看不懂跳过就是了。虽然期中考试考过证明,但是最后整张卷子扣分也不差多扣这三四分:)课后题和思考题答案可以参见walkccc,直接bing就可以搜到。
期中考试前正好和hy gg去沈阳打CCSP比赛,谈老师表示打比赛如果来不及参与期中考试,可以将期中考试的成绩占比分配到作业和期末,而且期中考试要给我们下马威,要是真能把期中考试占比划出去,那绝对是赚啊。可惜时间还是来得及,我们还是参与了期中考试,结果hy gg win win了,我被吃下马威了:(
期末考试就比较简单了,我复习算法的时候时间不太够,觉得红黑树那么变态的东西没什么好复习的,结果考试考了一道判断题,当场GG,还有一道印象比较深,就是FFT来做多项式乘法,用项的系数和次数来表示两个数组中任意两数和的结果,然后拓展成3SUM结果为0的应用题,正好当天早上看学校算法竞赛群群聊群友讨论一道几乎一样的OJ题,考场上遇到感到非常幸运,很快就秒了。最后有两道二选一的附加题,做到附加题时其实时间已经不多了,第二题我凭直觉,有个三角不等式感觉是在帮忙约束2近似,那么用比较平凡的算法应该就可以轻松达到这个要求,于是直接猜PRIM算法来连宜居星球,结果还真的是这样!
期末算法95,BB上看到还以为登错了,我考得这么好吗?结果是助教批卷非常松,最后总评也是95,属于大捞特捞了。
上课:这是这门课最精彩的部分,谈老师会上一半多一点的课程,李院长上一半少一点,两位老师讲课风格截然不同,但是都很强调算法思想,这一点确实十分重要。谈老师上第一节课的时候就反复强调:学习算法一定不能一上来就去钻研某些算法细节,而是应该先宏观把控算法主要思想,然后再学习实现细节!两位老师上课自始至终都贯彻了这一点,区别在于谈老师讲完算法思想后会按照ppt按部就班讲解一些细节,李院长讲完算法思想后有时候就会天马行空地讲一些各种知识(据本人不完全统计,院长提及过os,计网,编码,压缩感知,博弈论,图论,零知识证明等)由于不属于课程重点,所以院长提及这些知识基本上都不会深入技术细节,但是如果留心课下自己学习,还是很有收获的。与此同时的代价就是课程中的算法细节需要课下自己看ppt~总之,个人认为院长的课最好记一下笔记,然后课后再花点时间~最后吐槽一下课程难度问题:说实话这门课作为大三专业课和编译原理等课程比起来实在算不上难,而且院长也说过这课难度也就是MIT大一专业课难度……
给分:优秀率据说给满了,个人感觉4.3好像不多?(大概10/180左右?
作业:基本上每周都有书面作业,谈老师推荐latex写,学一下latex也不错的~此外还会有3~4次oj,题目基本上都是模板题,不会很难
考试:期中考试要想卷高分,把算法导论对应章节的思考题刷一遍即可,我们期中30分大题+10分附加全是思考题原题(注意是思考题,不是练习题,我期中复习光看了看练习题,思考题一看没看,考完吐血)。思考题不会做很正常,可参考英文版官方答案。期末考试就不用刷思考题了(我期末考试吸取期中的教训,考前两天狂刷思考题,结果一题没考,考完再次吐血……不过确实学到了很多东西~),期末考试重视上课讲的ppt里的例子即可(期末dp考了一个矩阵链乘1比1改编题,结果考场上没看出来被薄纱……)
tips:可以选择性听b站上MIT算法课的一些章节作为补充,不过利益无关,对算法不感兴趣的同学可以无视~
一点吐槽:今年的助教正如楼上楼下xdm评价一样,实在不敢恭维,具体细节在此不多说了。不过个人认为这不是给这门课打低分的理由,毕竟pksq是在评老师而不是评助教,因为这打低分实在对不起老师一学期以来精彩的讲课。希望今后谈老师对助教可以严加审核,祝这门课越来越好~
如果说体系结构是CS硬件部分的巅峰,那么算法就是软件部分的皇冠,总的来说这门课收获还是很多的。
本学期院长上的内容比较少,主要是intro、sorting还有knapsack等,院长上课风格非常像老教授,娓娓道来又有一些发散拓展,比较好玩的是中英混合教学,每一句话有一半都是英文单词😂,板书字体很大,非常照顾后排同学,缺点就是费黑板(bushi;剩余的绝大部分课程是由谈老师来上,谈老师就是很正常的老师上课风格,缺点是声音比较小,吐字也不是很清晰,坐在后排听不太清,而且板书字体也很小,扣的一分原因也在这。
一共有10次书面作业,建议使用latex写,通过ftp服务器提交,第一次作业好像是在国庆布置的,题量很大,后面每次作业就少一点,大概四五道左右,难度不大;还有五次上机题,都在OJ上完成,每次有三道必做题+一道附加题,dp和greedy部分有一些难度,其余部分比较简单。
这门课有期中和期末考试。期中考试谈老师说出得比较难,不过据说班上有满分大佬。期中主要考察主定理、sort、select还有高级数据结构,考前要看看课本每一章后面的思考题,今年考了好几道书上原题。期末考试考查范围为全书,重点考察dp、greedy、图论算法,期末相对简单,我看考场上有好几个提前交卷的,只要看看PPT,熟悉熟悉算法上80问题不大。期中期末都是闭卷,考前会提供样卷作为参考,而且其中期末都有附加题,有时间的可以去做做,挺有意思的。
这学期还安排了去讯飞和蔚来的参观,只要报名都可以去,还是很赞的。
给分很不错,会用班上前五的成绩调分。我期中81,期末93+10,OJ附加题全做,最后总评99,我都没想到给这么高!ths yyds!
最后分享一下这学期算法的源代码(里面还藏了计算方法的上机题,希望对学弟学妹们有所帮助。https://github.com/Komorebi660/Data- Structure-and-Algorithm
2024.10.24
期中考试结束,评价为:是我不懂算法。
2024.10.29
考后第一堂课,又小测了。(开学才不过八周,七次小测捏)
(上课上一半出期中成绩了,中位数63,平均分59.9几,害怕)
这门课实在是有点太精彩了所以准备记录一下自己的感想。(给分好坏不太清楚,但是先给好)。总体评分给9(毕竟这课到现在还under control)
就想骂骂期末的操.蛋.给分标准,谁出的谁背锅。
题目错一点直接爆零了,np,npc,nph的关系全写对了也画出了它们三个的图,就因为p和np搞错给我整体全扣光了,问就说是一题5分,全对了才给分。综合题第一问写对了说我有歧义扣了一半,还特么不支持考后解释。我说我认为没有歧义,绕了一阵,举了几个认为的“反例”,被我驳回后又“不支持解释”😅
老师给分还好,只是期末评分标准是有史以来见过最傻.逼.的(比代数结构啥的傻.逼.多了),导致卷面已经无力回天了。
统计意义上给分是真的好,讲得东西还比隔壁多,但是因为期末给分标准sb,我就把10颗星全扣了——这道题全对才有10分
这个班都是卷批,学习情况一般的真不建议来这里,院长讲课天马行空,ths讲的还可以,但是他们俩差不多五五开,也就是相当于一半的课要是跟不上院长的思路就等于没听,很多东西要自己花时间学,有点不像算法“基础”
我选择紫砂,这真的算简单吗?别来,快跑 我宁愿去隔壁手推dp
看了看都是90+的同学在评课,这里提供一个普通同学的视角,希望对要选课的同学有帮助:)
我本身没有学过竞赛,大二转院到计科之前完全没有接触过算法,之后也没有进行过相应的练习。个人代码水平,算法水平很菜(写不出来Q_Q),考试经常空题(这次考试也空了)
上课体验很好(虽然由于自身原因经常听不懂)。本来是奔着院长去的,但后来发现谈老师讲课非常朴实且平易近人,如果是小白不要觉得他讲的冗余,跟着听下来是最省时省力的。院长讲课就稍微随性一点,但很有感染力,而且他一直让我联想起某部电影的反派。课程覆盖内容非常广泛,有种被带着学了很多不得了的东西的感觉。经常小测(点名),最好不要旷课
作业方面,每周3-5题,全部来自于书上,网上有很多资料(建议Google,百度搜不太到)。对我来说作业难度挺大的,经常要写一下午一晚上,对着答案想也要想好久hh。如果是水平比较高的同学,解决作业还是轻松一点的。至于OJ实在是太阴间了……有那么几个题现在都心有余悸。一共五次OJ,到后面时间给的比较紧张(因为开始的很长一段时间没有布置),身边一个经验丰富的代码强者写完大概要3-5h。总体来说很痛苦但收获很多
值得一提的是老师提供的参观科大讯飞和蔚来的机会,只要报名就可以去。我去的是蔚来,非常开心的到工厂里面参观,看到了很多动来动去的机械臂!而且他们的饭真是太好吃了!!的确是在学习之余一次宝贵的体验
前面说到我是个上课根本听不懂的菜鸡……期中64(均分63左右),期末80+0(均分70左右),OJ满分(感谢代码强者救我),总评85,感谢老师捞我!!!我都没想到期末俩题不会做直接空着都能混个优秀的!!(特别是这个班里充斥着大数据大佬和计科大佬)
一些卷子情况的补充:
- 期末卷子手感很好,据上学期选了xy的同学表示他们考了很多诡异的概念,但我们完全没有诶嘿。附加题都是老师额外补充的内容,好像是online algorithm和近似算法的题任选一道。前面的大题有(不全):画NP,NPC,NP-hard问题的关系图,改进quicksort算法,手跑网络流算法。
- 期中卷子比较难,我愣是空了半份卷子……后面很多大题都是诡异的证明题,数学好的同学可能比较有优势,平时一定要听老师讲各种数学推导不要偷懒。算法导论上可以找到一部分原题。
总而言之,对于是小白但想学点东西的同学也很推荐两位老师的课。我本身是怀着抛弃GPA的心态去学东西的,但结果并没有辜负我,大家加油(o゚▽゚)o
老师讲得很好毋庸置疑,院长天马行空,谈老师提纲挈领,作业不多,oj虽然繁琐,但最起码不难,还不查重,给同学们留下了自由探讨的空间,而且oj确实在之后的各种机试中很有用;
但是,真是烦透了每年都需要和计科的同学在某一门课上狂卷,就硬卷,周二下午8,9节的课,为了占座位3:30之前至少要到教室门口,不然3:35一下课等着抢位子的人一拥而入前五排就没了,180多人的大课,而且是在三C这种人挤人,座位特别紧的教室中,听课体验着实不咋地,很多时候都没办法完全沉进去听老师讲课。然而这学期的数据库课程依然要和同一拨同学一起卷卷,还是220座位的教室选了217个人,好吧,只能预祝我卷卷大胜利;
助教们都很认真负责,习题课讲得都很认真,改卷子也很仁慈了。但就是今年的oj题和去年完全一样,希望助教之后能适当改变每年的oj题;
如果不是给分低于预期的话我也不会只给八分,期中79,期末92,每次oj都ac,作业也都全部按时提交,总评86;询问助教得到的答复是老师为了控制优秀率改变了一些总评的计算方式,
助教说附加题最后占比6~8分,所以大部分人的总评-2或者-3想必都是为了保证优秀率;
我没资格抱怨老师没有提前告知附加题的重要性,因为总是会有大佬能够完美地做出来这些奇奇怪怪的附加题;
只能说,在万恶的教务处优秀率限制和疯狂的计科同学狂卷之下,我再一次败给了充满科气的现实世界。
今年李向阳老师讲了几节概论性质的课之后就不来了,难道往年也是吗(雾
有实际内容的部分主要是谈海生老师在讲,思路清晰讲解细致,不来听课绝对是损失。
这个班级:
昨天(09-29)做过小测的人才能看懂的笑话:
Red/Black Tree Visualization (usfca.edu)
10-10 今天李老师限时返场了,乐
10-15 不是哥们,怎么上节课说好了这节课接着讲,结果突然又换老师了((
另外课间谈老师零帧起手宣布下周考期中,恐怖如斯()
10-26 期中考完之后群里一片寂静。。。慌。。。。。。
10-30 期中线下查卷,助教gg/jj态度非常和蔼,而且实际上给了不少步骤分,没有出现23年那种难绷的情况,这下评分必须上调至9了
今年作业超超超级难,鉴定为数分+离散数学,不知道和课上教的东西有什么关系。
“算法作业有的题感觉乍一看跟学的内容没什么关联,仔细一想一点关联没有”
开学三周三次小测,真的难绷。
这个课无论是去工业届还是学术界都是很有用的,收获很大!谈海生老师上课的时候也反复强调要思考理解算法的思想,考试的时候也主要考的都是理解,没有死记硬背的东西,期中期末我个人觉得难度差不多吧?但感觉助教真的改卷有点严,期中讲卷子的时候我都觉得好多我扣了分的地方其实没写错,可是助教说改卷很松查卷可能反而倒扣,我就没有去查卷。
谈海生老师讲得特别好,把每一个思想都解释得很清楚,而不是纠结于一些细节,上了课以后再看书会觉得超级轻松。李向阳老师就有点发散,经常会讲到一些别的东西,个人觉得,稍微预习一下再听可能比较好,可是我比较懒没预习,所以有时候听不太懂。
期中考了一些书上的习题,但是我比较懒没有做课后题,不过我觉得不做课后题也是做得出来考试题的,当然做了课后题更好了。
助教习题课一般都听不懂,作业答案也非常简略,有时候我都在想是我太蠢了吗一道题的解答写了这么多,助教才一行字。要是考试写这么少就能满分就好了(x
这个班也没有很卷吧,相比其他一些课真不算卷了,也可能我要求不高,最后拿到了3.7就很满意了!优秀率都给满了,课程内容也十分简单,上课听不懂看看书也懂了,前40%还是很容易的,上完了课也对算法产生了更大的兴趣,个人认为算法基础应该是计科最有趣的几门课之一了
体验一般。。说实话,在我一个普通学生眼里,我更需要的是ths这样认认真真规规矩矩地按照大纲内容授课的教师,而不是lxy这种意识流一般的讲述方法(后半程基本不听课,实在是听不懂也听不进去....)
考试卷子很难,期中期末平均分都是60出头,本人开学期末考炸裂T T,要是能拿2.7酌情加一星
—————— 出分后更新 ——————
我草没想到能上3,加两星
低分段太奶了
期末大题考了摊还,np关系图,手画FF算法(残存网络流网络增广路径),DP和greedy还有啥忘了。红黑树还考判断我是没想到的…直接摆
----------------------------------------------------------------------------------------
期中期末都在中位数或者平均分附近,总评3.3。
以下内容均针对学习能力中游的同学。
如果你是一位想要稳3.3的同学,我比较推荐来这个班。少量个人失误+试卷给分离谱严苛+老师奶量=3.3。期中会考书后原题,期末不会。
两位老师讲课风格相差甚大,谈老师上课比较正常,在大学教师讲课平均水平附近;李老师讲课不敢恭维,往好说是天马行空,直白来讲像是上课前看了一遍ppt就开始按着自己性子发挥,体验感极差。整个学期的课像是经理带着几个技术骨干和一群职员在巴蜀人家吃饭,你不得不承认有些菜是好吃的,但巴蜀人家又能好吃到哪里去?作为食物链底端听经理吹牛,感受同事拍马屁和互相扯皮,自己未必有多适合这个班。只能说传言不虚,面相反映心性此话不假。
考前求个保佑 不想重修
虽然很卷 但是给分太好了 主要是低分段给了很多3.3
简直有点大饼,把OJ的ddl设在1.31日,过年过一半还要中途来赶ddl是真的恶心人
随便说两句
谈老师和李院长都是水平很高的两位老师,但是课上的很多部分都是在和以前程序设计和数据结构已经学过好几遍的内容反复折腾,个人觉得浪费了很多时间
上课讲了一些拓展的知识,不太作要求的 NP 问题、competitive ratio、online algorithm,但是不太作要求的部分出到了附加题,然后附加题可以算分... 怪我一直不理解附加题的意义(可能是给前面踩坑的巨佬)
作业是真的多... 也发邮件给谈老师吐槽过这个问题,“这是我们特意设计的”,观感就是上周的作业刚刚交上去这周的作业就来了,顺带还给几道oj,然后大家卷的卷抄的抄,最后回到了同一起跑线。然而考试和作业的gap我觉得有点大,很多时候也只是书上的原题,认真思考固然可以增加对算法的理解,时间成本可能就因人而异了
这门课的考试是我最喜欢的部分(虽然我考的很垃圾),据说是助教出的。主要还是得把所有算法都理解透了,再能够进行应用的变换才能把卷子答好,可这班巨佬太多了,即使考的还行,相对比较下还是会相对压分
总的来说这门课非常好,-1主要是警示大家选院长班一定要有被卷烂的心理准备,如果能坚持下来收获也会不少。懒狗还是去杰哥班摸吧
如果学过数据结构(很多算法数据结构里就讲过,如最短路径)或者高中有计算机竞赛经验的话,这门课的内容应该不算多了。
老师讲课非常有趣,是我这学期唯一一门上课不玩手机的课了。院长大概讲了30%,院长讲课比较天马行空,进度比较慢(但期末考试出了道院长讲过的原题);谭老师主要讲了70%,上课也很认真,主要以ppt为基础,讲得很透彻。平均每周一次小测,内容课本上都有,都是 一些简单的概念,由于ppt是英文的,所以建议课后看书用中文再去理解一遍。
作业不算多,平均每周3-4题。都是书上原题,参考https://walkccc.me/CLRS/和其他博客即可。实验比较多,每次四题左右,一共布置了5次。平均没布置一次都要花上一个周末时间去写。除了流网络的实验(暗示),其他题都不太好搜,建议自己写,也算是加深对书本知识的印象了。不会就问助教,用c++, 调stl都行,AC没那么难。
与隔壁班不太一样,这门课多了期中考试,考了复杂数据结构(如斐波那契堆操作的示意图)与排序。内容不多,把上课讲的好好看一遍就行。期末就考了剩下的内容,复杂数据结构操作没怎么考(谭老师也不怎么喜欢这部分,所以也不要求我们强记),但所有复杂数据结构的时空复杂度,所有算法在相应的数据结构下的时空复杂度,所有算法的基本思想,都是考点(敲重点!!!)。考前会发样卷,一定要好好做!!!
期末考在晚上,上午考完一门才开始复习的算法基础,从十一点到晚上六点,先把书过了一遍,在把作业题与样卷过了一遍,很复杂的(像红黑树删除)直接放(最后都没怎么考)。最后期中82(不知道含不含附加分),期末93+10,总评98!!??
开学说总评会有5分的活跃分(这个主要是谭老师在管,助教也不知道怎么算)。考前有一次去讯飞和蔚来的企业参观,自愿报名(不知道算不算活跃分),大概两个企业各去30人。很开阔眼界,讯飞nb!
最后这门课虽然感觉和之前的课交叉有一点多,大数据专业表示学起来还算轻松,但其实更多的是一个分析问题的视角(强行升华)。最后感谢老师和助教!!!
刚出分就来评论了!谈老师yyds !!!! 吹爆这门课,神仙老师辛苦啦!
先说一下大家可能最关心的给分。感觉只要认真听讲,理解老师上课的内容,实验都是自己完成的,最后分数不会太差。(我期中75,期末88,总评85,讲道理这个成绩真的是中等,班里一堆大佬考95+ orz)知道卷面分数的时候我以为我要凉了。但最后!老师捞了一把!!神仙老师!!!
当然两位老师的讲课水平也很高,风格不同,但课堂互动性高(是好事~),每堂课都收获满满。
院长讲课不怎么按照PPT(所以上课要单独记笔记,PPT自己复习的时候再看),院长上课会重点强调这些算法的思想和运用的领域(院长口头语:这个问题是我当年读博的时候解决的balabala)让你感受世界的参差。 对算法有更深刻的理解而不仅仅停留在代码的实现和记下时间复杂度。
主要还是谈老师上课。谈老师上课会更按照PPT来,方便在PPT上记笔记。会举例子来帮助理解。下课也会留下来方便大家去问题。人真的超级好!
学习方法:上课一定一定认真听讲,许多算法其实本身不难,老师上课会讲这个算法的思想,听懂了再自己看代码实现部分会很有效率。自己抱着书啃太难顶了。比如红黑树增删操作
考试方面,尤其注意对于算法时间复杂度的理解。期中期末都错了2,3道判断题,一道5分太惨了
最后的最后,再次吹爆老师们的给分,头一次感受到什么是海底捞!!!
给院长和谈老师打满分,虽然给分没有预想中那么好(期中82,期末90,总评87),但是收获真的很大!
印象最深的就是院长的“抖一抖”和“我靠,这么NB”,哈哈哈哈
总而言之,这确实是收获巨大的一门课,真切感受到了算法的魅力。要不是最后给分没达到(身边部分同学包括我自己的)心理预期,一定要给10分的。
关于考试重点:题型不赘述,判断题+大题;期中重点在时间复杂度分析、排序算法和特殊数据结构;期末重点是分治思想、动态规划和贪心算法以及拟阵和NP,期中以前的部分内容也会涉及。上述重点是所谓的大头而已,其实试卷基本做到了课程内容的全覆盖。确实不会考死记硬背的东西,主要考察对概念和算法的理解与应用,题目难度也不是很大(虽然谈老师反复强调自己觉得期中考试比较难,但我觉得期中期末难度差距不大)。
关于OJ题目:2020秋的任务和2019秋是一样的,有上届大神曾在github上传过题目链接可确证。
我觉得这门课想要学好,功夫一定要下在平时。两位老师讲课不错比较吸引人,即使二百人大班,坐在前面不会太走神的。课上听讲,每次作业认真做,OJ题目主动思考(即便借鉴代码也要弄懂原理),就会发现自己慢慢对课程内容有了一定程度的理解和很好的掌握。我期末由于接踵的考试,只在考前复习了一整天,最后也考到了90分左右。
重点:老师讲的真的好,算是三年来听过为数不多的好课。
课堂:
对于我这种上课容易犯困走神的人来说,上学期算法课基本没有走神过。
老师讲课逻辑清晰,一环扣一环,很难走神。谈老师讲课中规中矩,按着 ppt 上来一点点讲。院长讲课更具故事性,常常结合一些个人研究、生活经历和一些经典面试题讲课,以及院长每次上课的时候都全程带着(慈祥的)微笑,看着真的好和蔼啊(bushi)
作业:
一般都是书后的习题,偏证明的比较多,工程类的题目都放在 OJ 题目里了。
书面作业老师建议用 latex 编写(当然手写也可),上传到 FTP 。感谢算法课逼我学了一把 latex,从此走上格式化文档的不归路(
OJ 实验一共六次,每次基本三四个题 + 一个附加题。主要是训练我们能够将上课讲过的算法灵活的运用到实际问题当中去,虽然挺花时间,但这是必不可少的锻炼。
考试:
院长:“我不喜欢小测,我也不喜欢考试。”
谈老师:“只要上课认真听讲,考试基本不用复习。”
可以复习一下 ppt 和上课笔记以及写过的 OJ 题,重点理解每种算法的主要思路即可。
考前写一下助教发在群里的样卷练练手,多和同学交流效果更佳。
-----
出分了,本人期中 81,期末 94+6,总评 92
emmm 可能我期中考的不太好吧,本来以为会有 95 分哒~ 不过 92 也很满足了~
感谢院长和谈老师!!!
来科之后体验最佳,收获最大的一门课,对比计算机网络不知道强到哪里去了。
先是上课内容,强烈建议gnj班上的同学来院长班蹭课,yysy,这门课可能是中国大陆本科生阶段专门讲算法课中最好的。上课内容基本上把算法导论整本书全部cover了一遍,可以出去和同学吹牛我看过整本算法导论qwq
老师上课很认真,一看就知道花了很多时间备课,此处吐槽zxm,能不能不要摸得这么明显,公然浪费大家的时间的计算机网络还不如让给信院上。
助教水平很高,OJ题花了我不少时间但是收获很大,作业如果自己想将会有利于课堂知识的理解。
考试试卷比较合理,考察了主要知识点的理解,再次映射一下zxm计算机网络期末那毫无意义的期末文科试卷,建议计算机系取缔这种文科课。
谢谢lxy老师和ths老师,谢谢各位助教的复出
我听说顾老师算法期末让你手算动态规划的矩阵,还不止一道,然后考红黑树的具体操作。这个班考试就比较灵活,繁琐死记的东西不多,有很多ppt上的送分题,也有烧脑的附加题。个人喜欢后者,毕竟大三老油条已经背不动书了。
另外我比较喜欢OJ这种形式,可以帮OIer重温经典题,不过希望以后OJ可以开放部分数据点,可以减少对着WA发呆的时间。怎么说呢,我感觉助教不会查重代码,所以不放数据怕是有人打表。还有OJ题和去年都一样的,应该可以借鉴到。哈哈我觉得OJ可以锻炼coding能力,总比隔壁打板子然后写报告画算法复杂度增长曲线好点吧?
谈老师还带班上同学去参观讯飞和蔚来的工厂,都是自愿报名,好感动捏~
有点难受的是要考期中,还花了不少时间复习(预习)。还有不能翘课,源于相当多的小测。
但是这个班的课程设计真的蛮有收获的,后面的企业参观真的绝绝子,跺脚脚!(错乱)
这门课的作业和实验挺中规中矩的,拿满难度不大。
谈老师上课还好,李老师上课思维较为跳跃,所以课后一定要看相应ppt并刷几道这部分的题才能更好理解。
助教老师在作业解答方面很有耐心,问题都能得到解答。但是期末的查卷方面能看到还是有改进的空间。首先是查卷的形式,是在qq上聊天式查卷,且不能看到卷子的照片(不允许拍照),建议和其它课一样线下查卷。其次是助教老师在查卷时表现的比平时暴躁很多,虽然可以理解可能查卷的人太多了,但是还是会有些失望。相信这也不是助教的本意,或许查卷形式改为线下,排队查卷可能会更好一点?
其它方面没什么大问题,希望这门课在查卷方面能越来越好吧。
————————————————————————————————
先放一点资料吧^L^
自从评课社区有了匿名以后差评越来越多了(
助教说这学期的oj添加了查重功能,但是有不少力扣,洛谷的原题,我有点好奇对于曾经刷到过原题或者直接抄题解的同学怎么界定抄袭
谈老师讲课确实很不错且容易接受,但是李大院长的讲课质量就难以恭维了
期中考试比较难,但期末考试要比期中略简单
如果对分数不是特别执着,在这个班确实可以学到很多东西,但是如果想要高绩,考虑卷王比例,我还是推荐去隔壁班手算矩阵链乘(
这个班大佬较多。学习情况一般的慎选,有个基于全班TOP5分数的调分,可以基本忽略。
期中期末考试难度都还好,个人觉得期末比期中简单,上课认真听的话基本就没有什么问题,附加题第二题也是老师上课讲过的一模一样的内容,期中84,期末98+10,最后总评99,oj相较于考试要难一点,我最后一个实验的附加题没有做出来(wtcl,哭),个人希望科大的课程都像谈老师的算法还有昱姐的编译靠齐,既能学到很多东西,也可以很好的锻炼自己的代码能力,而且考试灵活,不会考死记硬背的东西(算法考试大多考的也是算法,也没有多少题会要求你考场上手写代码),对比xy老师和杰哥的课,我觉得该门算法课更为灵活,代码量也会大一些,不过最后的收获肯定也会大一些,我剩下两个班的同学就很羡慕我们还能去蔚来和讯飞hhh
谈老师和李老师都讲得很好,课件也很好,但是 OJ 太恶心
更新:
期中期末考试都比较简单,谈老师说只要听讲了就会做,这是真的。卷子出得也很好,做起来非常舒服,几乎没有默写题。
我作为数院的代码水平一般的学生,选这门课除了做oj耗时较多以外,没有碰到任何障碍,非常推荐选择计算数学专业的数院同学选这门课代替数院开的算法课。