数据结构与算法分析

(唐博)CS2032024秋 2023秋 2022秋 2021秋 2020秋 2019秋  
2024秋 2023秋 2022秋 2021秋 2020秋 2019秋
6.9(11人评价)
  • 课程难度
    困难
  • 作业多少
    很多
  • 给分好坏
    一般
  • 收获大小
    很多
选课类别:课内实验 教学语言:英文
课程类别:专业基础课 开课单位:计算机科学与工程系
课程层次:本科 获得学分:3.0
课程主页:暂无(如果你知道,请点右上角“编辑课程信息”添加!)
课程简介(教工部数据)
本课程学习计算机科学中的数据组织、存储、处理方面的基本方法,掌握基本数据结构的使用条件和适用情况,学会针对问题或者应用,选择合适的数据结构与算法。


This course will teach students the fundamentals of data organization, storage and processing in computer science. Students will be required to grasp why and how a data structure can be applied according to applications.
点评写点评
排序学期
评分评分11条点评
user avatar   摆烂比赛总冠军     2024秋
  • 难度:中等
  • 作业:很多
  • 给分:一般
  • 收获:很多

DSAA这个学期给我的感觉并不像是一门评分只有6分的课。

之前tb广为诟病的满嘴跑火车问题在这个学期已经显著改善了,包括但不限于Quiz2直接白送50分,满分变为120分能够补Quiz1扣的分(而且第一题证明O(n)建堆直接说了quiz2会考,第三题堆排序更是上古尊题);期中的所有题基本自己写过lab题的话都能覆盖到。期末从100分变成120分,虽然最后有十分的题不太可能在限定时间内想出来,但前面题的10分还是算是福利吧。总之,就和tb最后一节课说的一样,这门课其实并不想在GPA上难为大家。

再说教学方面,tb的讲课方式对初学者并不太友好,手搓他那iPad就是硬讲,如果一下子走神了会造成比较严重的断片。(加上一科报告厅那柔软椅子,我一般不会上课睡着但我这学期直接睡着了两次)如果是有点基础的话听起来会比较轻松,不过确定还需要听吗?至于sy,我只能给出10+/10,所有lab题都能讲的非常清楚,同时还有细心的手把手debug。唯一缺点是有些题只讲了做法,但我没有搞懂想出做法的思路,就显得我好像是一个无情的翻译机器。

总之,我确实在这门课上学到了很多东西,从这个学期的体验看也没觉得这门课有什么大问题。扣的两分一分给lab题作业量太大,一分给tb吧。

更新:期末改卷下手很轻,满了,加一昏!

Lab & 期中 & Quiz & Cheating Paper仓库:https://github.com/BrightonXX/SUSTech-CS203-2024f

user avatar   她说没感觉了     2023秋
  • 难度:困难
  • 作业:很多
  • 给分:杀手
  • 收获:一般

学完ADAA回来吐个槽,有一点OI基础,签到有两次没签,然后第一次quiz有点崩,期中接近满分的情况下最后还是靠校赛捞了4分才勉强混个A。这个tb啊就是满嘴跑火车p学生,最后一节课考前闲来无事干,又见tb信誓旦旦吹逼快活似神仙,当着一百多号人的面说保证期末平均分85,最后上了80分的有5个人吗,我不好说

理论课随即签到,会有两次quiz,quiz基本都是往年原题,tb在第一次quiz后号称不会再出往年原题,第二次quiz又是往年的一个堆排,但是良心发现还是放水了,第二次quiz几乎是签到性质(来了就有80分)。
课程作业量也是相当大,一周六道lab题,可以放弃一道CD拿满,部分题是往年原题,可以搜到。快一点半天写完,慢一点就要花个一整天的时间写完,不会写的话多和同学或者TA请教一下,不要CTRL CV,就算原题源码在你眼前也要自己看懂了重新写一遍
bonus部分的话会有一次校赛,写一道总评+1分,会有两个送分题,2023秋的校赛还有一个数学题推导也挺送分的,但是要取模大部分人不知道逆元也就G了(其实离散有教),校赛前可以稍微了解一下,或者直接带本算法书进去,反正允许带纸质资料,虽然除了套套模板之外没别的什么大用。然后还有一次bouns lab可以补之前lab的分数,反正感觉是整个大二最顶的一门专业课了,祝好

user avatar   evaD_barC     2024秋
  • 难度:中等
  • 作业:中等
  • 给分:一般
  • 收获:很多

DSAA,很多同学进计系的第一关。至少唐老师的某一句话说得很对——这门课的内容你会在未来求职刷算法题时再次见到。

这门课讲了很多基础的算法知识和数据结构,从线性的数组、链表到非线性的树、图,从排序算法到最小生成树。如果你在高中达到了普及+/提高这个层次,那么飘过这门课应该是没问题的!

