选课类别:核心通识 | 教学类型:理论课 |
课程类别:素能拓展课程 | 开课单位:计算机科学与技术系 |
课程层次:自由选修 | 学分:2.0 |
本课程从程序设计与性能优化的角度介绍计算机系统,通过本课程的学习,学生将从程序员的角度了解计算机系统,深入理解硬件、操作系统和编译系统等对应用程序性能和正确性的影响,并掌握基本的程序优化设计技术。
课程主要考核方式为期末实验报告或心得体会,没有平时作业。根据不同评价,同学们普遍认为最终成绩主要取决于完成的实验数量和实验报告质量。有同学反映大一完成6个实验仅得4.0,而大二或大三同学需要完成更多实验如7个才能获得4.3。给分对年级有偏好,低年级可能完成较少实验也能得高分。
实验由CSAPP教材附带的经典实验组成,包括Data Lab、Bomb Lab、Attack Lab、Malloc Lab等。这些实验自动评测,难度较大,要求深度理解计算机系统各层次知识,如汇编语言、存储管理、内存分配等。每个实验对应的课程内容及难度如下: - Data Lab:简单的二进制运算。 - Bomb Lab:阅读大量x86汇编,拆弹游戏形式。 - Attack Lab:缓冲区溢出攻击,高难度的ROP攻击。 - Malloc Lab:实现内存分配算法,非常具有挑战性。 - Shell Lab:系统调用实现,难度适中。 - Proxy Lab:涉及socket编程与缓存管理。
部分实验因年代感可能有环境问题,建议配置Linux环境或使用相应Docker环境。
课程内容大杂烩,涵盖计算机系统各层次知识,包括OS、汇编语言、存储管理等。涉及书本章节范围广泛,但课堂实际讲解内容较少,同学反馈一般讲至第7章。具体内容详见书籍和教材网站。部分章节如程序性能优化和存储器层次结构被认为非常重要,需要细读;其它如链接、异常控制流、系统级I/O等内容则可辅助学习。
大部分同学认为吴俊敏老师的课堂较为枯燥,主要为念PPT。但绪论课讲得生动有趣,也有同学表示课堂讲授不多,多数时候需自学书本内容。对于了解计算机系统知识,尤其是对高性能计算有兴趣的学生,这门课是一个不错的选择。
对于大一学生而言,这门课程难度较大,不建议大一选课。大二选课则刚好配合计算机组成原理和操作系统。建议根据自身代码水平选课,至少完成3-5个实验较为合理,并尽量将实验报告写得详细。同学们普遍认为这门课虽然内卷严重,但配套实验设计精巧,适合对计算机系统有浓厚兴趣的学生。
《计算机系统详解》课程讲授内容丰富,难度较大,以实验为主,给分与实验完成数量息息相关,对计算机系统知识感兴趣的学生收获很大。适合大二选课,做好实验准备、合理管理时间是成功关键。有意收获高绩点的同学需做好卷实验的准备。
2022.7.14
出分了,不出意料 4.3,不过身边有人 6 个实验 4.0,选之前建议考虑清楚自己能写几个(
CSAPP 内容比较大杂烩,挺适合做 CS 入门课,隔壁 pku 就是在大二上学期通修这门课
每个章节对应的内容及重要程度 https://icourse.club/course/6246/#review-7200 这个评课说的挺好的了,不再赘述
但上课实际覆盖到的内容比较少,可能只到第五章?为什么不太确定是因为我也没怎么听过课
这也导致如果想学到更多知识或者写更多实验的话肯定是得自己自学的
实验基本都有自动评测,难度确实不小
可以在官网 http://csapp.cs.cmu.edu/3e/labs.html 下载,点 self-study handout, write up 是实验指导也需要下
部分实验比较有年代感,可能会碰到各种莫名其妙的环境问题。如果要做的话配一个 linux 环境是必须的,attack lab 新版本内核似乎跑不起来,建议使用 Vlab 或者从网上找一个别人配好的实验 docker 环境
对写了的实验点评一下:
还剩下一个 arch lab 没做,大概是一个 cpu 模拟器
公选课,三次点名,一篇论文(心得体会或者实验报告)
课件可以在http://www.bb.ustc.edu.cn/上面搜索这门课。平时没有作业。
如果对计算机操作系统和汇编层面的东西感兴趣的话还是很有趣的。
参考教材是深入理解计算机系统
课程内容挺丰富的, 还是看 CSAPP 更详细,完整一些
不过对于计院同学, 好好学好专业课就行了, CSAPP 中的内容相对来说就比较鸡肋了
这是 csapp 阅读建议(来源网络)
第5章 优化程序性能
从硬件角度上阐述优化的原理,有例子,很不错,建议细看;
第6章 存储器层次结构
存储原理和利用其特性的优化方法, 优化方法说到底就是局部性问题,用了不少内容简述,建议看;
第7章 链接
当然没有编译原理书介绍得清楚,不如结合起来看;
第8章 异常控制流
介绍UNIX的异常机制,全软,算是转述的内容,也即抄的内
第10章 虚拟存储器
操作系统原理,不如看Windows操作系统原理的书,算是搬过来的内容;
第11~~13章 系统级I/O,网络编程,并发编程
纯软件的内容,建议不用看,基本全抄,要看去看专门的书。
我写了 bomb 与 shell 的, 然后得了A
学长们都说收获很大,我就选了。
说真的,几个实验很有趣。
真的很有趣。
建议低年级同学选课前考虑一下自己的实际代码水平,一个lab做20h是正常的,按照今年的情况,如果做不到5个lab不可能优秀,这还仅仅是lab,不包括你学习对应知识的时间,至少我当时快被这门课逼疯了。实验报告似乎很重要,因为看到有人做了6-7个lab还是3.7,但是我做了5个就有4.0。如果仅仅是想水学分的话还是挺好的,似乎做1-2个lab,或者交个心得体会就有3.3。
抛开成绩,这门课本身的知识含量很丰富,我觉得如果把整本书都学习完,恐怕任务量不亚于数学分析。此外很多同学,虽然因为lab数量论没拿优秀,但是投入了大量的时间,至少不比我的少。实际上老师也就讲了前7章。
大部分同学(包括我)都没怎么听老师讲课,选择自己看书,虽然老师绪论课讲得还是挺有意思的(
至少我觉得收获挺大,比隔壁某个卡我绩点的程设课好
本人大一,一共写了6个实验,最后两个完成的有点水,但是都写完了而且放在实验报告里了,以为最少也有4.0,结果最后出分只有3.7
总的来说课程的收获还是很大的,这点必须承认 完成实验的过程真的有种让人拍案叫绝的感觉
但是给分为什么会这样我就不知道了 也有同学大一写6个实验拿4.3的,可能报告写的比较详细吧
总之,认真上课签到写报告,拿优秀肯定没问题,但是想拿高绩的话得费电力气()
做了4个实验:Data、Bomb、Malloc、Shell。最后4.0
感觉给分和年级有很大关系,我是大二选的,群里有大三的同学做了7个lab才4.0。实验完成质量也应该有一定影响,我做出了Bomb Lab的Secret Phase和Malloc Lab里的segregated fit。我这么说是因为群里有大二同学做了5个lab才4.0.
给分就说到这,这门课对我的意义不止于此。我是大数据专业的学生,上学期学了ICS之后还想了解一些计算机系统的知识,比起计科的组原,这门课更加适合我这种只想了解而不想深究的学生。另外,这门课还能帮助你熟悉linux系统,这个还是很重要的。
这门课的实验设计得非常精巧,配合着课本能学到不少东西,不过难度也很大,做完实验后看看实验的框架部分也能学到不少东西(尤其是自动评测系统),强烈建议妮可其它类似的课学学别人的实验设计。
我身边有不少非信智学部的学生想了解计算机系统,我觉得选这个课是非常合适的,反正交个心得体会+点名全到就有3.3.
最后,CSAPP的课本写的非常不错,我重点看了看异常控制流和虚拟储存器这两章,收获很大。如果读不下去也可以去b站看CS15213的网课,国外上课的风格和国内差别很大,我当时看网课受到了不小的启发。
这学期作死选了两个不水的公选课,开学前壮志凌云地想着做5个lab,最后只完整做完了三个:data、bomb、attack。按理来讲shell应该也不难了,可惜学期末任务太多没做。CSAPP没话说,书本和实验都编排的很好,不过书的内容有些多,最好是粗读大部分内容,做lab的时候再细读相关内容。看了之前的评论,不由感叹越来越卷,我是大一下选的,最后3.7,身边另一位大一的同学做了两个只有3.3,看群里应该做5个左右有4.0。建议选这门课时想好自己要做或者能做多少个,并且尽量把report写详细一些。
感觉这门课的定位太尴尬 这么硬核的课当成选修课 时间显然是不够的 作为选修课 如果想获得一个好的成绩 应该需要事先掌握相当多的内容 感觉就是:大一选的话-几乎听不懂;大二选的话-时间匆忙;大三选的话-基本学过了,也没必要选(因为不能指望从听课来学习,因为课程时间本身就很难支持老师讲很多内容)
所以这门课一言难尽,不过好在它是核心选修
一学期三次点名+期末实验,平时无作业,ppt和实验都可以在csapp官网找到,点名全到保底3.3。
这门课用的是linux系统,之前从未接触过linux的同学不建议选(血泪教训)
平常上课没怎么听,期末照着《21天学通linux》和CSDN肝了一周多,做了个最简单的bomblab。
最后拿了3.7,大概是实验报告做得比较认真吧。。。
附:csapp里的lab解起来挺好玩的,可惜实力不够没法多做一点。
没有这门课我根本看不完CSAPP。感谢老师。
内容和计算机专业课有很多重叠的地方,尤其是memory那一块内容,组成原理、操作系统和这门课都花较大篇幅来讲,所以这门课如果不做那几个有趣的实验的话这门课还真没有上的必要。
这门课我花了挺多时间的,写了三个实验,malloc实验来不及写完,结果A-,喵喵喵???
这课比较不推荐大一的选,非常推荐大二选
没有作业,只有期末要交课程心得或者实验报告,实验就是CSAPP的官方的几个实验,总共6个好像,当然写的越多给分越好了。。。
老师讲课还不错,但是如果是大一课下仍然要花挺多时间看书,大二的话基本都是上过的内容,不听也没什么大问题。
开学老师会告诉你很少会给A+,大概只会给一两个。
最后报告的期限在期末考试结束后,所以我基本是学期中全程划水然后考试结束赶的几个实验。大概做了两个半到3个实验,给分A+
CSAPP,网上有很多实验教程和心得,非计算机专业的也不虚。三次点名没到->F,三次点名都到,期末交心得体会->B+,做完截图交实验报告->A-,实验做得不错->A,做了很多个实验,写得数一数二->A+(两个名额)。我做了简单的二进制炸弹实验,得A-
CSAPP,必读书籍.
作为公选课,也是混分的极佳之选.就3次点名都到即可
2022年春,由于疫情,老师在苏州,所以全程线上,基本啥也听不来。
但是CSAPP这种课开成通选也就科大做的出来。锐评就是:老师、中科大不配CSAPP这门课。
大作业是做CSAPP的实验,我做了俩3.3,有人做了两个半也是3.3,然后有人写的课程心得,还是3.3😅
一般是信智学部高年级来刷g的。如果你要是对计算机有兴趣的外院人,建议不要选,收获基本没有,实验全靠自个儿。
哦,对了当时上这个课需要定位签到,然后微信群里有人说有个少p家长管的严不让带手机……巨逆天
后来证实是某大佬(@cs_fisha)来上课但真没带手机而这么说的哈哈哈
被卷爆了,写了4个实验喜提3.3,看了下这学期别的评课好像差不多.真的是越来越卷了阿
坏消息:教务处暗改通识课程列表,在 2024 年及以后的培养方案中,大量的科技类课程(包括这门课)将被从核心通识降级为一般通识,与此同时核心通识的文史哲和艺术类课程占比提升,另外未来培养方案的通识课可能会严格落实“7学分4个不同模块”的要求,这意味着 24 级及以后的学生必须修读更多文科或艺术类课程才能拿满通识所需学分。这就是“核心通识”和“提升综合素质”带给科大学生的自信😋
(有幸读过 CSAPP3e 的前几章,计划在 24 春季学期修这门课,先占个坑。据说只需要做 Lab 就能拿绩点,遂给个最高 10 分,等结课了再来细评)
我看谁不好好做缓冲区溢出实验!!!
我愿称之为神!!!🥰🥰🥰🥰🥰🥰
久闻CSAPP大名,这学期选了CSAPP。
这门课是一门实验导向的课程,适合对高性能计算方向感兴趣的同学选,也适合想搭建计算机体系结构框架的同学选。一共有8个实验,根据这学期老师在群里公开的信息,有把八个实验都做完的同学。老师会根据你做的实验个数来给分。当然,老师打分会倾向低年级一点。
CSAPP的八个实验分别是:DataLab,BombLab,AttackLab,ArchLab,MallocLab,ShellLab,ProxyLab,CacheLab。与正课的对应关系如下:
DataLab和BombLab对应的是汇编语言,我们学校没有一门专门的课来讲汇编语言,如果你硬要说的话那就是ics。AttackLab可能编译原理会涉及一点,ArchLab和CacheLab会在组成原理中讲解,MallocLab和ShellLab会在操作系统原理与设计中讲解,ProxyLab会在计算机网络中讲解。
当然,还有一些已经被时代淘汰的lab,比如说PerformanceLab在CMU已经被Cachelab取代了,但是你也可以做,老师不会因为CMU淘汰了而不去计算这个lab。
我做了5个lab,分别是DataLab,BombLab,AttackLab,ArchLab,MallocLab。其中ArchLab和MallocLab并没有拿满分,只拿到了95和96分,BombLab的隐藏关卡也没去做。但老师应该只看数量不看分数。最后获得了4.0
个人建议在大二下去学,因为大二下正好在学组成原理和操作系统,同时做csapp的lab有助于你复习这两门课。
喵~
关于上课,就是传统的念ppt,课件会发到bb上,不过并没有多少人听讲。课程考核是三次点名+最后的实验报告或者心得体会。作为大一的学生,感觉这门课基本上是听不懂的,也做不了几个实验,再加上大家基本上都会卷实验个数,所以分数不会很高,不推荐没有基础的大一同学去选。如果想选的话建议实验提前做,这样能多做几个,不要拖到最后。我自己是做了bomb和data两个实验,全勤,最后3.3。实验本身来说还是比较有意思的,认真做是会有一定收获的。
总体评价:
这门课是公选课,但实际上应当加入计科大一下或大二上的必修课。这门课内容很杂,涉及OS、组成原理、编译原理等课程的知识,但配套实验设计得很好,完全可以作为后续计科专业课的导引。总之,推荐计科大一大二的同学来选,以更好地过渡,高年级的可以来水学分,其他院且不想学计算机的同学不是很推荐选。
课堂:
一如计科其他老师,读 ppt。ppt 内容还不错,课下可以自己看看。课堂有签到,会计入总评。
实验:
大名鼎鼎的 csapp 实验,不多赘述。
给分:
基本上按实验完成数量给分,作为水学分的老咸鱼,我写了最简单的几个:data + bomb + cache,最终 3.7。如果想拿高分,需要做好卷实验的心理准备。
计算机专业水学分的好课,需要注意的是这门课既然会有大量计科人来水学分,内卷程度是趋于提高的,今年要取得优秀大概是要做三四个实验。这门课务必到课(不到向老师发邮件请假),不到总评掉一档,全到保证3.3。对于想卷优秀的同学,如果不是巨佬那么推荐大二选这门课,因为实验都有一定难度。如果对优秀无所谓的,可以交心得体会拿3.3,也可以先做一个最简单的datalab(其他实验各有各的难点,像我这样考完全部期末再做的根本做不了几个),再掂量一下别的实验的难度。
写了datalab、bomblab、malloclab,3.7
计科大二菜狗在cod、os、lzwl中苟延残喘实在找不到时间写csapp的实验了,考完试三四天赶出来的。
这门课和ics定位一样,都是导论类型的但难度明显高于ics,无论是内容丰富程度还是指令集的理解上来说都比ics多得多…写实验时速成略痛苦(大概是因为我菜)总体来说还是推荐选的
是一门不错的好课,比较适合非计算机专业的同学在学习C语言之后进一步了解计算机。
至于计算机专业的同学则不推荐选,因为的话讲课的内容说实话在专业课都学过。
此外就是我想大家在这边评论一下,因为的话我感觉我做了3个实验,也花费了一些时间,最后得分 3.7
先写一下点评:很好的一门课,但是老师讲课感觉是比较无聊的,上课时大部分人都在做自己的事。
但是这门课的精华在于其实验,真的很nice,可以学到很多东西,非常建议大二大三的同学选修。
本课程推荐大二的同学来上,因为大二这个时候刚好学了操作系统和组成原理,对整个课程的理解和实验都有比较好的帮助。虽然老师开学也表示会照顾低年级同学,比如大一同学可能做两三个实验就能4.3,大三同学全部做完可能也得不到4之类的云云,但是具体最后的给分情况我也不得而知。
今年由于疫情的缘故,所以所有课都是线上进行的,平时没有点名(但是不知道老师会不会参考BB系统的上线记录)。其他和往年一样,平时没有作业,期末没有考试,主要给分方式是写实验报告(大部分人的选择)或者心得体会(主要为了照顾一些比较忙的同学,以及大一同学在写实验方面的困难)
这门课本身如果好好学,把CSAPP这本书完整看一遍,收获应该会非常大(显然我没有好好看,但从我看过的有限章节来看,还是学到了不少东西的,而且写某些实验的时候,书上很多内容都可以拿来参考)。
今年似乎大家都在家里格外的闲或者因为选课的人格外的少?大家实验都写的挺多的Orz,最后写了五个实验,得分A。(推荐几个比较简单的实验,分别是datalab,bomblab,shell lab)
大水课一门,没事的时候把CSAPP附带的实验做一两个就行了,我在学期末有三门实验课堆着没啥时间了所以只做了一个boomlab,没想到拿了A-,还是挺满意的(到底有多少人连实验都没做啊),还有就是记得到课,老师喜欢在放假前的课点名(笑)
CSAPP书很好,实验特别特别有意思,我第一次知道,哇,实验还能这么做,太有趣了,强烈推荐
这门课我只去了一次,大教室,坐满了人。上下前后全是男生,关着门窗,我觉得课堂环境太差了…热、闷、臭…我就是因为环境差退选了这门课。当然还有时间不够,学不了那么多课的原因。不过事后看退选还是对的…根据几个同学的情况,这门课的作业对于大一的同学,难度还是很大的。
去年大二选的,来补个评课。
同学期还有os和cod,算上csapp三门实验课一学期实验写的非常爽(也非常破防)
只是这门课的话,有3.3的保底对于通识课已经很不错了。在去年3个lab还是可以3.7的,今年看上去卷爆了
个人是7个lab(没写arch),4.0。但是三次点名有一次没去,可能这也是没有4.3的原因(?)
cmu的csapp无疑是一门真正有质量的好课,看书的收获很大,但只看书不做lab总有种意犹未尽的感觉,而且在后几章比如网络那一章不写proxy lab硬看书上c代码会感觉有些摸不着头脑。有意自学的同学还是建议写一下lab
malloc lab一眼坤哥班lab3的original code,但是想写到90+甚至95+,不用bst做block管理是不太行的,甚至不用segregated free link list都很难高分
目前看来这课想要拿高分越来越难了,不仅要求实验的数量还要求质量,低年级同学选课还是要谨慎一些,老登随便(
同时大二的时候还有lzwl这一坨,三门实验课+lzwl还是很刺激的
如果这课升至4+学分并且代替ics(为什么不能学习一下pku和nju呢?连tm北大智能系都必修csapp(他们学校的ics),妮可计科在学些什么?),同时在大二上把电磁在计科给删了,即便他设置了8个lab,我还是觉得计科的培养方案这样就合理一些了。
大三了,说实话选这门课就是为了水学分,没期望学到东西,结果最后也不是没有收获,至少GDB以前是不熟的(vscode都有图形化界面了我为啥还非要在命令行里操作呢)。实验环境需要linux系统,我用的wsl,体验非常不错,可以安利!给分情况是缺勤一次,实验写了6个,分数3.7。根据老师的说法,80个人中写了5个及以上实验的人有38个,已经超过优秀率上限,情况可以说非常卷。
虽然在这门课几乎学不到新东西,但我做一个实验也还是需要挺久的,一般得花两到三天。为了练英语能力,选择硬啃英文实验文档。还有就是实验年代都比较古早了,有时候还需要折腾一下环境,比如印象中有个实验的脚本非得用python 2跑。
我的实验报告个人感觉是比较简洁的,每份也就五到十页(实在写不多,那些4个实验70多页报告的鬼知道是怎么写的),arch lab最后的分没拿满,因为感觉拿满分已经需要奇技淫巧了,没意思。bomb lab的隐藏彩蛋没做,因为以我个人的能力肯定是发现不了彩蛋的,看了网上解析知道那里有个彩蛋,也没意思。
yysy, 4.5个实验3.7 给分基本就和实验挂钩 但是作为计科人还是得推荐一下这门课, 好好学收获还是挺大的 还有就是这课好像越来越卷了,意味着要想得高分要做more多more多的实验
2022年春季班级
由于疫情且老师在苏州,这学期一直是线上上课,更好划水了。
这门课作为一个通识课,还是比较值得推荐的。只需要最后交实验报告或者心得体会就好了。
实验就是CSAPP官方的那几个实验,做的越多,总评越高。建议大家在学期刚开始就先自学起来,去做实验。否则到期末时空闲时间少,做实验的时间不怎么充裕。
本课所用的教材就是计算机必读书目 《CSAPP》,课程作业可以做上面的实验并交实验报告,也可以写心得体会(不过当然是前者得分高)
我们这届碰上了一堆大腿,动不动写三四个实验的也有好几个,基本上也都是做两个实验的(我是 data 和 malloc,上课没听讲期末没空学导致不会做 bomb,最后 A-)。说实话只做两个还拿了这个分我还是挺满意的,不过老师很少给 4.3,即使你可能做了三四个实验也可能只有 A 这样子。
三次点名,最好别翘(),体验嘛反正拿来写数理方程作业了()。and 这次隔壁 OS 班内存实验直接就是 malloc 导致我们这届选了 OS 和 CSAPP 的人一举两得(OS H 班哭晕在厕所)
这门课认真学是灰常有必要的,然而。。。我从来没学过,不愧是计院最水的公选课,三次点名全到+最后用半天写了一个实验交上去,最后给了A-
计院混分的好去处,外院作为计算机科普是个很好的课程
人太多了,环境恶劣
实验挺好,有些难度。缺点是没有服务器可以自动测评。明明源代码都发出来了。。。