计算机系统概论(H)(安虹) 2024秋 2023秋 2020秋 2019秋 2018秋 2017秋 2016秋 2015秋 2014秋 2013秋 2012秋  课程号:01170401
2024秋 2023秋 2020秋 2019秋 2018秋 2017秋 2016秋 2015秋 2014秋 2013秋 2012秋  课程号:01170401
6.9(41人评价)
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:一般
  • 收获大小:一般
选课类别:计划内与自由选修 教学类型:理论实验课
课程类别:本科计划内课程 开课单位:计算机科学与技术系
课程层次:专业基础   学分:4.0
简介 最后更新:2023年7月14日 13:53

本课程作为计算机科学技术专业的入门课程,采取自底向上的教学模式,跨系统地介绍计算机系统的核心概念和设计思想。从介绍计算机系统的底层基础知识开始,逐步上升到操作系统和高级语言程序的接口层,将软件和硬件联系起来,阐述从问题描述到算出结果的七个层次的转换过程:从问题到算法的转换、从算法到高级语言程序的转换、从高级语言程序到(用指令集结构描述的)机器语言程序的转换、从指令集结构到微结构的转换、从微结构到逻辑电路的转换、从逻辑电路到晶体管器件的转换。主要讲授内容包括:从MOS晶体管开始,依次介绍逻辑门、锁存器、各种逻辑结构的设计;然后围绕一个简单的计算机设计LC-3,依次介绍冯?诺伊曼计算机系统模型、指令系统设计、汇编语言程序设计和微结构设计,为初学者建立起对计算机系统的完整认识。在此基础上,介绍汇编语言程序设计、物理设备的输入和输出机制、操作系统的陷入机制和子程序调用和返回机制、以及栈和数据转换的原理和机制。

AI 总结 AI 总结为根据点评内容自动生成,仅供参考

教学内容与效果

安虹老师的《计算机系统概论(H)》课旨在从底层构建一台小计算机(LC-3),涉及从门电路到汇编语言的多层次内容。课程前期与数字电路有一些重叠,但也提供了更广泛的计算机系统概念,虽然课程名为概论,却未能全面涵盖计算机系统各模块。课程强调level of abstraction,但实验中未能充分体现这一思想,尤其是汇编语言练习更显繁复。

教学方法与课堂氛围

安虹老师授课细致且从容,时常重复内容以确保学生理解。然而,一些同学反映课程节奏较慢,信息密度低。上课采用英文教材和课件,增强了学生的英语阅读能力。课程还包含多次讨论课,但组织较为松散,收获有限。

作业与实验

课程包括多次作业和实验,作业虽不计分但必须提交,实验部分尤其受到重视,占总评比重较大。实验涉及编写LC-3汇编程序,后期大实验(汇编器和模拟器)工作量大且位于考试周附近,耗时较多。实验报告的详细程度对分数有显著影响,报告要求英文撰写。

考试与给分

期中和期末考试为开卷,题量大且全英文,涵盖抽象思维考察。给分强调实验表现,期末考试结束后有调分,优秀率较高达50%以上。然而,部分年份曾出现临时调整给分策略的情况,引发部分学生不满。

教学资源与助教

课程的在线资源丰富,包含作业、实验及教材链接,但助教表现不一,回应速度和反馈较为缓慢。一些年级的助教在出题方面过于复杂,增加考试难度。

总体看法

这门课受益于其对计算机系统的系统性介绍,但在课程安排和给分标准上有调整空间。大部分同学认为课程适合理解底层系统设计,是为后续学习打下基础的好课;然而对于非计科专业选修学生,可能体验不佳,需慎重考虑课程难度和时间投入。

排序 学期

评分 评分 11条点评

2023秋
  • 课程难度:困难
  • 作业多少:中等
  • 给分好坏:超好
  • 收获大小:没有
  • 难度:困难
  • 作业:中等
  • 给分:超好
  • 收获:没有

这门课有很多缺点,但是想到高达76的优秀率,这些都是小问题了。

一个一直以来都在探讨的问题是:学习ICS的不可替代性、必要性在哪里?这门课或者说这本书的初衷应该是作为程序员的第一门导论课,但时间上它并不是第一门,内容上前半段大量的是程设或者数电之类的课涉及到的内容,后半段却一头扎进了LC-3的深坑里做无用功。很明显,LC-3是简陋低效甚至不存在于现实世界的,没有任何实用意义。我大概能理解书的作者是以此为例初步总览指令集、数电设计、操作系统、汇编等内容,但课程却误入歧途,舍本逐末。