如果零基础也没关系,算法的世界一样欢迎你。但是——这是一门需要你夯实基础的课,你必须认真学习,在课后反思老师上课讲的内容。由于唐老师默认你会第二遍学这门课,他会讲一些你听不懂的东西,没关系你先记着就好,记不住也没关系。课后对于没有理解的定义和模板请一定去搜索相关的文章(各个博客、知乎等都有很多专门讲相关知识的文章),并总结出属于自己的代码模板。少用或者不用gpt,至少这门偏理的课不要。

一个好的代码习惯是:把你的代码尽量模块化,出了错误可以快速定位到具体的算法位置,而确认其他部分没有任何问题。比如下面的二分答案代码,理论上你只需要修改 check 部分:

bool check(int x){
	//check if your x is legal
}

int main(){
	
	int l=...,r=...,ans=-1;
	while(l<=r){
		int mid=(l+r)/2;
		if(check(mid))ans=mid,...;
		else ...;//modify your l or r into mid+1 or mid-1
	}
	if(ans!=-1)//then you get your answer
}

我很推荐大家在这门课多和别人交流,计系初来乍到,可以多多交流(线上&线下!),找一找一起学习的伙伴,计系的好日子还在后头呢

祝你的思维方式和代码能力取得长足进步!

好歹我在 OJ lab 的排名也蛮高的,所以时刻欢迎后来的同学咨询!在这里留下联系方式 qq1351591429(不许开我盒😠)

最后留一句和我一节课的同学们知道的谜语吧——树德之窗绝赞征稿中!「树德之窗」栏目长期征稿中!

 

upd on 2025/1/9:

总绩100.0/100.0。第一眼还以为是作业分没看到()那么这门课大家有问题欢迎咨询!

更新一点关于quiz和考试的内容。

总共有quiz1,midterm,quiz2和final四次考试。quiz1会比较严格,一是给大家见识一下算法的魅力(迫真),二是前面讲的东西比较少,于是会选择考得深入一些,在这一部分推荐掌握线性查找第k大(快速排序的变式)以及唐老师课上提到的思考题;midterm开始就得准备捞人了(笑),在quiz1的基础上要好好复习字符串相关的知识,不会考太拔高的题目,但是一定会很考察你对基础模板的理解;quiz2纯捞人,写名字就有50分,但是说到底这里的知识还是蛮重要,树的概念需要好好消化;final回归了quiz1的体感,主打量大管饱,允许你带cheating paper,但是一是大部分考察的和你cheating paper上的模板没什么关系,二是题量不支持你很不熟练地去大幅度查找cheating paper,这里主要考察的是大家的熟练度,基础不牢地动山摇,写啊写啊写啊。

唐老师为了大家的均绩会有不少捞人送分的时候,比如quiz2和其他bonus。这学期没有程序设计校赛(按往年说法,人均提2分总绩),在final里加了bonus题目,不过写完的人甚少啊。

对于考试题目中算法书写的练习,我推荐大家去写一些lab课习题的题解。把自己的思路好好梳理下来,也培养一个自己的书写习惯。优质的题解笔记可以参考网上的博客文章,学习他们的行文结构,对一些术语的准确把握,以及对时间复杂度的分析。

不管问问题还是给别人讲解,最好都能尝试向对方说明你的思路。小黄鸭大法好啊,很多时候你一面说一面就知道自己错在哪里;同时,真正把思路梳理清晰,能够引导他人,也才是你真正达到了这个水平的证明。

这门课可能会给不少计系的新同学一个下马威,但是请大家不要气馁,你所收获的远比绩点更多。同时,你和数据结构与算法分析的缘分也一定不会止于这门课,希望你能在未来的计系生活中巩固你的收获,并找到属于你自己的各种答案。

user avatar       2023秋
  • 难度:困难
  • 作业:很多
  • 给分:杀手
  • 收获:很多

在算法设计课结课之后听了算法老师的一段话颇为感慨——“难倒你们很简单,但是想让大部分人拿高分蛮难的。我们不想让很多人拿到很差的成绩”,知道了史玉回的好之后回过头来评价又爱又恨的DSAA。首先就是,如果你选了这门课你要做好努力一学期狠狠拿B的准备——这门课的期末考很令人无语,average 60+(最恐怖的是80+人数屈指可数,没有90+),同时如果你是非计算机系的想选这门课,你要注意到你的同系同学完全选择别的好拿高分的课程,并且会狠狠在rank上甩开你,想甩开别人的话请选DSAA B;但是如果作为非oi选手真的想接受硬核的coding训练,选这门课是没有错误的(有个lab有道搓AVL树的印象深刻,搓了整整两天de了一整天bug才ac)。这门课的lab是一周六道题,要做完的话压力巨大,当然也没有要求全部做完,但是那些很锻炼人的题总应该去试试吧。lab全靠沈姐带飞,讲题巨清楚;tb的lecture一般般(至少我觉得是)。剩下的写给想要数计双修的来者,coding能力学完这门课之后已经完全足够了;如果你更喜欢数学的话,请趁大学还有机会,多学点你喜欢的。

user avatar   匿名用户     2023秋
  • 难度:困难
  • 作业:很多
  • 给分:杀手
  • 收获:很多

