选课类别:基础 | 教学类型:理论实验课 |
课程类别:研究生课程 | 开课单位:计算机科学与技术系 |
课程层次:硕士 | 学分:3.5 |
这门课从程序员和架构师的角度来看计算机系统:如何执行程序,如何存储信息,以及如何通讯。这门课会教学生成为更高效的程序员,关注性能、可移植性、鲁棒性等方面。这门课也是很多高级计算机课程的基础,比如说高级体系结构、计算机网络等。课程的内容包括:
周学海老师的《计算机系统》课程主要使用广受好评的CSAPP教材(《深入理解计算机系统》)。课程内容覆盖计算机体系结构、系统以及相关的程序设计等方面,包括汇编、优化、信号处理、I/O管理、内存管理等。虽然一些同学觉得上课内容和CSAPP第三版并不完全契合,但大部分人在课程中确实学到了不少有用的基础知识。
大部分学生对周学海老师的教学水平给予了肯定,认为“老师讲的很好,PPT做得也不错”,“课本真的很棒”。不同背景的学生也表示能跟上课程内容,并从中受益。不过,有些同学认为上课内容较为无聊,自己看书效果可能更好。
课程包含多次作业和五个实验,相关任务量适中,评估标准较为宽松。很多同学提到“作业和实验网上都有答案”,“实验和作业都是满分”。实验部分包括了CSAPP的经典实验,如比特数运算、逆向分析、缓冲区攻击等,部分实验需要通过腾讯会议检查,注重细节。
考试难度相对较高,考题涉及较多扎实的专业知识和细节,例如浮点数运算、信号处理、链接与重定向等,有些同学觉得需要对体系结构和系统有较深的了解才能做出来。部分同学反映考试题目如信号处理比课上内容更难且书上缺少相应练习,但是总体来说,考题重点覆盖了课程前部分和PPT中的内容。
课程整体给分非常慷慨,不少学生提到“人好给分高”,“给分超好”。有同学在实验和作业几乎全满分的情况下尽管期末考试表现一般,最终总评也不低于75分,甚至有不少同学总评达到90分以上。再加上实验和作业成绩占比高,总体上这门课评分相对宽松。
综合来看,《计算机系统》课程内容丰富,覆盖基础知识全面,尽管考试较难,但平时作业和实验占比高且较为容易,最终给分慷慨。因此,无论是为了夯实计算机系统基础知识还是追求较高的总评分数,这门课都是一个不错的选择。
首先,我觉得 CSAPP 这本书还是挺好的。
别的不说了,下面提供 22 年秋季的期末题目题型回忆。(强烈希望老师能提供大致题型,这样复习时感觉好一些)
题目的序号可能有一点弄混了。
分析加速比。题目大概描述:一个程序有 80% 可以通过并行加速,设有 N
个处理器,问并行忽略通信开销时的加速比,和通信开销为原来运行时间的 0.005
倍时的加速比。
用移位运算写出整数乘 10 和除以 10 的函数。要求尽可能精确。(输入的范围可能有点偏差)
unsigned int mul_10(unsigned int x); // x in [0, 4294967295)
unsigned int div_10(unsigned short x); // x in [0, 65535)
CSAPP 中文第三版 3.68 原题。
分析汇编,找出两个整数常数 A,B 的值。需要考虑 long 和 int 的对齐要求。
链接部分的题目,重定位 PC 相对引用。如 CSAPP 中文第三版练习题 7.5,7.5
和考试题数据相同。题目要求回答的内容和书中讲解"重定位 PC
相对引用"的部分一样,有 refaddr 和 *refptr 以及 16 进制表示。
浮点数加法的延迟 L = 3,运算单元数 C = 1。
在浮点数加法满足结合律的情况下,写一个求数组中浮点数的和的函数,要求性能尽可能好。
用 signal 机制和 alarm 函数,写一个 mysleep(unsigned int) 函数,
要求可以在多并发(记不清了,这里可能有误)的情况下避免竞争(race condition)
1. 假设 malloc 使用的是隐式空闲链表,16 字节对齐
2. 块大小向上取到 16 的倍数
问下面的调用中,块大小和 header 的内容,
1. malloc(1)
2. malloc(34)
1. 分析最普通的矩阵乘法的 total cache miss(总 cache 缺失)
2. 用分块的方法改进矩阵乘法,写出代码并分析总 cache 缺失
1. 有 fork 的程序,画进程图
2. 改数据的 IO 一章课件的 Fun with File Descriptors (2)
3. 改数据的 IO 一章课件的 Fun with File Descriptors (3)
信号那两题几乎不会,分离空闲链表完全忘了,这竟然能上90吗?
好奶(
首先,csapp是一本好书,值得阅读。
考试很难,反正我是不太会,但是平时是给50分,基本上实验和作业都是满分,csapp的实验作业答案都能从网上找到,平时分是满分,考试就不会给挂,最后总评也不会难看。
考试怎么说呢,全都是非常专业的东西,必须得是搞这方面的,或者对体系结构,系统这些玩意有很深刻了解的人,才能做出来,一知半解或者知道一个大概的是不太能做出来。如果你不是搞这方面的,那你得刚刚看过书,还热乎呢,才能做得出来。
摸鱼怪路过, 本来打算借这门课好好读读CSAPP, 但还是划了一个学期.
平常作业+5个lab占50%, 正常完成应该都是满分. 考试题出得还是相当容易的(即使是从我这个没怎么听过课的角度来看).
使用的csapp,作业/实验不少但是网上都有,实验是腾讯会议检查会比较细致,也可以选择交实验报告
需要注意/吐槽的是这个考试,说是考的比较基础,确实比较基础,就是......和作业居然几乎没有联系,如果只复习作业的现在可能跪了...
考试中,课程前半部分(汇编、优化等)大概只有20分,有个流水线的题目(一脸懵,全考本科基础瞎写),然后就是一大堆 I/O 题,进程,父子进程、信号、存储、虚存、回收策略,这些都是作业里没有的,但是书上/课件上有的。不过考试占比不大,40%。
听说有大佬半个小时就做完了卷子,如果读过csapp这本书的话,卷子还是很简单的
这门课花的时间不算多,作为基础课还是比较建议的选的
老师上课讲的内容似乎和CSAPP第三版不完全一样,不知道是不是和第二版一样而没修改。
考试内容除了信号那一章其他都比较基础,信号那一章的考试内容感觉比上课介绍的内容难很多,书后练习也没有相关的内容,似乎需要进一步了解相关的信号量编程才能熟练的解决。
我以一个非科班学生视角评价一下这门课吧:很难,内容很多,但是给分很好,老师讲课很有水平。
之前从没学过计算机系统相关课程,抱着学习的心态选课进来。上课讲的东西都很陌生,都要从头学,不过老师讲的很好,PPT做的也不错,课本真的很棒。学起来很吃力,但确实学到了不少东西(虽然以后大概率用不上),也算是对计算机系统有了一定认识。
会有几次作业和实验,网上都有答案,写不出来就不要折磨自己了。平时分占比60%,基本都会给满。考试反正是没几个会的,尽可能在写了,空了一道半,大部分题目都是会但不完全会,最后总评87,跟轻松90+的大佬们没法比,但是我是很满意啦。所以如果没基础的也不要怕选这门课,虽然没办法轻松90+,但我想拿个75+是很简单的,毕竟老师说过一般不会给75-。大概就这样,推荐。
作业实验工作量合理,应该不点名(没去过不清楚)
考试会考ppt上比较细的东西
试卷上只有两道题是确定做对的,还有少许完全不会写的和一堆瞎蒙的,出分一看总评上了90,选择佛海,选择成功。
1.7号考完来贴个回忆版:
这次考试和2022秋的回忆版相比难了不少,没有Cache相关的和看汇编码填空的,而且不少题目都是文字题,包括看C语言代码找BUG或者用C语言代码实现功能等,计算题非常少,复习方向完全错误了QAQ
给分很好,这门课应该是没有点名,一共五次实验以及四次作业,都是祖传的,选这门课的性价比很高,如果后续有意向走开发岗,CSAPP这本书对提升对计算机的理解也很有帮助。
87分,没啥好说的,对于一个追求均分75的人来说很满意,下学期两门基础课过了就行了
实验和作业都有大量的参考答案,而且助教平时分给的很足,基本上大家平时分都满了
期末考试里涉及到书上的和PPT里的原题比较多,有时间看书,书上的夹杂在知识中的习题可以捎带做做,今年重定向就考出来一道一模一样的
挺经典的一门课,对于跨考的同学应当是蛮有收获的,但是同时对于他们来讲这门课应该蛮难的
省流:给分超好,给分超好,给分超好。
课堂:用ppt讲CSAPP,说实话很无聊,不如自己看书。由于本人本科学过CSAPP,因此基本上不去听课。今年应该没有签到/小测过。
作业:作业是CSAPP课后习题,每年题目都不变,答案也很容易找到。
实验:五个CSAPP配套实验,data(比特数),bomb(逆向分析),attack(缓冲区攻击),perf(代码性能优化),malloc(简易动态内存管理),总体来说难度较低,但还是需要花费一定时间,建议提前写。但需要注意bomb,根据学号,每个人拿到的题目不一样,网上没有直接答案,需要多留一些时间。
考试:闭卷,题目较难,考点刁钻细致,尤其今年信号量出了两道大题,而很多人没复习这块内容。
给分:给分很好。首先,公布的比例中,实验+作业占比就有60%了。考试成绩应该也全都捞了,本人考试确定做对的题只有2道,但最后总评90+。
总结:选就完了。