算法基础(张举勇) 2024春 2023春 2022春 2021春 2020春 2019春 2018春 2017春 2016秋  课程号:MATH400201
2024春 2023春 2022春 2021春 2020春 2019春 2018春 2017春 2016秋  课程号:MATH400201
7.3(14人评价)
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:一般
  • 收获大小:一般
选课类别:计划 教学类型:理论课
课程类别:本科计划内课程 开课单位:数学科学学院
课程层次:专业选修   学分:4.0
课程主页:暂无(如果你知道,劳烦告诉我们!)
排序 学期

评分 评分 14条点评

野心家 2021春
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:超好
  • 收获大小:很多
  • 难度:中等
  • 作业:中等
  • 给分:超好
  • 收获:很多

想起来回来还愿。同学们注意,评课社区看评论一定要从最新的开始看。就算法基础这门课而言,2020以前的评论参考价值不大了。

 

一、课程简介

算法基础是计算数学专业几乎必修课之一,和计科的算法基础课程内容相似。前置课程为数据结构与数据库,二者内容一脉相承,且听说以后会合二为一。课程不太像一门传统的数学课,对于其他数学课的知识运用不多,但对于编程能力和思想是个很好的训练。课程共3学分,历时15周,一般会提前一点讲完。每学期可能还会有算法竞赛 (就是现场写OJ,分数占比不大,图个乐呵),还有课程大作业。无期中,有期末,期末占60。总评最后还会再奶一口。

 

 

二、老师和助教

张老师是个好老师,不止听过一个学长说过张老师人很好。而且张老师还是青年才俊国家优青,欢迎选课一睹风采。作为科大图形与几何计算实验室(GCL)的老师之一,张老师立志要用这门课提高数院同学编程能力,而且看来取得了一定成果。助教方面,张助教和李助教都很认真负责,平时在群里积极答疑,非常值得尊敬。这里多说一句李助教,李助教是算法基础祖传助教,主持两年朝政,目前的课程主页和OJ系统都是疫情那年开始,李助教上任时和老师一起合力开的先河,直接促使算法基础从一门理论课转变得更像一门注重编程的实验课了。

 

三、上课体验

结合评课社区的评论观察,原本以为张老师上课会很催眠,结果一去发现,其实还好,计算数学的其他老师感觉讲课风格也差不多。看来张老师也是在进步的,讲课一年比一年熟练了。如果认真听课的话,体验应该还不错。其实要完全跟上上课节奏也没有那么容易,经常发现有不懂的小地方,建议直接课上思考解决,不要留到课下。课上学算法,课下做OJ,节是个比较合理的节奏,要是不太能自律还不听课而全堆到课下,其实负担确实有些沉重。老师也和善,下课很欢迎大家去问问题。所以,快去听课啊兄弟姐妹们。

啊对了,张老师还请了一些学术大牛来给大家宣讲一下学术前沿的知识,还和算法有一定相关性,让我们扩展视野。虽然听不太懂,但还是蛮有意思的。内容涉及计算机视觉,推荐算法之类的,尤其是以后可能对这些方向感兴趣的同学,欢迎听听。

 

三、平时成绩

平时共有4部分构成:书面作业,线上算法题 (OnlineJudge, 简称OJ) ,算法竞赛,大作业。恰逢我们今年图形学换成了陈仁杰老师授课,所以算法基础的大作业内容和图形学某次作业重合了,于是我们这学期没有大作业,把大作业的思想简化成了一道OJ题。所以只剩下三部分了。总体花费的时间:书面 = O(OJ)。OJ编程量不小,可以说和图形学并重,撑起了计算数学编程任务的半边天。OJ做起来的体验和图形学不一样,图形学主要是比较费事,需要从头配环境、熟悉算法思想,有一个摸索的过程,但一旦完成,复现就比较容易,偏记忆性比较多一点;而算法题,算法看起来绝对不难,不过遇到题目就做不出来,一个题有一个题的思路,更考验灵活的应用。一般的话,复现上课算法+活用PPT上的例子就能做出不少问题,所以还是那句话,快去上课……

