选课类别:计划内与自由选修 | 教学类型:理论实验课 |
课程类别:本科计划内课程 | 开课单位:信息科学技术学院 |
课程层次:专业基础 | 学分:3.5 |
2020年秋季学期助教麻治昊编辑于20201215
个人主页:
联系方式:
前置知识:计算机程序设计A(主要是指针以及结构体部分,科大信院必修此课程)、极少量的C++内容(new \ delete \ 引用符号& \ iostream的cin和cout 等,百度稍作了解即可)
此课程的类似课程在计算机科学技术学院也有开设,但是内容不尽相同。袁老师讲授的这门课是信院开设的。而且由于题型较为固定,教授这门课的任何一位老师都是不希望提供往年题的,所以同学们平时认真学习抓重点很重要
此课程以算法为核心,讲述了一些数据结构的简单应用
课程主要教材是中科大出版社的《数据结构及应用算法》,袁老师也是这本书的编者
课程主要分两部分,第一部分主要讲述了线性表、栈、队列、串、数组、树、二叉树、图的内容以及它们对应的某些常见操作;第二部分主要讲述了查找、排序的算法以及简要介绍文件。纵观全书,重心从头到尾是一个“从数据结构到算法的偏移”,尤其是在树这一块开始,对算法的侧重就越来越明显了。而查找和排序这里用到的许多数据结构,都是之前讲述的各种数据结构的综合
由于课程时间有限,为15周,所以很多内容并不会讲的过于详尽。同学们修读完这门课程之后,如果想进一步学习计算机编程知识为了选读其他科大开的课程、开发软件实现自己的目的、就业工作等,这些知识是远远不够的。所以同学们可以考虑课余时间可以考虑在网络上多学习一些数据结构及其算法的知识,比如红黑树、博弈树、银行家算法等,以及自学一些C++的内容,如STL等
此课程还有六个上机实验,都是用到的课上学的知识就可以做好了。内容如下:
做完实验还有实验报告,挑选一两个上机实验讲述一下收获与心得。另外还有两个选做实验,不加分不扣分,给有兴趣的同学准备的:
总评计算方式:0.1作业+0.1报告+0.2实验+0.6期末
袁平波老师的数据结构课程被多数学生评价为讲课清楚,细致且有条理,经常通过PPT和板书结合来展示算法的实现过程。一些学生指出老师讲解速度较快,但思路清晰,能跟上节奏的同学能够受益良多。老师喜欢使用动画来直观演示复杂算法,提高学生的理解。一些学生表示课程照本宣科,语速太快,但整体教学水平较高。
课程主要讲解基本的数据结构和操作,包括树、链表、图等内容。课程内容略微偏重算法,特别是相对于计算机科学专业,信院的版本更侧重算法和操作的讲解。实验相对简单,设计多为书上的算法变型,主要用C++实现,但有少数实验题目可能比较有挑战性。
课程设置了8次作业和6次实验,作业通过BB系统提交,每章布置一次,时间宽松。实验通常比较简单,主要是运行基础代码并解决一些小问题。学生普遍认为实验和作业难度适中,但要认真完成,因为和期末考试题型高度一致。一些助教表示实验设计较简单,以OI模式检测代码正确性,但存在一些设计问题。
期末考试包括选择题、填空题、应用题和编程题,主要考查概念、算法实现和代码编写。编程题涉及基本数据结构的操作,如二叉树和链表。考试难度中等偏上,但作业题与考试题型相似,可以作为复习重点。建议复习书本知识点和作业。
给分较为严格,有学生反映平时成绩较高但总评得分较低。老师通常不公布卷面分,平时分占比较大,且根据实验、作业和期末考试的总评计算成绩。尽管老师尽力给满优秀率,但分数分布可能不均,部分学生反映拿高分较困难。
总体而言,袁平波老师的《数据结构及其算法》课程教学水平较高,内容丰富且讲解细致,但部分学生反映语速较快。课程设置合理,作业和实验难度适中,给分较为严格。选课建议有一定编程基础的学生选修,能够跟上老师的讲课节奏,将会收获良多。
秋季学期怎么样我不知道,反正春季学期千万别选
作为学了5年OI,程设进了进阶班并拿了4.3的人,这门课8次作业75.5/80,最后的实验报告10分,结果被给了3.0,并且听说几乎没有4.3,实在不能忍
这门课老师讲课有PPT,然后上课莫名给人一种照本宣科的感觉(?)不知道是不是只有我有这种感觉orz,所以后面就没怎么听,之前自学学过ywm的数据结构,然后上机的题目似乎做了就给满分,(悄悄说一句,上机题似乎只有哈夫曼树比较难?)此外就是老师一直在用雨课堂签到,刚开始的时候没有在意,后面才发现,少签到好几次,可能也是痛失4.0的原因......考完出来感觉分不算低(?)没有出卷面分,直接出的总评,然后不允许查卷子,只能查统分错误......也不太清楚老师奶了没有,总体来说这个课中规中矩,不算好也不算差,但是这个学期只有袁老师开>....所以当时莫得选择....看情况重修了....
作为本学期助教,简单点评一下这门课。
课程本身是一门很重要的课程,主要讲解一些基本的数据结构以及基本操作。作为计科人,其实发现了计科的数据结构和信院的数据结构及其算法侧重点还是有些不同的,可能是信院不用学算法基础的缘故,所以算法讲的更多也更浅。
本学期一共 6 次实验,前 5 次实验都是由我和另一位助教在往年实验的基础上进行了一些简单的改编得来的,采用了类 OI 的模式,用程序检测编写的代码是否正确,能够发现一些不易发现的 bug。但由于经验不足,实验的设计还是或多或少存在一些问题,如果之后继续担任助教的话会对其改进(但恐怕没有机会了?)
老师倾向于让大家学会使用 C++ 而不是用 C 语言来完成实验,因为 C++ 面向对象的特性可以使数据结构更为明晰,将所有功能封装到一个类中可以直接看出一个数据结构所需要具有的功能。所以在实验的设计中,加入了一些 C++ 的教程,并且后面也只提供了 C++ 的模版。其实本学期的实验相对还是很简单的,因为助教完成了实验的主体部分,只需要简单填写一些函数即可完成实验。但由于本人也是 C++ 半吊子水平,能教给大家的实在有限。其实非常希望教会大家类的使用,但貌似在实验中给的引导太少了效果并不好。
最后试卷也已经批改完了,平时成绩也都最大程度地给同学们往高了打,也希望同学们都能获取好成绩。
课程实验已经上传 github~https://github.com/rewinery/USTC-DSA-2024Spring
数据结构及其算法这门课还是比较容易,因为这不是一门编程课。考试的话编程题只考二叉树,链表这些比较简单的数据结构的简单操作(毕竟手写代码),同时只占30分。后面的树、图里面还是有些相对较为复杂的算法,但是只需要知道算法原理,并不需要懂得算法的代码是怎么写的。平时的实验基本就是书上的算法变式,抄一抄足够应付。
老师上课前期搞过一个什么回答问题加分,非常恶心。讲课还可以,算法基本讲的都很清楚,还讲过一些补充内容。
期末直接出总评,期末错了一道大题,总评95,是否调分,平时分占比等不知道。
老师感觉上课是ppt和课本结合起来讲,还会在黑板上写过程,考试最后有点难度,听说很多人被给了低分,不知道总体优秀率怎么样,自己拿了99,还行
袁老师人很好,讲解很细致,喜欢使用动画来直观地演示算法执行的过程。老师作为教材的编者之一,对于教材内容十分熟悉,对什么都是信手拈来。
课程内容感谢麻助教的介绍,我就不多说了。说说其他方面
首先关于袁老师,感觉袁老师水平还是很高的,讲课时信手拈来,很精简熟练。许多算法老师会通过ppt或板书来演示,加深我们的理解。不过总觉得袁老师讲课的时候语速太快TAT,然后有点跟不上,于是就不想听课想摸鱼,然后就更跟不上。。就这样恶性循环。。当时开学一两周的时候本来打算换班的,结果发现其他老师要么时间冲突要么评课社区上评分太低,最后就没换。于是这学期课上一直在摸鱼,不是玩手机就是睡觉。
然后是实验和作业,一定要认真完成!!袁老师留的作业与考试题型高度相符,然后实验是锻炼编程思维的最好方式,许多上课听不懂的地方,实验的时候上机码一码代码就悟了。
有关期末复习:期末考试前两周好好复习真的很关键。考试题型是选填题(要注意复习边边角角的概念)、应用题(手动实现算法)、写代码题,要有针对的来进行复习。推两本书:第一个是《新编数据结构习题与解析》,课本内容是这本书的字集,我复习的时候先对照书上的知识点刷了一遍这个,感觉收获还是不小的。这本书书后还附了几套“全国重点大学期末考试试题”,我个人感觉难度上与咱们的考试差不多或者比咱们的偏难一些,考前刷一刷也很有用。第二个是严蔚敏数据结构习题集,做的时候就会发现咱们很多作业题就取自这里。在上面找一些与考试相关的题刷一刷就好。
最后说说给分吧。我们今年没发卷面成绩,会提前出总评然后有查分。据说袁老师优秀率会给满,及格线附近的同学也会尽量让及格,不过其他部分的同学不会太调分。本人在这门课上也是一雪C语言卡89的前耻,喜提4.3(不过总感觉老师应该是把我调高了QAQ)。
关于课程内容的东西麻神已经说了很多了,本人就不多说了(
老师讲课的速度对于本人来说很快,上课真正听进去的东西很少,但是在为数不多的能跟上老师节奏的内容中,感觉袁老师还是能把内容讲清楚的。每一章上完后收一次作业,我基本是要交作业的前一个周末把这一章内容看一遍,把作业应付过去orz(我水平不高,所以大佬请忽略)
上机六个实验,有些对我来说还是比较难的。我们这一次的助教很好,看一下运行结果和部分核心代码即可,期末时需要提交一个实验的实验报告。
如前文提到,本人平时学的极不扎实,所以考前一周多在hxd的建议下去图书馆借了一本考研复习书,从头把全部内容看了一遍,但是由于考研书的内容与考试范围大部分交叉少部分不同的情况,如果之后有同学也想这么做的话,只需要选择性看自己不懂的地方即可。
这门课不提供往年试卷,而且袁老师是不划考试范围的,但是其他有的老师会划,所以可以找那个班上的同学py一波(笑),主要是概念的定义性质的掌握,及其重要算法的每一步的实现(比如图那一章的好几个算法)。本次考试是没有考KMP和AVL的,后面的同学要小心了。
评分标准是20作业10上机10报告60考试。给分还没出来,到时候补评。
更新:
公式计算出的总评成绩为87.21,最终进位到了88,痛失4.0(大悲
这门课正常是在大二秋季学期修读,春季学期开一个班应该是为了重修+提前修的同学
作业是每一章交一次,有6次实验,挑一次写一份实验报告,平常上课会用雨课堂签到(老师说这个影响不大,漏一两次也没关系)。成绩占比是平时10%,实验30-20%,考试60-70%。老师有明确说过会把优秀率拉满,尽量不会让大家卡绩(这点真的很好)
我是大一选的这门课,因为曾经学过信息竞赛有省一,课程内容基本都会也就没有听课(所以不知道老师讲课讲得怎么样),实验不难,期末考试我个人认为不难(我应该是唯一一个上90的)。
这学期的两个助教都非常好,工作尽职尽责,而且非常有实力,感谢助教的付出。
这门课的内容以及实验都在课程简介里面了,就不多说了。谈谈自己的一些上这门课的感受吧。
1.上课的时候。老师是负责编这门课的教材的,这既有好处又有坏处。一方面,老师自然会对这门课的体系结构有非常深刻的理解;但是同时,老师也会过于地照本宣科,并且有的时候讲的部分比较的多余冗杂让人抓不住重点。当然毕竟我感觉我对待这门课的态度其实也不是很认真,毕竟我以后也不学计算机/信息方向,所以这仅供参考。
2.作业&上机作业。我的建议是:上完了对应的部分作业就可以做了,上完了一章上机作业就可以做了,千万不要犯拖延症。这是因为有些算法真的需要大家写出来跑出来才能理解并且巩固课上学的知识,因为debug的过程非常非常重要。顺便说一下,作业中可以跑的程序就尽量地跑出来,哪怕这需要一些本来不用写的库函数(比如生成一些数据结构的过程)。顺便说一下,每次上机课都得签到,应该是jwc的规定。
3.我也会我自己写的一点库函数放上去吧。二叉树(二叉链表实现)用的是拓展序列,图(链接表实现)用的是链接表(我的只实现了单向的图,其他的 etc. 可以根据这个往下写)(默认了data是char类型)希望能够帮助到大家(如果大家有需要的话我还可以把Queue_l、Stack_sq、Stack_l的部分放上去)。Upload.cpp.zip
4.期末考试。这门课的总评基本上看期末考试了,因为剩下的部分基本上都拉不开差距。有选择题和填空题考一些概念和简单的计算;应用题就是你要作为电脑运行一个程序或者算法;程序题就是手写两个程序,当然不限语言(毕竟这门课理论上是不依赖于实现语言的)所以应该写什么语言都可以(甚至伪代码也会给一些分)。
5.给分。作为一个少物人,个人认为知识点掌握的还不错并且考得还不错,但是毕竟也没有像那些数学课和物理课那样认真地学,所以我也不太抱什么期望了。最后勉强拿了4.0还可以接受,不过感觉在这个全是重修和提前修的班上确实拿一个好的分数比较费力。
辅修人,80分飘过,其实主修的数据结构是优秀的,就没复习,不占别人优秀率了。全程叠课,没去过一节课,对老师上课不做评价
作业适量,小技巧,搜索引擎搜索 题目后加入`site:home.ustc.edu.cn`,极其可能搜到别的班助教或者别的同学放在个人主页上的作业答案
实验难度适中,每一个实验都是考察一个基本的数据结构或者算法,最后只用写一次实验报告,实验内容:http://staff.ustc.edu.cn/~ypb/exp/n_exp.pdf
考试感觉考的比较细,好多东西没复习都忘完了,建议好好看概念
老师给分是真的超级好,优秀率绝对拉满,卡绩的都捞了。
给分这点大家不要担心
再说说这门课吧,其实课上我都没有听懂,不过老师讲得蛮好的,可能是因为我太菜了,这门课主要考的是各种算法的应用,考试对代码的要求没有那么高,期末两道手撸代码题,不难(但我错了一题
实验很水吧,但是有个实验debugde了三周还是没搞出来,直接copy算了
考试前突击了一周,b站上看视频(看书是很痛苦的,这门课听人讲会好理解得多),没有做实验选做题,喜提优秀。
少半颗星少在老师语速稍快吧,不过不在后排摸鱼应该还是跟得上。
老师上课水平还是挺好的,听了理解起来比较容易。上机是真的水,任务简单,助教也不怎么仔细检查,不像隔壁顾奶奶班。此外老师有两个选做实验,我都做了,账单算法还是挺有意思的,奈何期末爆炸,不得不吐槽一句憨憨出题老师,AVL就不能写成中文?这靠人名简称得来而不是什么英文单词的简称考起来很有意思?这个弄错了整道题就没了,没意思。
讲课对我来说太快了…语速好快。我觉得看书比较好懂……… 而且他会教一些不考的内容,比如2路归并,这个别人班不讲… 然后考上也不画考试范围,自己复习去。 实验倒不觉得难,感觉比顾奶奶的实验轻松。 给分这个,不知道别人怎么样。
助教透露,大概给了28%的90+,优秀率肯定爆了。。。所以,给分肯定是超好的。
袁老师讲课还是不错的,看书晦涩难懂的东西,只要在课上认真跟着袁老师的思路走一遍,期末几乎不用复习。 实验比别的班偏难,老师对学生要求很高,直到出分前对袁老师都是力挺的态度,然而看到总评成绩。。。。。。。
选这门课的时候还是很惶恐的,这个班应该是重修班+佬班,进群后十几个大二大三的(一共才快40人)我是大一新生,没有竞赛基础,也没提前预习,就奔着学点知识来的,考试的时候就有点慌(感觉比17-18的题难不少),跳了一个二叉树的题,算法题也空了一个,最后剩二十分钟全给树了,最后也就写出来一点,本身想着可能要重修了,结果总评有90,远超预期,可能是其他题答得好吧,这门课没有很难,而且袁老师讲的也很好,会把整个流程过一遍,有助于理解,春季想选数据结构的大一新生,只要课上不是太摆,复习时过一下每个算法流程,分数就不会低。(这学期两个助教都太有实力了,而且很热心回应求助,真的感激不尽)
我的评价是不如自学(x
平心而论老师讲课是可以的,但是不适合我。上课语速飞快,像流水线一样过完知识点。当然老师的思路是很清晰的,如果能一直跟上老师的节奏应该会收获很多。
最后靠临时抱佛脚总评拿了85分,不过还没录入成绩单。
以及可以查卷,这点好像比较好,我看其他班似乎不能查。
老师讲课讲的真不错,不过春季学期佬太多了,即使很认真的学了一学期也只拿了85
袁平波是我爹!个人感觉期末答得很不好,尤其是哈夫曼树的编码写成了左1右0,后面的编程题也空了很多,最后还是被捞上了4.0,给分巨大好!(PS:老师甚至说只要作业实验都交了期末20 分就能及格)
当然感觉这个课程还是非常难的,学的时候就感觉抽象到爆,建议同学们平时少关注算法的代码实现,最后考试只要会人肉执行算法就很不错了(比如我好几个实验都是照搬的,编程能力约等于0,最后还拿了不错的分数)
在讲课方面:首先袁老师每个点都能讲得很清楚,经常通过ppt和板书清晰展现算法的实现过程(比如栈的数据进出过程),所以不怎么需要课前预习。其次袁老师不拘泥于课本,经常会讲到代码中不易察觉的bug和和一些扩展知识,如果认真听的话收获很大。
作业方面:作业通过bb系统提交,给的时间也很宽松。袁老师不会发往年试卷,但透露考试题目与作业题类似,所以建议作业一定要认真完成,期末前把错的题完全搞懂。
考试方面:考试的重点不是让你去背完整的代码,而是要知道算法的实现过程。记得这次考试是让我们写出快速排序、堆排序、归并排序第一步后各个数字的位置。最后老师应该捞了一把刚好90分。
讲课方面,相较于大一上的C语言,袁老师的课可以说是非常精彩了。这门课最大的特点就是算法特别多,其中有一些算法光看书其实不太好理解,但在老师讲解和动画演示下就好理解很多,基本上只要课上能跟上老师思路,课下写作业时再翻翻书就能很好地掌握知识点了。tips:老师偶尔会点名。
作业方面,每章布置一次作业,这学期助教用的bb平台提交作业,平均两周交一次,可以说是很少的,基本上提交截止前两天花上一两个小时就能做完。
实验方面,除去Huffman树外,其他的实验基本上掌握书上内容都能很快做出来,助教xggxjj也很nice,结课后依然推迟了截止日期,给了我这种前三个实验做一星期休息一星期的懒狗一些生存空间(虽说最后一星期苦战了三个实验T-T)。总体来说难度尚可。
关于最后的期末考试,没有必要过多刷题,跟着老师的PPT好好复习书上知识点,看看作业即可,由于题型比较固定,强烈建议考前刷一套往年卷!由这学期期末和往年试卷来看,题目还是很基础的,平时好好上课,好好复习就能拿到高分。最后总评93,很感谢老师。
袁老师讲课的水平那真的是没得说,是我上大学以来遇到的最高水平的老师。大一计算机程序设计的老师简直让人痛不欲生,讲得太烂了,本来已经做好了心理建设,以为这门课也会一样,袁老师就彻底改变了我的看法。 袁老师作为教材的编者之一,对于其中的知识点细节,以及框架逻辑都特别特别熟悉,讲起课来是信手拈来,听课确实是一种享受。有的同学觉得老师讲得有点快,其实也就是老师语速有点点快,但是只要跟着老师的思路去听是绝对绝对听得懂的。 这门课确实还是非常重要的,难度不大。对于想好好学习学懂这门课的同学,强推袁老师的课,yyds。 教材内容是分为三级要求,第一级是能看懂代码明白思想,第二级是运用算法解决应用题,第三级就是要会写代码。考试最核心的内容是树和图这两张,尤其是树,特别重要。然后三级要求的部分一般是线性表(链表为主)和树(包括树和排序结合起来),考试里面最后的手写代码题也基本上是这两块内容。 有6个上机实验,没有规定固定时间,只需要结课前全部完成即可。还有两个选做实验,不做不扣分,做了最多可以实验分加10分,好像选做实验比较有意思,但咸鱼的我懒得做。 对了,考试里面还有选填题,这部分题和平时作业题型不太一样,可以去百度上搜搜数据结构题目,有很多,可以自己练习,提高熟练度,不然考试有可能因为不熟练不熟悉而时间不够。
十分推荐袁老师的数据结构啦 老师讲课细致认真,个人认为老师讲课很有趣,几乎没有走过神(太困了除外)而且有时候老师还会拓展一下其他知识,很有趣。 讲课更依赖PPT而不怎么需要看书,只要上课时跟着老师走是不会听不懂的。但是期末考试还是要看看书的。 实验的话总体上说不算很难,而且助教给分很好,基本给满的。 因为只能知道总评所以不清楚有没有捞捞,但只要平时上课好好听,期末多看看PPT问题就不大。
课程本身挺重要的,数据结构还是一门比较硬核的课。
讲课:袁老师讲课速度很快,语速也较快,本咸鱼一个学期都没怎么完全跟上,不过老师会讲到每一个知识点。
作业:一章布置一次,适中
考试:统考,重点在数据结构的基础知识和算法思想,代码题比重大概在25/100
给分:袁老师会调分,整体给分不错,我其实由于上课跟不上,大部分靠考前复(yu)习,最后代码题实在不会写(我的代码能力比较差),前面的题应该不会很差,大部分答得还不错,最后86。(不错了,毕竟我代码题就写了第一题第一问)
实验:跟考试难度不在一个等级,有一两个实验还是很有难度
助教:三个大佬!人超好!
实验是助教检查的,特别水。听过隔壁顾奶奶班上实验都是要过测点的。
下课特别准时!一秒都不拖堂的!
这门课的考试其实不难,不需要记伪代码怎么写的,建议网上看“算法动画图解”,生动形象。、
老师自己说的:这门课有三个层次,第一个层次是基本概念(名词解释),第二个层次是算法的理解,第三个层次是用C/C++的实现算法。
考试内容:
1、选择填空:基本概念。
2、算法演绎(大题):表、树、图、查找等。俗称人肉实现算法。
3、读程序:给出程序的结果。其实都是书上的算法,看出来是哪个算法就好办。一条一条的读肯定不行。
4、写算法:暂时还没有写过图这章的算法。喜欢考二叉树的迭代,线性表的各种操作,还可能有查找算法等。
最后,记得看PPT啊,会考一些书上没有,但是老师讲过的东西。比如AVL树。。。(今年就败在这里了)
2019年试卷计算量突然变得特别大,出现了很多去年试卷的题型,所以考前一定要刷一下去年的题。会调分。 预习和复习可以看哔哩哔哩上一个青岛大学的老师的视频,和课程要求比较相近。 上课有点无聊,大部分是书上内容原文。反正这门课基本靠自己吧,除了顾老师,其他老师估计都差不多。 点名不在好像影响很大,“两次点名不在可以不用参加考试了。”
袁老师讲课确实是很赞的... 讲的很清楚很条理,PPT上有很多动画啥的,还有一些书上没有的东西。 感觉信院的数据结构实验内容普遍比计院简单好多...量也不大,感觉实验部分应该加点难度。期末没有大作业。所以我觉得编程上的练习可能还是不够。 我觉得考试比上课简单...有的算法手写还是有点难度的然而都不考。 给分好坏不太清楚_(:з」∠)_。 毕竟袁老师是安徽省数据库第一人(滑稽)。