上面很多评论都在讨论这个问题,而在我们2023级这个问题尤为严重,是因为助教的出题风格更是在歧途上走了太远太远。比如,期中卷有LC-3机器码程序推断,通过加长程序长度、减少提供的信息、构建复杂的跳转结构甚至不惜用16进制写机器码来无谓地增加难度。再比如,期末卷有算周期数的问题,本来这是一件很简单的事,书上有很明确的状态图,但出题时却又要跟程序推断揉到一起,用周期数来反推指令。似乎我们应当成为一名LC-3大师而非初步了解计算机系统的计科学生。不过,助教很负责,除了出题风格之外我能给满分。

吐槽了这么多,我也该给一点学习建议,毕竟H课没得换,总得学。

首先是最后的两个大实验,LC-3汇编器和模拟器,助教提供的模板是C++版本,而且是高度“C++化”,即大量使用了类等功能,一眼就看出不是C。对于没有基础的人,虽说临时抱佛脚也来得及(比如我),但还是建议有时间自学一点C++。不仅如此,还要在Linux虚拟机上面跑,以及简单地用到Makefile。其实这些都不难,但是有所准备更好。

另外,实验的时间和分数的安排值得注意一下。上面提到的期末周附近实验扎堆,这一点很烦。两个大实验ddl大概率推到寒假,实测下来学期内至少把汇编器初步完成是合适的。评论区能找到不止一个学长的开源代码,不过大实验的真正难点其实在于每年新增的附加要求。还有一个问题没人提到过,就是大实验的分数占比其实和小实验是一样的,而且大实验给分很宽松。换句话说,爆肝一个星期半个月的“精美”汇编器对绩点的贡献可能还不如一次小实验的报告的完成度。

还有一个忠告值得反复强调:用第三版的英文原版!不要贪那个中译,第二版和第三版差别真的很大!甚至涉及到LC-3系统区的exception处理。另一个原因是考试作业课件都是英文,不要到考场上还不知道某个常见名词中文啥意思。

说了这么多,还是真心希望这门课能发挥真正的作用,同学们能学到东西。也许可以少讲点LC-3,可以讲点课本后半部分C的内核。也许可以用CSAPP替换ICS(?)

2024年2月29日 09:33 6 0 复制链接
匿名用户 2023秋
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:一般
  • 收获大小:没有
  • 难度:中等
  • 作业:中等
  • 给分:一般
  • 收获:没有

占坑,出分后细评。

先说结论:这门课是我目前为止上过最史的课,本学期的助教也奇差无比,堪称极品。

2024年1月30日 09:31 5 0 复制链接
匿名用户 2023秋
  • 课程难度:简单
  • 作业多少:中等
  • 给分好坏:超好
  • 收获大小:没有
  • 难度:简单
  • 作业:中等
  • 给分:超好
  • 收获:没有

我单方面宣布ics是妮可最擅长恶心人的课,考试的唯一目标就是为了恶心人

期中的16进制机器码就不说了,为什么期中期末都要出看到第4小问才能确定第1小问答案的题?题面也写的巨勾史?数你马的周期?

考试的内容全是附录里边边角角的地方,上课提都不提

实验占一半分,然后实验给分的标准是实验报告写多少???这么简单(shabi)的实验有必要写个几页实验报告???最恶心的是助教从来没说按写多少给分,而且直到所有实验做完才会出实验的分,这不就是纯为了恶心人?

不过给分是真捞啊,我按公式算出来80,给捞到85了,泪目

