选课类别:计划内与自由选修 | 教学类型:理论实验课 |
课程类别:本科计划内课程 | 开课单位:计算机科学与技术系 |
课程层次:专业基础 | 学分:3.5 |
在计算机科学中,算法(Algorithm)可以理解为求解问题的一个具体计算步骤。本课程主要介绍算法的基本概念,以及算法设计和分析的基本方法和技巧。课程包含了高级数据结构和算法的若干基本内容:算法分析的基本技术、排序、堆和优先队列、红黑树、平摊分析、二项堆、分离集合、分治法、动态规划、贪心法、快速傅里叶变换、图论算法、串匹配等,和典型计算问题的求解算法。
本课程由两位老师负责,前半学期由陈雪老师授课,后半学期由邵帅老师接手。陈雪老师的讲解风格较重视算法思想和证明,会尽量把难点讲解得通俗易懂,而邵帅老师讲课非常热情,细节讲解较多,但板书较杂乱。整体来说,课程内容详细且覆盖面广,适合有计算机及算法基础的同学选择。
课程涵盖了基本的算法思想,包括算法的证明和实现细节。大部分时候课程内容基于经典的《算法导论》。有学生节目称,由于授课内容较为深入,所以与普通算法课程相比,更偏向竞赛和高级应用的一些算法。在非OI(信息学奥赛)背景的学生眼中,本课程内容难度较大,需要认真预习和复习。
作业和实验的数量较多,分别为6次作业和5次实验,都是算法的具体实现和优化。作业总体难度不低,通常需要4-6小时完成。实验要求较高,有些实验卡时间和内存导致学生频繁优化代码,难度和工作量较大,但通过完成实验,学生能更深入地掌握算法细节。
考试分期中和期末,两次考试都允许写IDK(I don't know)来获得该题分值的30%。期中考试由于难度过高,平均分在60左右,期末考试难度稍微降低,但平均分依然较低,反映出考试偏难,偏向更高阶的算法理论知识和实践。
尽管考试和作业难度较大,但给分相对友好。有学生反映即使分数较低依然能拿到不错的总评成绩。课程最终成绩由作业、实验和考试构成,调整后的优秀率大约为34%,整体公平。即使没有算法基础,只要完成所有任务,并认真备考,也有机会获得良好的总评。
不少学生建议未有任何算法基础的同学慎重选择此课程,因为虽授课内容和 ppt 较为简洁,但由于课程、作业和考试难度不小,很容易打击学习积极性。如果你对算法有浓厚兴趣,且愿意花时间钻研,这门课无疑是提高算法能力的良好机会。
《算法基础》课程难度不低,适合有一定算法基础的学生。课程内容覆盖广泛、深入,授课风格较多变;作业和实验工作量大,难度较高,但能有效提升算法实践能力。虽然考试难度大,但课程给分较为友好,有一定调分空间。综合考虑自己的基础和兴趣,慎重选课。
不上这个b课了!去蜜雪冰城打工(您有新的订单啦 请及时接单)(拿起杯子)(贴标签)(装入波霸)(装入冰淇淋)(换容器加抹茶粉)(加水)(叮叮叮搅匀)(哐啷哐啷加冰块)(潇洒地放进机器里上下摇摆)(抽空思考下一杯的步骤)(拿出摇好的茶)(倒进塑料杯)(开盖)(抖进适量冰块)(撇去浮沫)(密封)(抹布擦干净杯身)(大声喊叫)(608号在吗608号在吗)
不上这个b课了!去茶百道打工(您好~茶百道为您服务)(先生喝点什么)(茉莉奶绿是吧)(拿起杯子)(贴标)(加入黄金糖)(倒绿茶)(加特奶)(补茶至满)(封口)(拿抹布擦干净杯身)(摇晃杯身)(大喊)(101号先生的茉莉奶绿好了)(重复一遍)(101号先生的茉莉奶绿好了)(看见人匆匆赶来)(询问)(茉莉奶绿是需要打包吗还是现喝)(抽出袋子)(装入奶茶和吸管)(递)(大喊)(请慢走~下次见)
不上这个b课了!去星巴克打工(先生喝点儿什么 抹茶星冰乐是吧)(拿起杯子)(贴标签)(挤糖浆嘣蹦蹦)(倒奶)(把杯子里奶倒搅拌机)(哐啷哐啷加冰块)(加抹茶粉)(潇洒地放进机器里按下搅拌键)(抽空思考下一杯的步骤)(拿出搅好的冰沙)(倒进塑料杯)(摇奶油枪)(转着圈打奶油)(密封)(抹布擦干净杯身)(大声喊叫)(杨先生在吗杨先生的大杯抹茶星冰乐好了)
不上这个b课了!去瑞幸打工(先生喝点儿什么 麻烦这边扫码下单 瑞纳冰是吧)(抱歉 瑞纳冰 不能做去冰 也不能做少冰)(拿起杯子)(贴标签)(挤糖浆嘣蹦蹦)(倒奶)(把杯子里奶倒搅拌机)(哐啷哐啷加冰块)(加粉)(潇洒地放进机器里按下搅拌键)(抽空思考下一杯的步骤)(拿出搅好的冰沙)(倒进塑料杯)(摇奶油枪)(转着圈打奶油)(密封)(抹布擦干净杯身)(大声喊叫)(520号在吗 你的瑞纳冰好了)(需要打包吗)(不需要的话直接拿走就好了 您慢走)(转头继续贴标签)
不上这个b课了!去古茗打工!(有人进店)(嗨您好,新品超好喝)(点单推新)(可以试试我们的新品桂花酒酿小丸子哦)(确认饮品)(好的一杯中杯桂花酒酿小丸子正常冰七分糖对吧)(扫码付款给号码牌)(您好您的号码牌请拿好)(调饮)(加底料)(叫摇杯)(加茶汤)(加冰搅拌)(挡冰倒入杯中)(加3-5块冰)(封口出杯)(叫号机叫号)(103号请取餐 103号请取餐)(您好请问现在喝还是打包呀)(现喝帮顾客插吸管)(您好尽快饮用口感更佳哦)(顾客走到门口)(请慢走 天天开心哦)
考完期中发个颠居然被顶到了前排,而且还上了迷惑墙(???),看来大家都很认同。实在抱歉占用了各位的注意,所以现在趁着期中刚出分补一个正经评价。
上课:ppt比较简洁,突出重点,覆盖面很广。板书有点杂乱,经常会有提问,但往往只有那几个大佬回答。cx老师会把算法思想尽量讲的容易理解,同时算法的证明也会讲关键部分,不会出现听不懂的情况。但是本人举一反三的能力比较差,所以作业,实验,考试都很吃力。ss老师上课很有激情,但板书也比较杂乱,PPT很简洁,对于我这种主要靠自学的很不友好,所以上课要认真听。
作业:比较难,但和实验相比可以接受。
实验:主要是上课基础算法的实现,工作量很大,实验二我写了两三天还是有两个点过不了(TLE),本人没打过oi,也不懂群友的一些术语和技巧,只是希望可以把时间和空间限制开大一点,不要总是时间复杂度满足算法要求但是因为前面的常数过不了。不过自己写完实验感觉收获还是蛮大的,毕竟自己手敲代码后能把握到平时不会注意的细节,印象也会更深刻。
期中考试:半开卷,但是完全用不上cheatsheet,考试比作业时间紧,题目难,拓展多,好在不会写的题可以写IDK(I don‘t know),会给三分之一的分数,本人基本上算法题全写的IDK,最后分数比中位数低5分。
期末考试:对于我这种菜鸡来说非常难。
总结:划水摸鱼另寻他处,躺平弃疗勿入斯门。
最后一次实验了,搬运一下群友评论
出分了,正如其他同学所说,上课,作业和考试的难度差距很大,这里放出本人费拉不堪的成绩供大家参考:6次作业和5次实验全交,分数933/1100,期中55,期末40,总评80,可见老师给分挺好的。但是给分好不足以抚慰我被摧残的精神,不说了,去校门口摆摊卖杨枝甘露去了。
md越想越气,给你改成1分。
昨天和陈雪老师聊天,原来他是知道这门课被喷很惨的😂。
看了看今年李向阳班的作业,已经提升到了和陈老师班一个难度了。
想搞算法理论的可以挑战自己来lxy或者cx班。嘿嘿。
首先,不管怎么样,我都 不建议没有任何算法基础的人来! 这下面是原因。
作业量不小,一共6次作业,5次实验。每次作业至少花三个小时,正常大概是五个小时;实验则看个人代码熟练度,不是很熟练的人一份实验可能写半天一天都写不完。
考试相关的话我只能说老师难度控制不是很行。如果说老师上课讲的是1,那么作业就是2,考试则是2.5甚至3,对举一反三的要求极高,对于没有算法基础的人来说非常困难。最后期中均分60,期末均分56,这还是在允许写IDK的情况下(不会的题可以写I don't know,可以得到该题三分之一的分数)。
卷子难度大也导致了分数分布的方差很大,分数方差很大意味着优秀率给满就不合理也不现实了,但是高绩应该会多一些。看看老师最后怎么调分吧,希望整体绩点分布不要太难看。
讲真这门课改成“算法基础(H)”争议应该会少不少。。。
另外感觉这学期的助教缺乏经验,实验文档写的不是很清楚,数据造的也不好,也没有讲同学的建议较为及时的反应给老师。
到了大三我应该会申请这门课的助教,希望这门课越来越好。
当然如果你坚持下来陈老师不会让你的分数太难看的。
然后这里再来说一些我作为OIer上这门课的感受。
陈老师上课还是不错的,会把算法与优化的逻辑讲清楚,证明会写在黑板上,字虽然不好看,但是板书还是工整的。
邵老师上课充满热情,但个人感觉上课的条理没有陈老师清晰,板书特别奔放。但认真听下来还是会有很大收获的,能领会到老师想告诉我们什么。
作业布置的也挺好的,虽然有初高中就搞烂的套路(对于OIer而言),但是还是有新鲜的题目与证明。搞竞赛时候忽略的证明通过上课和作业也补回来了。
早在初中我就买了《算法导论》这本书,但是一直没有认真翻过,躺在角落里吃灰。这门课让我“正视”了这本书,认真看完《算法导论》觉得写的真好,有点后悔当初自己搞竞赛的时候没有认真看这本书。
这门课也点燃了我对算法的热情,我也决定先进陈老师的组里摸爬滚打一会,看看自己在这方面的能力与天赋。
期中试卷:Mid- Statement.pdf
期中民间答案:Mid- Answer.pdf
期末考卷:Final- Statement.pdf
期末民间答案:Final- Answer.pdf
这课就是一大离谱
实验搞得真叫一个本末倒置
4分有3分给助教 每天重启5次服务器
给低分的原因是占用太多时间并且是在浪费大家的时间去进行一些优化 把评分拉低一些 至少在我这 这门课是绝对不及格的水平
老师和助教都有点不食人间烟火的感觉
习题课安排在大中午 有同学建议换个时间段 老师竟然说那他可以不去
搞个实验特意弄得复杂 算法对了时间复杂度达到要求了 居然卡常 因为运行时间长而过不了 一门课程搞得像算法竞赛有必要吗
真心建议学算法没必要到这受折磨 我反正是已经后悔了
作业多,实验难,卷怪多
摆烂人勿入此门!
上大学以来听的最认真的课。
事先说明,本人高中是OIer,且有着相对不错的竞赛成绩。本人的室友(0基础)在我的撺掇下也报了这门课,因此本评价或许对非OIer也有一定的参考价值。
本门课有两位老师,大致是期中前由cx老师授课,期中后由ss老师授课。
cx老师上课时会有提问,回答的人老师会让助教记下学号,会有相应的加分。然而cx老师上课的气场非常强大(姚班&集训队✌对下位者的威压属于是),本人在课堂上又比较内向,因此没怎么回答过问题。如上所说,这门课是我大学以来听最认真的课,也是翘课最少的课(只有一次没来还请了假)。老师并不是照本宣科地抄写书上的证明,也不是只注重竞赛上的应用,而是试图将一些竞赛上习以为常的结论用严谨的体系重新归纳总结。从我的好大儿(bushi)室友的反馈来看,0基础只要认真听也能跟得上。
ss老师的气场则相对弱一些(可能是他高中没搞过oi hhh),而且讲的比cx老师会更加细致,一些不是很复杂的地方也会重复讲很多遍。不过可能是大家接受过了期中考的摧残,实际听他讲课的人并不是很多。
顺带一提,ss老师的知乎账号里有很多很有趣的文章,推荐大家去围观(bushi)https://www.zhihu.com/people/aaa-aaaa-7/answers
这门课本来有两名助教,但是其中一位生病住院了近乎一个学期,导致剩下的那位工作量骤增,这也是同学们普遍对助教不满的因素之一。
总共有5次实验,每次实验一般3~4个题。实验要求写实验报告,不过实验报告似乎助教不会看(
由于本门课的实验部分都在oj上提交,而助教相对缺乏出oj题的经验,就会出现很多卡时间、卡内存的情况。这部分应该不是这门课主要考察的内容,希望下学期的助教能引以为戒(
总共有6次作业。作业一般是4个题,时限为一周。cx老师给的预期时间是4~6小时。学期初和学期末的作业相对简单一些,学期中的几次就比较折磨。不过作业题好在不需要交oj,只需写出自己的思路而不需严格验证,体验会稍微好一些。
值得一提的是最后一次作业布置在考试周,善良的助教表示只要交了就给满分。
比较有特色的是,任何题如果不会可以写IDK(I don't know),会给30%的分数。其实是一种变相的做错倒扣分。也因此,一个题要是想不到正解,写一个暴力的做法总能得到大于30%的分。
题目类型分布为四个选择题和五个大题,选择题占比较小,且给分似乎采取异或(你的答案和标答异或一下,按1的数量扣分),价值不大。大题第一题是上课讲过的,虽然我并没有写出来。第二题是简单题,求区间带权中位数和平均数。
即使从一个OIer的角度,期中卷子也是过于难了。教FFT让你写FWT,用红黑树优化区间求和之类的。
老师似乎算错了总分,因此给每个人白送了10分。据透露期中平均分是60左右,大约相当于做出第二题简单题+其他题IDK。这也说明,在这门课程的考试中,不会的题写暴力或者IDK可能比嗯写正解更好。
同样可以使用IDK。
类型分布为两个选择题,五个大题。
个人认为这张卷子和期中相比简单了一些,但是平均分却和期中差不多。可能是期中考试消磨了大家对这门课的热情,下半学期没怎么学了吧。
第一大题要求在正权无向图中求出最小的非平凡环,要求复杂度\(O(n^3)\),难度比较大。
第二大题是Tarjan缩点+拓扑排序,感觉只学过数据结构的同学都能做,难度一般。
接下来三个大题应该是ss老师出的,明显和cx老师风格不一样。
第三大题是0-1规划问题,老师考到一半还给了提示(可以用所有边的权值和或者最大值作为参数),难度略高于期中第二题。
第四大题是给定a,b,c,求ax+by+cz=gcd(a,b,c)方程的一组解。课上已经讲了二元ax+by=gcd(a,b)的欧几里得做法,只需简单推广(连续用两次欧几里多算法)就能得到本题的做法,可能是本场考试难度最低的题。
第五大题是关于NP问题。第一小题拆点重新建图,难度应该低于作业题。第二小题至今还不会写,胡了个IDK上去。第三小题由于试卷第一面印有提示,结合NPC的定义也可以解决。如果把第一小题做出来,剩下两题IDK可以获得10分。
比例似乎是40%作业+实验,30%期中,30%期末
本人作业平均分97,实验应该是满分,期中90,期末93,最后给分100。
对于其他同学,助教在群里说有捞20多分甚至30多分的,让人不禁怀疑是不是按排名反比例调分(
虽然优秀率只给了34%,但是给分应该还是蛮奶的。
可以体会到Havard、MIT学生的感受,值得一选。
收获:学习了一些算法和理论知识,同时让我知道自己没有学理论的天赋。
总结来说,它没有让我学到任何*新*的东西,我能拿优秀不是因为这门课的收获,而是我之前学过的知识点,我不会的内容我还是不会。该课程的课纲和AI专业前期开设的许多课程高度重合(离散数学,运筹学,数据算法),同时对之后的实践课程也没有凸优化这门课程重要。我不理解为什么会放在这个学期作为AI专业必修。
1. 授课内容
后期邵老师教授的内容和之前的几乎重合,所教授内容没有超出离散数学这门课的范畴。不理解为什么“字符串匹配”那章被安排在这么靠后的位置,因为前几次课程已经完全覆盖了这章的知识点和题目,明显是课程内容安排有问题,以至于课题上完全没有人和邵老师互动。
2. 实验安排
实验平台不稳定,实验要求含混不清,笔误频出,且助教迟于回复。有无OI基础完全是两种难度。
3. 作业布置
临近期末,居然能挤出第六次作业安排;最后几次邵老师布置的作业反而是最简单的。反而是学期中期的几次作业极难,榨干了所有课余时间。同时作业题目也是过于简略,基本的符号约定都不写全。
平时作业四道题,老师建议完成时间约6h,期中四道题加一些小题,难度比平时作业略大,两个小时考试时间,就离谱,不懂就问,这考试题是专门出给oier做的吗?
听说老师要狠狠地调分,大家的辛苦付出或许也有了回报,因此先上调至7分
出分了,听说优秀率没给满,然而考试略低于平均分给了85,真的喜出望外了,不过可能也反映了一个问题就是可能是少量的高分把大部分低分的均分拉上来了,导致大部分同学的成绩是难以达到均分的。给分奶是真的奶,难也是真的难,建议看自己的水平选课(提醒:必修课不能退,在选课阶段千万确定自己适不适合这门课)
作业题难度过高,实验题难度也过高,而且题意表达的非常不清楚,考试题难度过高
尽管是双学位必修课过来学,还是硬着头皮把两次实验完完整整的写完了,一周肝了三四十个小时代码,别的作业一点没写,补了一个多星期作业了还没补完。于是第三次实验写了一题,第四五次实验没写,因为物理课实在学不完了()
感觉自己智力不够用了。
不过cx老师上课曾言道:我们这课是MIT的算法课的任务量的2/3()
很神奇的一门课,虽然说课程内容确实干货十足,但是实验属实过于离谱,中间几次实验经常是几天都写不出完全正确的代码,导致这方面的体验极差无比,后面几次可能还好一点,但之前的实验已经极大程度上打击了积极性。考试方面确实还行,毕竟能够些IDK来保底,而且设计算法几乎都没有设计时间复杂度,意味着不需要想实验一样拼命优化。但是总的来说这个实验带来的痛苦实在是太恶劣了,还是不太推荐。
课听不懂,逃!
实验好难,摆!
作业好难,摆!
考试好难,摆!
期中略高于平均分,期末略低于平均分,总评84,调分力度还可以,虽然优秀率34%。
这门课上课体验就是被折磨得死去活来,被有基础的算法竞赛大佬摩擦,被秀各种超纲知识,上课已经说了优秀率不给满,但也千万别乱给分啊,别给鼠鼠挂了
ai班底层人士,无oi基础,通过这门课收获很多。
课程难度对于我这种oi小白来说不太友好,考试更多的是考验个人能力,如果没有oi基础,单从这一门课的教学很难应付考试。
两位老师都是大佬,有趣的是授课风格很不相同。cx老师会把算法的正确性、复杂度的证明逻辑讲清楚,很多具体细节会略过;shao老师喜欢板书证明细节,但是整体逻辑比较难以把握。
实验oj有时候卡常很折磨人,不过确实是磨练代码优化能力的时机。
我期中期末在平均分上下(平均分60左右),总评3.3说明还是很大力度调分的。学期初有一次点名,本人恰好记错了上课时间,错失了加分机会(悲)。