我是23秋学的DSAA,这个学期这门课的中位数已经来到了惨不忍睹的C+,说是杀手不为过吧。作为一个毫无oi基础的但拿了还不错分数的寄系菜菜给来给之后学这门课的同学一点建议吧。

自己写lab题!

现在的ai工具大家应该都会用了吧,也有很多同学拿来写代码什么的。但是真的不建议你在这门课的lab上这样做,除非你已经了如指掌这题该怎么写。首先,很多代码细节如果自己不去踩坑,可能一直都不会注意到了;其次,写lab题有助于你深刻理解这些数据结构和算法,让你在考试中有更好的表现。

一次lab会发六道题,你可以放弃一道C或D依旧拿满分,或者根据自己的时间精力来取舍放弃一道E/F。全部写完确实能获得更好的练习,但也确实很耗时间,自己取舍就好

考试中的小题一般跟理论课上讲的内容强相关,能将理论课的内容基本学会(ppt全看懂)应该可以无伤过。大题考察算法设计,没有oi基础真的就是考场科研啊!(还科研不出来)尽自己所能就好,如果实在不会写个暴力上去骗60%的分。大家其实都不会。

祝修这门课同学都取得好成绩!最好别来

user avatar   zzh     2024秋
  • 难度:困难
  • 作业:很多
  • 给分:一般
  • 收获:很多

说实话,在这门课真的学到了很多,虽然平时作业难,考试也难,但是一学期下来对自我提升很明显。不评论其他的,tb讲课确实还是很可以。我们shenny真的太好了🥹

user avatar   Victoria_Phillips     2024秋
  • 难度:困难
  • 作业:很多
  • 给分:一般
  • 收获:很多

DSAA难度确实很顶,即使我学过一些内容,后面还是有点跟不上,Lab每次都要花很长时间做。不过唐老师似乎这学期出题没有像往年这么难了,因此给分还可以,虽然我最后卡A上界了。。。。qwq

user avatar   Tristan     2024秋
  • 难度:困难
  • 作业:很多
  • 给分:一般
  • 收获:很多

对于DSAA的初学者,lab课的作业会花费很多时间,但是后来才发现这一部分总共只占20%,还要均分到10次lab中。我觉得时间花费和我得到的分数不匹配。每次课间只休息5分钟,课后还要拖5到10分钟堂,之前甚至说要把拖欠的时间还回来(笑)。不积跬步,无以至千里。客观评价,唐老师课讲的不错,对知识点也讲得比较清晰。如果有其他选择,总体上不推荐

user avatar   咕桃     2022秋
  • 难度:困难
  • 作业:中等
  • 给分:杀手
  • 收获:很多

唐老师的风格算是很有特点的,授课内容讲的也算足够清晰,理解课程内容听课就够了。

Lab作业共十次占20分,还有一次bonus Lab 2分(仅能补Lab作业分)。作业通过ACM Online Judge布置,和java A的OJ不同,只要有一个测试点过不了就一分没有,并且不展示报错信息,在debug层面难度就更上一层楼了(不过可以找温柔善良的sy姐姐帮忙还是挺好的awa)。Lab题对于没有竞赛基础的同学,有些题还是颇有难度,例如本学期比较恶心的两道题是块状链表和平衡树,实际上写不出来也不必死磕,bonus Lab的难度都很低(至少这学期是这样),可以抵消3,4道前面太难的题,何乐而不为呢?作为参考,我有微弱的算法基础,每次Lab死磕做完的耗时大概在4~30小时不等,平均用时12h附近?

考试和上课所讲直接重合的部分有,但不是全部,会出一些比较伤脑筋的算法设计题,现场很难想出最优解,想不出最优解唐老师就会给你这道题打个亲切的六折,还是挺痛的。

考试复习的建议就是看看课件,长期有精力的话可以看看算法导论对应章节的练习题,唐老师似乎很喜欢这本书,上面的题解也还是挺巧妙,但也挺伤脑筋的。

给分不予评价,人不行不能怪路不平。毕竟是计算机系必经之课,也是很基础很重要的内容,学到的东西的重要性比成绩要重要多了。

user avatar   init_admin     2020秋
  • 难度:中等
  • 作业:中等
  • 给分:一般
  • 收获:一般

问:只有hmx的数据结构与算法分析B建议选唐博教的A吗?

答:hmx讲课有那么惨不忍睹吗?不要听风就是雨,之前hmx的javaB被喷很大多数是因为他没有很顾及零基础的同学。dsaaA整个学校只有计系是必修,要是确实对计算机感兴趣的可以选,但是很难顶得顺。

答:不建议,dsaa需要每周花大量时间在作业上。

答:我个人还是很喜欢hmx的,只要你想,认真听课完全是可以听懂的(虽然有很多人选择自学/听网课/看书)。

答:hmx的课讲的还行,其实也可以不听,然后自己看书,期中期末好好考就行,我水平挺差的平时上课也没听过总评也可以拿A


teacher avatar

唐博

计算机科学与工程系

教师主页

其他老师的「数据结构与算法分析」课

唐博老师的其他课