2024年1月12日 13:02 (最后修改于 2024年2月9日 14:30 4 4 复制链接
jqtlg这就是ah 2024年2月7日 18:20
红领巾《给分好坏:杀手》 2024年2月9日 05:50
guesss按照今年的给分来看这也就是正常调分吧 2024年2月9日 05:52
TheBunniestForever无意冒犯 但这个评分和给分好像离婚了 节目效果拉满哈哈哈哈😂 2024年2月9日 17:02
立即登录,说说你的看法
Hahhhnxsm 2023秋
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:超好
  • 收获大小:很多
  • 难度:中等
  • 作业:中等
  • 给分:超好
  • 收获:很多

作业:作业量不是很大,总共6次,一次作业算1分,基本上是写了就有分。

实验:总体来说实验难度不如数据结构,逻辑上都比较简单,就是很麻烦,高级语言一行代码的事得写很多行。不过非常sb的是考试周安排两个实验。虽然ddl延迟到假期了,但是说的太晚了,导致我在考试周花费了宝贵的复习时间来写实验。并且汇编器的要求增加了好多,模拟器的文档又太简略,两个实验的体验都不算好,尤其是像我这样没接触过C++的人还得先花时间学C++。

顺便一提我做实验基本上都是先画流程图,再用C语言照着流程写一遍检验正确性,同时也为lab6的用高级语音实现前面的实验做准备,最后再照着流程图用汇编语言写。感觉这样还挺高效的,基本上一个晚上可以写完一个实验。

考试:考试,期末还好。期中纯粹就是为了难为人,老师后来也说期中出难点是为了让同学们重视这门课,不要以为随便学学就能学好了。

老师:老师讲课并不算特别好,前面两周一直在说这门课多重要,上的像一门思政课一样。后面节奏快了起来,讲的很多,但是和考试内容似乎是正交的(bushi

助教:两个助教水平都很高,但是感觉有点不够用心,可能是科研任务比较重吧。赵助教习题课讲的很好,但是回消息好慢,另一位吴助教回消息很及时。顺便一提过年的时候赵助教还在群里发红包了,好感度猛增。

给分:给分感觉还行,优秀率76%,我期中66.5+期末88+有一个实验被扣了30分(这个实验的代码我提交成代码框架了,所幸实验报告里包含了大部分代码,助教哥哥也比较仁慈给了70分),最后总评95,这个给分很不错了。

至于推不推荐这门课,好像没什么意义,因为英才班的同学没有其他的选择,也没法退课。


大二下结束来更新一下,感觉这门课对于后面的学习还是有一定作用的,LC-3也是最简单的汇编语言了,可以起到打基础的作用,以后的课老师都默认学生会汇编语言了。

2024年2月13日 06:54 (最后修改于 2024年7月20日 13:12 3 2 复制链接
TheBunniestForever捉! 2024年2月13日 09:22
Hahhhnxsm回复 @TheBunniest: 🤟 2024年2月13日 14:47
立即登录,说说你的看法
匿名用户 2023秋
  • 课程难度:中等
  • 作业多少:很多
  • 给分好坏:一般
  • 收获大小:一般
  • 难度:中等
  • 作业:很多
  • 给分:一般
  • 收获:一般

吐槽的几个方面:1、考试周附近布置实验,导致占用大量复习时间。lab5、lab6、模拟器、汇编器均在考试周附近布置,导致复习时也要抽出时间写ics实验。而且汇编器和模拟器又是两个代码量非常大的大模拟,如果完全由自己完成的话至少要两三天的时间。而个人感觉这两个实验和ics内容本身几乎没有什么关联,只是单纯的堆代码量。

2、实验文档模糊不清。全是英文这一点先暂且不题,尤其是模拟器的实验文档,给的信息少之又少。最终的要求只占了短短六行,没有实验样例,没有具体的步骤,但是检查的时候又突然要求能够输出一段内存空间的值。给的实验框架没有注释,而且是c++版本,还要自学cmake。

3、习题课有签到,强制参加。不知道是否会影响总评的调分。

安老师的讲课水平中规中矩,和自己看书区别不大。也可以说是这本书写的太好了,结合作业自学就能掌握得差不多。

除夕更新一下,出分了,按照助教的说法总评是半期*0.15+期末*0.25+实验/8*0.5+作业/6*0.1,最后只高不低,实际出分确实要高一些,优秀率是76%。如果实验报告写的多的话总评应该不会太差。学弟学妹们选这门课还是要卷一下实验的。

2024年1月24日 00:38 (最后修改于 2024年2月9日 02:20 3 2 复制链接
lsy我习题课一次都没去,惊 2024年1月30日 10:25
TheBunniestForever往年的模拟器的实验文档要详细一些,不知道今年是出于什么考虑删掉了这么多 2024年1月30日 17:49
立即登录,说说你的看法
匿名用户 2023秋
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:一般
  • 收获大小:一般
  • 难度:中等
  • 作业:中等
  • 给分:一般
  • 收获:一般
2023年12月7日 14:53 3 0 复制链接
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:一般
  • 收获大小:一般
  • 难度:中等
  • 作业:中等
  • 给分:一般
  • 收获:一般

2024-1-29 

刚刚交完LabS的报告,我的冬季学期宣告结束辣!(雾

占个坑先,有空再更


 

2024年1月28日 16:36 2 0 复制链接
匿名用户 2023秋
  • 课程难度:中等
  • 作业多少:很多
  • 给分好坏:一般
  • 收获大小:一般
  • 难度:中等
  • 作业:很多
  • 给分:一般
  • 收获:一般

本人成绩虽不顶尖,期中期末在班上也算偏前,但仍被实验(尤其是汇编器和模拟器两个实验)烦到了。问题列出如下:

  • 实验要求模棱两可,常临时加要求;
  • 实验文档有时跟所提供代码不符,让人摸不着头脑;
  • 实验代码实现复杂繁琐,以至于两个大实验拖到了期末考试结束后两周,才检查完,却几乎对理解课程知识毫无帮助;
  • 助教态度并不客气(主要是考试结束之后,检查实验那段时间,不知是助教太忙还是怎么着,后面好一些)

安虹老师讲课中规中矩,前几周基本都在吹水,后面还算是正常讲课了,可以接受。

给分还行,优秀率76%

2024年1月23日 16:07 (最后修改于 2024年2月10日 04:21 2 0 复制链接
SodiumCl10 2023秋
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:超好
  • 收获大小:一般
  • 难度:中等
  • 作业:中等
  • 给分:超好
  • 收获:一般

这应该是要填的最后一个坑了。跟不少前人的评价类似,其实我也觉得这门课开课的目的挺迷惑的,感觉几门计算机专业的必修课就能完全把这个课代替掉了,ics这个课就有种什么都讲了但是什么都只讲了一点点的感觉。

说回到课程本身,比较好的一点就是考试占比只有40%,然后另外60%中一大半是实验,还有作业什么的,其中作业是二等级制,就是只要按时认真完成就是满分,所以主要看的是实验的分数。实验总共有8次,分为1次机器语言、4次汇编、1次C++语言,另外还有一个模拟器和一个汇编器的实验是必做。关于C++语言,不少同学说不会,其实就是在C语言的基础上加了一些东西,我之后准备写一个以C语言为基础的C++入门教程。模拟器和汇编器会给C++代码,中间只有一部分需要自己填,当然你自己用别的语言从头开始写一个也不是不行,depends on you。

作业和实验文档都是用全英文写的,考试卷也是全英文,不过不难懂,基本上用高中的英语基础再加上几个专业词就可以全看懂了。考试是开卷,有些人会带一本厚厚的词典过去,不过这完全没必要,我带去考试的就一本第三版的英文教材。实验报告是中英文皆可(不过我一般都用英文写,懒得换输入法了)。

老师讲的怎么样这个不好说,感觉不如自己看书来学,反正我上课也没怎么听过,基本上是在做各种其他作业,hackergame那一周甚至ics课上还打了几百分。学期中会有几次习题课,但是会点名,不去的话会影响总成绩,所以一定要去(话说为什么会有正课不点名习题课点名的课啊)。

最后讲一下考试,虽然占总评的比例不大,但是题目也不简单。试卷中会出现以下要素:

  • 晶体管数字电路(别画错了,注意transistor)
  • 十六进制机器语言(既有给出的也有需要填的,需要手动进行进制转换,千万别转错了,之前还有人在群里说会不会出现十进制的机器语言,我也说不准)
  • 状态机推理(特别是会问访存时间,建议在考试前事先计算好每条指令的周期数并标在书上,考试时直接用)
  • 还有一些其他乱七八糟的东西

总体的题目风格还是抽象为主,题目细节很多,一定要细心,基本上作业认真做考试不会有太大问题。

最后还可以选做一个107机的汇编器模拟器的实验,剧透一下,107机的结构比LC-3简单不少(毕竟是上世纪五六十年代的东西),所以如果想卷绩点可以尝试,在期末考试后给老师发邮件,老师会给一些相关资料。


本学期所有实验代码已开源:Ace-tyl/icsh-code: 2023秋季学期计算机系统概论(H)课程实验代码 (github.com)

仅供参考,严禁抄袭!

2024年1月10日 12:07 (最后修改于 2024年2月9日 09:30 2 0 复制链接
金木小天使 2023秋
  • 课程难度:中等
  • 作业多少:很少
  • 给分好坏:超好
  • 收获大小:一般
  • 难度:中等
  • 作业:很少
  • 给分:超好
  • 收获:一般

看到23级同学的点评已经很全面了,在此就简单提醒几句吧,主要就是注意成绩占比,这门课实验分数至少占总评50%(我们这级是期中15%,期末25%,实验50%,作业10%),并且八个实验中有六个都是实验和报告55开,所以一定要认真对待每一个实验和报告(具体扣分举几个例子,假如一个实验总分十分,如果代码本身功能出错应该是扣三分(相当于期中扣了13分!!!),如果报告很敷衍扣一两分)所以一定要予以重视。

2024年2月9日 02:56 1 0 复制链接

安虹

教师主页: 戳这里

其他老师的「计算机系统概论(H)」课

未知 2016秋

安虹老师的其他课

高性能处理器体系结构 8.5 (2) 2019秋 2018秋...
计算机导论 6.0 (1) 2013秋
计算机系统概论 6.7 (3) 2011夏
高性能计算 1.0 (2) 2024秋 2020秋...
计算之美与乐趣II 1.3 (3) 2023秋 2022秋...
计算之美与乐趣I 1.7 (6) 2023夏 2023春...
计算系统概论A 3.3 (26) 2022秋 2021秋
多核计算 2008秋
虚拟机技术 2006秋