书面作业一般是课本课后题,不时也有课上留的问题。难度不一定小,而且由于是线上提交,千万别忘了交。不过仔细啃一下课本证明,其实也问题不大,而且就算有小错助教也会好心地不计较(以便让大家集中精力做OJ)。

OJ是重中之重,做起来和其他评论体验一样,确实可以治低血压……一定要注意小地方,比如加不加回车,多不多空格之类的,还有就是想好再上手。由于只要不全对就不得分,所以如果做不完了,一定要彻底做出几个题,而不是每个题都试一试 (当然这是从功利的角度讲)。不懂的问题就多问同学或助教,不过千万不要麻烦他们帮debug……一学期练下来,确实感觉算法题能力有不小的增长。确实比评课社区说的抄满课本答案的体验要好得多。尽力做就好,重在学习。会奶的。

算法竞赛只搞了一次,3道题90分钟,今年是一道送分题,一道最大流最小割,一道动态规划。主要还是让大家体验为主了。最后看结果,全做出来的还不少,瑟瑟发抖……不过助教说占比不大,重在参与。

 

四、期末考试

虽然OJ是平时花时间最多的,但最后算分理论测试还是大头。期末考试还是很友善的,几乎全是原题,而且主要看会不会,不会死抠伪代码会不会有BUG之类的。只要是背过书面作业+OJ题目+课本算法就能对答如流,当然最好再看看助教的习题课讲义。虽然都是背,但个人认为比数值代数要好背得多,算法也是只要脑子里能知道怎么跑就好,可能这就是理解的用处。结果不过不知为什么一看成绩分布,最终期末考到80左右好像就能拿4.3,可以说奶得相当到位。

 

总结起来,平时OJ尽力好好做,书面作业别忘了交,期末认真准备,别轻视,少犯低级错误,就能学到很多东西,也能取得不错的成绩。推荐大家积极选课。

 

附1:算法导论答案 (前面评论区有了,再贴一遍):https://walkccc.github.io/CLRS/

附2:如果想提高OJ能力,有时间的同学可以去逛逛leetcode,OJ的运行模式就是仿照leetcode进行的,多刷刷题,应该可以熟练一点。

