选课类别:计划内与自由选修 | 教学类型:理论实验课 |
课程类别:本科计划内课程 | 开课单位:计算机科学与技术系 |
课程层次:专业核心 | 学分:4.0 |
操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。因此本课程的目的是使学生通过本课程的学习,理解操作系统的基本概念和主要功能,通过实例讲解,掌握常用操作系统(如Unix、Linux)中的关键技术,为学生以后的学习、工作和研究打下基础。
本课程主要由李永坤老师授课,PPT全英文,内容详尽,从动机到设计再到优化,讲解非常深入。尽管全英文PPT对某些同学来说是个挑战,但总体上还是非常清晰易懂。李老师的讲课风格受到广泛认可,同学们普遍认为他讲课流畅、容易理解。
课程作业不多,共有五次,题量适中,内容覆盖广泛,而且助教在考前会统一批改并给出反馈。作业尽管全英文,但大多是概念题,通过翻阅书和PPT可以找到答案。助教对作业的批改比较严格,并会进行查重,因此切勿抄袭。
实验部分任务量大,共四个实验: 1. Linux安装与入门 2. 补全shell代码和添加Linux系统调用 3. 内存分配实验 4. 文件系统实验
总体上实验内容深入且具有挑战性,实验文档详细且有助教精心设计的指导,但实验难度较大,有同学反映实验三和实验四尤其困难。实验依赖学生独立完成,但部分实验存在抄袭现象,建议引入代码查重机制来提高公平性。此外,实验报告要求较高,需要认真完成各项任务。
考试闭卷,题目主要来自PPT,大部分都是概念题,需要大量背诵,内容涵盖广泛。考试成绩决定总评的一大部分,因此考前需充分复习。总评公式大致为:20%作业 + 30%实验 + 50%期末考试。一些同学反馈背书难度较大,而且背书感觉单调乏味。
给分严格且按照一定比例进行(基本为2:3:5的比例分配),有些同学反映课程给分过程比较冷酷无情,优秀率受到限制。尽管如此,卡绩的同学在总评上可能会得到一定的“捞分”。
总的来说,《操作系统原理与设计》课程内容丰富,实验设计精妙,讲课质量高,但实验任务繁重且有一定难度。如果对操作系统兴趣浓厚且愿意投入较多时间进行研究、学习,这门课是非常值得推荐的,但对于希望轻松通过的同学来说则需慎重考虑选课和实验负担。
*点评之前的注:22春这门课虽然挂名了两个老师,事实上讲课是完全由李老师负责的,实验部分应该是主要由助教设计,可以参考李老师的操作系统下Silence助教的评课
这门课评起来很挣扎,和学习的体验一样挣扎。
先说正面结论,作为及格就行,不在乎具体分数的辅修人,非常建议选这门课。某种意义上,这门课的体验与数院🚀老师的拓扑学H是一致的(当前排行榜好评榜一课程):
1、ppt写得非常好,虽然全英文构成了一些阻碍,但这样的从动机讲到最初设计再讲一步步优化的ppt实属人间之鉴,把或许有点偏文的东西描述得既清晰又有趣。
2、关于老师讲课,本人时常在第一排摸鱼,不过偶有听到的一点东西也能感觉到老师深厚的讲课功底。老师补充的一些有关科研的内容也是真心实意地为同学将来考虑,这份诚意还是能感受得到的。
3、作业的设计也很棒,总体任务量不多,但可以快速回顾这段的课程内容,每次做作业都觉得复习(预习)得挺爽。[这里有一个插曲,助教们改作业是分组的,不过为了平衡会在试改后统一标准整体批改。部分试改后,同学反馈有的地方标准过严,助教们也吸纳了这个建议,采取了更合理的标准。考试的改卷也有类似的过程,在这点上把班级的公平性做得很好,不会因为分组产生优劣。]
4、实验的任务量非常大(这里的三个字写得比较轻飘飘,但如果把每一个通宵都列出来又过于麻烦,于是就写这三个字吧),也并不容易(这个“不容易”同上),但都是实打实可以加深理解的东西,每次做完实验都会感觉收获良多。助教精心设计的实验文档补充了课程的内容,也扫平了不少障碍。
5、助教非常认真负责并且愿意关心同学。虽然大家群里会吐槽这个那个(真正的问题所在会在之后详细解释),就我的体验而言,这门课的助教完全不装死并且有问题都会尽力帮忙解决。包括和同学的沟通也很及时,愿意为同学做实验扫清一些障碍,接收大家反馈的问题(Lab3的实验文档是最好的正面例子)。
尽管如此,我仍然必须说,这门课如果考虑考试和给分, 并不令人愉快 。那么,这门课的缺点在哪里呢?我个人的评价是,它败就败在不是一门H课。
要知道,🚀的拓扑H在开课时有大概五六十个人,在期中时便只剩38个人了。如果问退课的人为什么退,回答也很简单:“学不来”。可是,作为一门不分方向的计科同学和辅修同学的「必修」列表上的专业课,无论是什么水平的同学都必须选择,也不能退掉。不仅如此,据了解,这学期的实验量和难度都突然加码,总负担比起往届可能至少是两倍。在事先不知道这一点的情况下,大家被“骗”进了这个班,发现实验做不出、学不来的时候已经晚了。
这时还能怎么办呢?硬着头皮做下去呗。然而,在实验的难度很多人无法完成的情况下,又会分为三种解决方法:第一,摆烂,放弃,做好及格or不及格重修打算。第二,努力把自己能做的部分做好,然后拿一个相对自己的努力完全不值的成绩(下一部分会细说)。第三,摆烂,然后实验结束前随便找个人的抄一下,拿到高分。这里我实在很想阴阳怪气一下,「猜猜那么难的实验完成率能上70%背后,选第三种方法的人有多少捏」,不过我们还是不要以恶意揣度人。尽管这某种意义上也是为了自己的成绩“被逼无奈”,但它真正伤害的是所有尽力完成的人。很遗憾的是,当前并没能做到很好地鉴别出实验抄袭,于是不公平就越发明显了,大家的抱怨很大程度也来源于此。
此外,这是一门限制优秀率的课,因此大家自然会对比:在付出的工作量比隔壁多很多时,最终的成绩却无法体现,这部分工作量似乎就成了无意义的“内卷”。占据成绩非常大头的部分是考试,但不管解释地多么冠冕堂皇,一个以背书背ppt为绝对主体的考试也很难体现出真正的水平,反而可能一个失误就导致实验所花的努力白费,喜提卡绩。此处还得提到关于给分的另一件事:哪怕有着优秀率的限制,以大家的付出,也理应获得分段的尽力调高,但最后看到的只是迟交扣分的冰冷,让尽力完成的人反而不如投机取巧者。
说到这里,其实问题就已明显了:成绩无法体现水平的公平性考量、工作量无法体现在成绩的付出收获比考量与难度无法为大部分人接受的学习收获考量,成为了大家骂这门课的主要原因。
但是,我更想提及的是,在这些“主要原因”背后藏着的一个更深的矛盾,理念的差异。
在大家提出减轻实验负担、适当降低难度时,无论是老师还是助教都给出了一个解释,叫作“实验的目的之一就是拉开一定的区分度”。且不提由于抄袭等问题,这件事事实上并没有完成。哪怕完成了,它真的就如说得一般合理吗?
在🚀老师的很多课程作业上(这里的复杂度和难度基本都可以对标操作系统的实验,上学期在🚀作业上花的时间大概比操作系统作业实验还要多),都会有一些Not Required[不要求完成]的题目。注意,这里的不要求完成就是真正的不要求完成,基本不会在考试中出现,做出来也不会有额外的加分,只是放在那里,大家如果愿意可以去写。就难度而言,普通作业的难度是保证大部分认真学习的人可以完成的,而这些不要求完成的题目就困难不少,可能还需要搜索各种资料。[虽然有踩一捧一之嫌,但这里还是想一提,🚀老师也带过非H课的课,仍然能收获全满分的评课分数,就是依靠拔高但不过分要求与充分好的给分。]
以功利的视角看,这件事简直不可理喻:不要求完成,完成了也没任何用的题目,怎么会有人去做?事实上,恰恰是真心希望能把这门课掌握的同学会去努力啃完这些,而这部分同学的成绩也往往并不会差。我们自然可以说,“我们理应在作业上拉开区分度”,于是给每道题设置一点加分,学期结束后累计。可这样下去,反而会成为某种“军备竞赛”,无论是不是喜欢都被强拉着在这上面浪费大量时间,让本来应该是快乐的深入钻研暴露出种种丑态。如果最后还没有好的成绩,大概只会有更多的不满。
在助教的评课中说到,实验设计是让大多数人能完成的。如果真的能做到这点,自然是好的实验设计,但事实上呢?——非常重要的是,这里的大多数能完成,不应该是对于纸面的完成率造成区分度的考量(因为完成率的水分前面已经说过了),而是 到底多少人能基本靠自己写出实验,并能从中学到东西、对课堂上的知识构成补充 。
在计算机组成原理的课程群里,我曾看到过同学转载的似乎是北大树洞里的一篇文章。里面有一段话让我印象深刻,大致是,教育应当是一种 诚意 ,至少不该是一种 恶意 。很遗憾,目前的教学中(就我的体验而言,尤其是计算机学院)充满了这样的恶意。
一个很经典的吐槽是,「不会教你怎么飞,但只想要会飞的人」。在我看来,这毫无疑问是恶意的体现。就以实验为例,除了关心「我们让大部分人完成以外」,更值得关心的其实是,对于没能完成的人,能收获什么。如果只是付出时间精力对着文档发呆然后沦为一个「区分度」,似乎就带着那么一些恶意了。
当然,这些问题并不是无法解决,最关键还是在于关于工作量和难度的更合理设计。大家掌握的东西更多固然是好事,但不应把这样的更多化为对所有人的要求(哪怕是附加,事实上也是某种意义上对所有人的要求了)。之前某闲聊群中提出过一个悖论,如果实验难度降低,均分或许还会更低些,因为更多人会选择自己完成能做的部分,而不是去copy其他人的全部代码。
说到底,老师与助教的想法得与大部分人的实际接受情况平衡。一味将觉得有趣与合适的内容都填进去,只会让大家在囫囵中难以下咽——哪怕每一味食材都十分精致。
最后,给将来可能学习这门课的同学一点建议[ 以下建立在实验仍类似今年安排的基础上,未来可能有改动,所以尽量先联系助教多问 ]:
首先,提前问清楚实验的可能难度与所花时间,合理评估自己是否真的适合这个班。如果想要摸鱼/觉得自己没有足够的能力,最好润。哪怕有足够的能力,也应该思考“是否真的值得为此花这么多的时间”。一句“优秀率给满”可能会隐藏很多问题,不要只为此就被吸引过去。[作为参考,如果重来,我还会选择这个班,一方面是因为我不那么在乎总评成绩,另一方面是我确实感到了兴趣因此愿意花费时间。]
其次,如果真的到这个班,无论如何,珍惜这么好的ppt/教学/作业设计/助教沟通氛围/实验设计,尽力多学到一些东西。如果有什么问题或不理解,尽量多与同学沟通,合作往往比各自研究来得有效。[仍然补充自己的经历作为参考。由于课程群老师要求匿名,自己搞了个可以匿名的小群交流讨论用,连带卧底的助教啥的现在也有96人了。群里有时会讨论各门实验/作业,也会有愿意先做一遍扫扫雷的同学,总体来说讨论氛围挺好,群里的讨论也给了我不少启发。]
如果想取得好成绩的话,一定好好背书,拿下期末。对于实验,无法做附加也尽量按时将本体内容完成。所谓的「记录一下,具体影响未知」的延期说不定才是扣分最狠的项目。不过,如果对自己水平不自信,最好不要在实验刚出时做,因为那时可能还会有小bug等,如果碰上了极搞心态。[关于延期扣分这点也希望助教改进,最好如组成原理一样把具体影响说清楚,避免按时做一小部分比延期做完还亏。]
点评结尾,作为来科大两年见到的质量顶尖的好课,还是希望这门课未来能有所改进,越做越好,也希望大家能收获愉快——至少是辛苦后有所得——的体验(。・ω・。)ノ♡
出分了 在bb上给出的总评上进一步捞了卡绩人 总体来说算相对不错的给分 感谢老师助教
我想说的是,这门课最大的问题就是没有代码查重(
所以无论实验设置的多难,实验完成率都是居高不下,这不但增加了同学的负担,也增加
了助教的负担。
所以希望从今年开始要求提交代码查重。
22春季选课。作业占比20%,实验30%,期末50%。今年在BB系统上通知期末卷面成绩和预计总评,总评大约是(期末卷面成绩/2+50),前提是作业实验均按时完成。今年实验完成率巨高 & 要想获得一个好成绩还真得好好背书(悲
这门课是专业课里面体验最好的之一;坤哥讲得很好,就是英文PPT不太友好(哭),复习的时候需要结合课本一起看;作业总共5次,助教会在考前统一批改并给反馈;考试是闭卷,复习的话主要就是各种概念+算法(进程调度、页面置换、磁盘调度)+临界区问题、信号量。
至于实验,相比于我上学期的编译,实验难度还行(实验过程中看到各种segmentation fault早习以为常了);以及这个实验文档简直太友好了,感谢各位助教。
这门课主要还是李老师讲的,课程具体情况建议参考助教写的点评: http://icourse.club/course/13766/#review-6965
讲道理上课我去的有点少(逃),不过就我听过的几节课来说,李老师讲的还是很清楚的,虽然带一点口音但是影响不大,ppt较之其他课程也不错,但全英文这件事见仁见智吧。
作业不是很多,今年一共5次作业,每次十几个题,做起来也快,没听课的话就慢了。
这门课感觉做的最好的地方就是实验了,实验文档非常详细,比隔壁cod不知道高到哪里去了。实验本身也挺有趣,lab1熟悉linux,lab2写一个shell和实现一个系统效用,lab3写一个内存分配器和实现进程内存信息统计,lab4写一个文件系统。总体来说有助教写好的代码框架,学生只需要填空,难度比直接自己写降低不少,不过还是有点难就是了,但好像隔壁班也挺难(
最后的考试是我非常不喜欢的,嗯考ppt上的内容,几乎每道题都是ppt上的,还闭卷,背书和ppt是真无聊。
预估总评刚出,刚好卡寄,最后出真总评老师要是给我加了一分,我也给这个点评加一份(逃)
————————————————————————————————
姗姗来迟的更新:
加一分,理由不解释了(手动狗头)
符合预期的一门课,实验有一定挑战性。老师会在讲课中灌输一些科研的思想,以及如何做好学业与生涯规划的建议,有很好的参考意义。
lyk讲课很流畅 ppt做的比较好 没点过名
作业和往年差不太多 就不评价了
实验比往年难不少(github上搜USTC OS之类的可以找到今年的和往年的实验题):
Lab1: Configuring Linux environment.
Lab2: Add linux system call. Complete a shell and a top program.
Lab3: Malloc lab. Complete a memory allocator (sbrk) and process memory information statistic program.
Lab4: Complete a FAT16 file system.
附加(4分):
Lab2: Mutipipe and redirector (1).
Lab3: change sbrk() to mmmap() and complete the memory allocator (1).
Lab4: three-back-up (1) and Log (1).
实验一没什么好说的 从实验二开始上难度
FAT16实验(实验4)在加了第二部分的基础上又加了两道附加题(每道加总评0.5分)两道附加也比较难 最后只有十个左右同学文件系统的两道附加都写了
附上我的实验(拿了两分附加) 弱弱地求个star
考试概念题分值巨大 还有几个概念书上没有 不少概念题我理解错了题导致卷面竟然没有到平均分
查卷的时候直接泪崩 不过最后还是被坤哥捞到了优秀
总体来说这门课的质量算得上计科为数不多的好课。
1.老师的slides做的很好,讲课也不错,上课不会点名或小测
2.实验比较难,但是从助教写的二三十页实验文档和任务安排来看,感受比隔壁cod好了不止一点。
3.考试主要就是考背书能力,要背的东西很多,期末考试看一遍slides,再看看往年回忆的题目就差不多了,可能出现隔壁班讲了但本班没讲的题目(有时间可以翻翻隔壁班ppt)
个人感觉实验方面看得出来一年更比一年卷,但是据说实验抄袭现象挺严重,希望助教加大实验的检查力度,同时降低完成基础部分的门槛。
ps:作业要认真做,感觉批改偏严格,另外作业会查重
ps:今年2:3:5严格给分,四舍五入,卡绩的分数会上调一个档次
讲课: 李老师讲课还是不错的, PPT 做的也不错
作业: 五次作业, 平均每次八道题左右, 题目的质量不错, 可以巩固学习的内容.
实验: 代码部分以代码填空为主. 实验设计的有些不合理, 没有明显的梯度区分, 然后似乎抄袭的情况也很严重. 实验一是熟悉 linux 下的命令, 实验二是写一个 shell 和系统调用, 实验三是实现简单的 malloc 和写内核模块, 实验四是实现 FAT16 文件系统操作. 实验四的印象比较深刻, 有几个问题, 一是两个部分的码风不统一, 主要体现在变量名上; 二是整个实验存在着大量的相同结构的代码, 而且第二部分的结构要比第一部分清晰, 且少量的辅助函数似乎能为第一部分所用, 但是你都写到第二部分了, 第一部分肯定也写完了(). 实验梯度问题导致实验似乎特别的卷. 每个实验 10 分, 而且似乎不是相同权重. 共有 4 分附加分, 实验二 1 分, 实验三 1 分, 实验四 2 分, 其中我认为实验二的附加分最简单, 实验三的最难 (所以没写). 检查方式是助教人工检查, 没有实验报告, 不会提前给出具体的测试指令但是会给出测试流程. 最后得分 40+3, 放个实验仓库在这 https://github.com/Fr4nk1in-USTC/USTC-OS-Lab-2022.
给分: 给分公式似乎是 20% 作业 + 30% 实验 + 50% 期末考试, 实验附加分除以二后直接加到总评上. 似乎会捞卡绩的.
给个 8 分吧, 讲课 2.5 + 作业 2.5 + 实验 1 + 给分 2
2022春季班级
虽然课程信息里有两个老师,实际上只有李永坤老师上课,因此仅对李老师的课评价。
上课:李老师上课水平还是挺高的,讲得易于理解。老师上课用的纯英文ppt,ppt上图很多,便于理解。缺点是复习时对着又臭又长的英文ppt,复习效率实在不高。教材用的是《操作系统概念 第九版》英文书,虽然中文翻译只翻译到第七版,但复习的时候还是推荐中文书吧(毕竟几百页的英文看下来,背下来实在难顶)。老师上课虽然说会点名,实际上没点。
作业:作业大概两三周布置一次,每次的题量不一定,作业也是全英文,大多都是概念题,翻翻书和ppt能找到答案。(貌似每年的题是一样的,想偷懒的同学可以谷歌搜索以前学长写的答案,但是切记:期末后作业会查重,而且真的有被查出来的)作业改得挺松的,每次视题量不同,满分为100或150分,写错了也就扣几分。
实验:李老师班的实验值得好好说道说道。这学期总共有四个实验:
其中第一个实验比较简单,比较善良,就是教我们安装linux系统并且懂一些常识。
第二个实验也还行,补全shell代码,鉴于已经给出了代码框架,只是挖空让我们填,因此总体也不难。添加linux系统调用时,细心读文档,按照文档说得做,最后记得时刻保存虚拟机快照。
第三个实验难度开始加大了,完成动态内存分配器和进程内存信息统计。由于涉及到内存操作,很多人都倒在了段错误上面。而段错误,有的人几分钟就能找出问题,有的人可能好几天才能找到问题。可能是由于大家不熟悉linux下得debug方法,所以大家备受段错误折磨。这里推荐使用valgrind来查看哪里触发了段错误(core+gdb也行)。
第四个实验是实现fat16文件系统,上课认真听对这个实验的帮助很大。以及这个实验刚开始做很难,要熟悉各种函数,刚开始就处于:我知道要干嘛,但我不知道要用哪个函数/变量来实现的状态。当写完第一个小任务后,再接着写就没那么难了,很多代码都可以复用,复制粘贴嘎嘎爽。
最后对实验做个总结吧。这学期的实验,相较2021年又有了全面的升级,任务量加大,难度加大,以前的任务可能只是这学期任务的子集(当然,做完了也是收获很大)。每个实验的(最终修订版)文档都非常详细,这是我在科大上过的课里,实验文档最详细的一门课(其他课学一学啊),可以看出助教很认真很用心地在准备实验。
当然,实验的大幅升级,也导致实验文档在刚发布的版本中会有一点小错误和疏漏。这会导致最早一批写实验的学生都卡在某一个代码段,要么一直报错,怎么也得de不出来,要么就无从下手,不知道咋写。然后需要学生再跟助教反应,才能对实验文档进行修改(当然,经过这学期的“血泪”,明年的实验文档应该会更完善)。最后,建议大家debug不出来的时候,及时寻求助教的帮助,有可能不是你的错。本人做lab3的时候,改一个bug死活改不出来,后来在助教的电脑上跑,就跑出了正确结果,原因我至今没有弄懂。
考试:OS这门课的考试就是文科题,老师助教们很贴心地用了中英双语(ICS看看人家OS多贴心),所以无论是看英文版教材还是中文版教材都能答题,试卷上很多题来自ppt。建议考前多背背ppt和书本吧。据不知名不可靠小道消息,期末考试改完一遍后又改了一遍,标准更严格。
给分:由于优秀率满了,似乎没怎么调分。应该是按照2:3:5的比例严格算分,再四舍五入,最后有卡绩的往上捞一分。
总体来讲,李老师的课很不错。扣一分是想提醒大家李老师班的实验难度,慎重考虑啊(