(最后修改于 5 0 复制链接
  • 课程难度:中等
  • 作业多少:很少
  • 给分好坏:超好
  • 收获大小:很多
  • 难度:中等
  • 作业:很少
  • 给分:超好
  • 收获:很多

今天翻自己在评课社区的评论,想不到居然忘了给这门课评价,遂来补上

(毕竟zjy可以说是我来科大最大的恩师了hhh,无论是给分还是学知识还是其他帮助,不评价一下有点过意不去)

这门课在未来会是一门4学分的课,主要内容就是算法导论上面的一些经典算法和一些经典数据结构。对于入门coding还是非常有帮助的。相比于算法导论过于啰嗦的文字描述,我觉得老师的PPT就写的更加简洁明了。我个人学这门课的时候一般都是以PPT为主,然后PPT遇到疑惑才去参考课本或者是网上的一些叙述,总体来说不会特别吃力,整个学习过程只有一个红黑树学的比较累orz,其他知识应该都是能够比较快学会的。(特别提醒的是老师由于上课速度比较快,会在课程结尾的时候补充一些图形学的私货,我本来以为不会考就没看,但结果考了一个十分的大题,最后因此失去了一些分数。)

 

这门课平时的作业包括书面作业和编程作业,以及一些大作业。

书面作业的话网上会有答案,我觉得不太有必要自己投入过多精力思考,理解答案的想法即可。(尤其是后面图那一块的作业,难度可以说还是比较大的)

 

编程作业对于没搞过算法竞赛的同学来说可能比较痛苦,不过确实是个蛮好的锻炼。平时要花费的时间不定,我个人大概是一周要花差不多4-12小时来写代码才能通过(根据当周难度来定)

 

大作业的话,说实话今年大作业本来还是非常有难度的,但是这门课今年的助教实在是太C了,给我们提前写好了非常多可能要用到的函数,直接干脆就是把大作业变成了5分钟能写完的东西。(不过算上看论文可能还是要30-60分钟。)

 

我个人认为如果选这门课,应该平时是要经历比较多的编程拷打的,全部挺过去肯定能得到不少收获,是一个好事。

 

期末考的每年难度比较稳定,只要上了80分就可以拿到4.3,我个人感觉大概80分左右是只要理解书上的算法思想就能做的题或者是作业原题(我的意思是不用证明,只要知道算法思想+会用算法就行)

还有20分可能是需要大家临场思考的oj题。反正只要把ppt上的算法思想给掌握好,然后稍微有一些临场做oj的能力,拿个4.3就没什么问题了。总体来说还算是比较好拿高分的课。

最后再感慨一句zjy绝对是来科大这么久最喜欢的老师了。

2 0 复制链接
匿名用户 2023春
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:超好
  • 收获大小:一般
  • 难度:中等
  • 作业:中等
  • 给分:超好
  • 收获:一般

张老师是一个很好的老师,但是可惜不是一个很好的讲课者,不过在现在这个环境里能做到二者之一的老师感觉都不算多......简单说一下优缺点

优点:

1. 老师眼光和观点比较高,对前沿知识都很了解,作为一个研究者是非常厉害的。

2. 老师会开拓学生的视野,不拘泥于古典的算法知识。

3. 两位助教挺负责,基本上是有求能应则一定会应,交流问题也很耐心,而且很体谅学生。

4. 作业还行,最后一个作业也不强制做有关图像的算法,算是考虑比较全面吧

缺点:

1. 张老师讲课水平有点不太行,声音比较小,而且有时候表答不很清楚,而且可以感觉到助教和老师对这些古典算法的掌握程度其实并没有非常扎实(不过这和做科研没啥关系了,毕竟很多算法基本上不会用得到,但是既然开这门课开了这么多年,感觉上课还是经常翻车是不太应该的)

2. 考试出卷很随意,而且大量沿用往年题,考察的知识面面俱到,有一部分题有点难度,但是感觉有点难为助教们了,本来一个问题解决方式就有很多种,回答了助教没学过的那大概就没太有分(或者给的很少),用了助教不熟悉的语言助教也会扣你分,所以整张卷子上不少文字游戏(希望以后能改改)。而且张老师有点严格,所以感觉并没有给助教很多的裁量权。

如果想得高分,好好写作业和oj,刷往年题,如果你足够卷可以刷算法导论课后题,试卷里面很多题目都是原题。

给分未知,就看之前的评课给个超好,要是把我鲨了我再回来改

给分听课程群应该还不错,作业全交oj全写期末比最高分低十分(因为数据没公布是查卷的时候听到的就不公开这个信息了)左右,总评91

(最后修改于 2 0 复制链接
TheArkSakura 2022春
  • 课程难度:中等
  • 作业多少:很多
  • 给分好坏:一般
  • 收获大小:很多
  • 难度:中等
  • 作业:很多
  • 给分:一般
  • 收获:很多

计数快乐课,推荐大一下学习。

老师和助教都很懂科大学生的学习节奏 (指知道恐怖的P.D.E的期中考试后延期ddl),这门课的平时压力主要来源于每周的编程题(类似于洛谷或力扣)。期中前大概每周四五道,包括上课讲授的算法复现和一些算法思想的应用(比如DP,贪心,二分,分治等等),期中后改为每周两三道。一门十五周的课程考试内容前十周就已经讲完,后面会有习题课,答疑,或老师找来一些学者/实验室的学长做有趣的报告,总之,这门课绝对不会在你需要花时间做其他事时突然跳出来,挺住了OJ题较多的前几周(而这时候其他课的压力一般较小),后面的学习会很轻松。

到课的人不多,事实上张老师的讲课用的PPT都会发下,而去听课也并不能获得超过PPT的知识,我到现在也只记得张老师课上经常提及当前算法与其他课的联系,貌似cue了运筹学,图形学,数值分析等课。。。不过张老师不点名,各位来去自由。

据助教所说,除去OJ,书面作业,期末考试以外,每年会从ACM和大作业中二选一布置,今年的两个大作业第一个迫真完形填空,第二个与图形学相关,听说很多人都没做,我因为方向是统计不想花费学习成本在open**上也摆烂了,张老师说一个大作业最多能影响3分总评,所以可能没选过图形学这门课的会吃一点点亏,,,什么,你问我为什么概统要来学算法基础,我会告诉你那是因为上学期的运筹学由于不会python吃大亏了吗?所以为什么概统要选运筹bushi
最终考试可能需要把讲的内容,作业题,OJ题BFS遍历一遍,由于基本上一道题的算法理解了就是满分,不理解就很难得分,因而若复习不全面总评容易发生惨案。最后给分未知,我觉得就是保证优秀率的情况下整体平移吧。

2 0 复制链接
鬼灯彻 2021春
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:超好
  • 收获大小:很多
  • 难度:中等
  • 作业:中等
  • 给分:超好
  • 收获:很多

算法基础课程虽然是一门选修课程,但能学到的东西仍然是相当多的。而且其教学内容与数据结构这门课有高度重合,无论是大二下选修巩固自己大一学的知识;还是大三下选修重温那些 C 语言与数据结构知识,都是十分合适的。

张老师在课程教学方面广泛听取学生意见,现在的整体教学旨在提高大家的编程能力。上课方面老师会把一些重要知识讲细一些,且对于学生不会的方面进行再讲解。有时候也会补充一些材料便于大家理解,同时张老师有时候会结合自己课题组学生的现况对大家进行一些小建议。上课中期或最后也会讲一些课题组内的研究方向,让大家领略目前 CG 或 CV 的前沿领域,算是带大家初窥门径。

每周布置的书面作业都是很少的,取而代之的是上线了OnlineJudge系统,每周有 4-5 道线上编程题目,旨在将上课学到的算法通过一些编程题目进行实现,以此加深对算法思想或相应数据结构的理解(不过这个大概还是需要投入一些时间,就像刷 leetcode 一样)。

那年期末题量还挺大的,且覆盖知识面比较广,基本涉及到所有上课知识,所以如果想要考一个还算过得去的分数还是需要对所有内容广泛浏览一遍。

不过并不用特别担心分数问题,张老师的给分比例大约是:20%书面+20%OJ作业+60%期末考试。算完分后再进行比例上的调整,会给满优秀率!平时作业只要是基本完成了,期末考试也不是特别差,优秀基本可以保证,努力与收获成正比,回顾学期的努力与最后得到的结果会有别样的收获感。

最后还是推荐大家选修这门课的,毕竟就算课程中会日常抱怨这 OJ 题目怎么总是不给 AC ,但结束后还是能学到不少编程小知识的!

(最后修改于 2 0 复制链接
GiZemou 2021春
  • 课程难度:中等
  • 作业多少:很多
  • 给分好坏:超好
  • 收获大小:一般
  • 难度:中等
  • 作业:很多
  • 给分:超好
  • 收获:一般

本课程为应用数学&计算数学的专业方向课程,课程教材为《算法导论》。

课程的具体内容包括:排序算法、分治法、红黑树、动态规划、贪心算法、哈希表、图的遍历、最小生成树、最短路径、最大流、字符串匹配(以上按讲述先后排序)。授课过程比较重视一些算法的证明。可以发现,以上内容和“数据结构与数据库”中的不少内容有重合。事实上,老师的讲课并不十分吸引人,有一定程度上的催眠,课堂到课率不高,有时甚至会人数低于20

本课程第一节课开始时选中人数为62人,参加期末考试的人数为43人。(瑟瑟发抖)

作业包括手写和机评编程(OnlineJudge)。手写作业为算法导论的课后题,一周三四道,写了就行。我个人经常写不出来上网搜答案。编程作业一周三四个,只有对错之分,和当周所学算法密切相关,不少题比较困难,因而编程多了,人就易怒,此时要冷静。因此作业总量较大。

考试内容基本覆盖全部课程内容。

自己感觉给分很好。或许是因为善良的张老师不希望挂人,而低分不少,有三成学生期末得分不足40,只能大力度捞人,分比较高的也就一样被捞上去了。然而事实上,期末考卷中有排序(12)+堆(10)+最小生成树(15)+最短路(7)=44分在数据结构与数据库中详细涉及(我考完这个第二天考数据结构与数据库,这些基本是又考了一遍一样的题型),因而拿到这些分数再认真学的话获得优秀也许并不太难。

2 0 复制链接
池ss 2019春
  • 课程难度:简单
  • 作业多少:很多
  • 给分好坏:一般
  • 收获大小:很多
  • 难度:简单
  • 作业:很多
  • 给分:一般
  • 收获:很多

这门课用的教材是Introduction to Algorithms (3rd Edition),有对应的中文译本《算法导论》(第三版),不过老师的PPT也是用英文撰写的。书后习题网上有答案,直接百度相应章节即可,下面是一个较为完整的英文版答案:https://walkccc.github.io/CLRS/

老师讲了书中的第2,4,6,7,8,9,12,13,14,15,16,22,23,24,25,26,32,33(最近点对的计算),22(线性规划的标准型)。老师上课声音有点小,而且讲课逻辑有一些混乱...感觉有的老师自己可能都不太完全掌握,所以也导致除了前几节课外基本上都没什么同学听,旷课迟到也是常有的事...

每周一般布置4~16道书面习题...量非常大,经常要写(chao)很久很久,本学期助教比较负责,安照一题1分计算平时分,迟交打五折,最后统计学期一共是114题,平均分99.88。(这部分占总评20%)另外除开刚开学几周外平均两周左右布置一道程序设计题,这学期的题目是:1.找n个数中第k小的元素  2.实现红黑树和顺序统计树  3.实现矩阵连乘的最优括号化方案/两种方法实现最大子数组  4.求解任意两个顶点之间的最短路径  5.二选一复现老师给的两篇论文(纹理合成/纹理切割)。每次上机满分5分,最后一次按两次计算。(这部分也占总评20%

今年的期末考试题出现大量前年考试原题,也有一两道去年考试的原题(期末之前几周老师让助教发群里),据一个学长所说,当年他上这门课的时候老师开学时发的卷子也与期末考试题大量重合(我怀疑是老师忘了发过卷子),因此建议大家找一下往年卷子做一做...可能基本上都是差不多的。期末试卷难度基本上等于中等的作业题难度,大概就是算法证明、算法默写、建模...不过题量很大,最好能熟练地记下书上的算法,满分110(有一道附加题),考多少最后就算多少。

最后的给分按20%书面作业+20%上机+60%期末卷面,我的成绩是没怎么调,涉及卡绩的可能有微调吧。

1 0 复制链接
三人的季节 2019春
  • 课程难度:中等
  • 作业多少:很多
  • 给分好坏:一般
  • 收获大小:一般
  • 难度:中等
  • 作业:很多
  • 给分:一般
  • 收获:一般

课堂:到课率低,老师声音有点小,我反正没怎么听

教材:clrs

书面作业:量大,平均难度一般,部分较难的题可以参考github上答案,反正考试不会考难题。迟交打五折,尽量提前一两天写好,虽然我都是要交的前一天肝的。

编程作业:最后一次大作业略难,其余对书上伪代码进行翻译并利用python的库进行数据处理和绘图即可完成,难度较小。过ddl得分打五折,千万不要太拖延。

考试:这次考试题和前年考试题大面积重合,我已经彻底没话说了。水题+算法默写+附加题,满分110。然后水题也不知道为啥完全正确的答案要扣分,有些题干没要求的事你不干还扣分,我强烈要求算法基础考试删除所有题干,让学生们心灵感应猜猜老师要我们往卷子上写啥。

(考试就是考试,希望老师和助教们可以认真对待,认真出题、认真写题干、认真制定评卷标准、认真批改试卷。)

给分:个人觉得还行,请参考学生们的平均评价

 

1 0 复制链接
小学生侦探 2019春
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:一般
  • 收获大小:很多
  • 难度:中等
  • 作业:中等
  • 给分:一般
  • 收获:很多

这门课老师的存在感可以说是很低了…能给7分主要是教材算法导论还是很经典的,可以看看。书上的内容都还是比较有意思也有用的。但是正如上面的评论,感觉老师对算法的理解也只是停留在应该怎么做,对于为什么要这么做其实并不十分清楚(当然可能应用中也不需要特别清楚)。所以老师上课也讲得不是很清楚,需要自己好好看书。 课程前半学期进度很快,每周作业量巨大,而且教材的习题还是蛮难的,需要参考上面评论贴出的答案……上到图论以后速度和作业量都变得可以接受。总共五次编程作业,最后的大作业是实现论文啥的…实在是不太友好。考试=算法默写大赛,只要对书上的算法和作业题比较熟练就行…我从头到尾没停笔才勉强做得只剩最后一道附加题,题量是很大的。 值得一提的是老师会请人来讲讲深度学习的科普啥的,比较关注前沿领域的科普,这还是不错的(不过也就是科普了啦)。

1 0 复制链接
科研逃兵 2018春
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:一般
  • 收获大小:一般
  • 难度:中等
  • 作业:中等
  • 给分:一般
  • 收获:一般

课本身是很有意思的 无奈老师上课水平有限 比较催眠

教材是CLRS

教材上习题有一定难度,下面网址有参考答案(有错误)

https://walkccc.github.io/CLRS/

给分就那样吧。基本看期末考试成绩

1 0 复制链接
Jim 2017春
  • 课程难度:中等
  • 作业多少:很多
  • 给分好坏:一般
  • 收获大小:一般
  • 难度:中等
  • 作业:很多
  • 给分:一般
  • 收获:一般

1 感觉老师上课非常随意,很多东西都解释不清楚,基本上靠自学了。

2 平时作业非常多,感觉是我这学期花时间最多的一门课了(可能是其他课完全没怎么学)。

3 编程作业的话,前四次比较ordinary,最后一次感觉很有难度,所以我随便水了水就交了(所以最后一次编      程3/5)。

4 给分的话一言难尽。我期末95,平时纸质作业分数全班最高,编程作业坑了(第一次4/5,最后一次3/5(最      后一次权重*2)),然后总评93。

5 不过上这门课收获还是挺多,教材很不错(虽然废话有点多)。

 

0 0 复制链接
machix 2017春
  • 课程难度:中等
  • 作业多少:很多
  • 给分好坏:杀手
  • 收获大小:没有
  • 难度:中等
  • 作业:很多
  • 给分:杀手
  • 收获:没有

见过的最垃圾的老师,没有之一。

作业多得要死,大作业除了最后一个都还好,但是我至今都没有想明白为什么我学算法基础还得为了一次大作业专门学一个OpenCV。

上课基本上可以忽略,听了也没用,课件还不如直接看书。

基本上可以说我上他的课成功的增加了我学习算法基础这本书的难度

考试最后评分标准十分迷离,搞不懂他到底什么意思。

0 0 复制链接
小野君 2017春
  • 课程难度:简单
  • 作业多少:很多
  • 给分好坏:超好
  • 收获大小:很多
  • 难度:简单
  • 作业:很多
  • 给分:超好
  • 收获:很多

收获很大,但是给8分,两个原因:老师上课感觉很随意233,经常讲到一半莫名卡住,然后就“同学们我们休息一下”救场,另外作业很多很多,而且有的找不到答案,助教习题课讲得也很模糊。

课本身是很好的,算是数据结构的后续课,拓展了很多东西,编程比数据结构复杂了一些,但是很有趣~

我是大二选的,感觉老师有点照顾大二学生???给分还挺好的其实~

统计方向的可以考虑选修一个,挺有用的~

0 0 复制链接

张举勇

教师主页: 戳这里

其他老师的「算法基础」课

陈雪 9.6 (9) 2024春 2022春
徐云 8.1 (23) 2023秋 2022秋...
顾乃杰 7.3 (52) 2023秋 2022秋...
李向阳, 谈海生 7.1 (44) 2023秋 2022秋...
庄连生 4.8 (4) 2019春 2018春...
陈雪, 邵帅 5.1 (16) 2023春
未知 2022春 2016秋...
吕敏 2016春 2012春...
周世哲 2015春 2014春...

张举勇老师的其他课

计算机图形学前沿 10.0 (5) 2019夏
新生“科学与社会”研讨课 10.0 (1) 2020春 2019秋
数学实验 10.0 (1) 2022秋
数据可视化 9.0 (1) 2020秋 2019秋
小波分析 2015春
数字图像处理 2017秋 2013秋
最优化算法 2015秋 2014秋