Skip to content

zhuozhiyongde/Introduction-to-Computer-System-2023Fall-PKU

Repository files navigation

Introduction-To-Computer-System-2023Fall-PKU

更适合北大宝宝体质的 ICS 辅助学习资料

  • 含往年题勘误、期中期末考试复习细节整理
  • 含各种魔改的 Lab,包括详细准备操作、解释步骤,与各种踩坑
  • 奉行能偷懒就偷懒的原则,Bomb Lab 的 secret phase,Proxy Lab 的 HTTPS 部分因为不计入成绩,所以都没有写

我不建议你上来就看我写的 lab 踩坑记,因为这可能对你的思考并无好处。

CSAPP 笔记:

深入理解计算机系统-笔记版-by Arthals & EmptyBlueBox

提取码:csapp

我的笔记可能带有 GPT 内容,请自行甄别。

工具

  • tldr:比 man 更好用的命令行工具,可以用来查看命令的用例,快速上手命令
  • VS Code Remote - SSH:VS Code 的远程开发插件,可以用来远程开发。对于使用云服务器 / Class Machine 的同学尤为推荐

注:如果你使用 PKU VPN 3 - 用校内服务器实现 PKU 内网和 Clash/Surge 兼容使用 中提到的方式链接北大内网,那么你需要配置 ~/.ssh/config 如下:

Host ICS
   HostName 100.104.38.30
   User ubuntu

其中 HostName 为你的 Tailscale 内网 IP,User 为你的用户名。

回课

推荐使用 Slidev,通过 Markdown 和成熟的前端技术、工具链,可以快速制作出漂亮的 PPT。

我的两次回课:

源码可在 回课 文件夹中找到。

在 2024 年,我成为了 ICS 课程的助教,我的小班回课 PPT 可以在 Arthals-ICS-Slide 中找到(需要北大内网)。

目前有:

  1. 课程介绍 / Introduction
  2. 数据表示 / Data Representation
  3. 程序的机器表示 I / Machine Programming I
  4. 程序的机器表示 II / Machine Programming II

笔记

建议直接我的博客直接阅览我的笔记,因为我会优先在博客更新勘误。你也可以在各个 Lab 文件夹的 README 中获得,但可能会有所落后。

经验

Q:如何正确的读书?

A:正常读中文版,第一章不用看。如果有觉得笔误或者疑惑的地方可以查找英文版(建议以图编号等搜索 CS:APP PDF),若感觉英文版仍有笔误或疑惑,可以查找英文版勘误表(建议以图编号等搜索 CS:APP Errata)或搜索谷歌。

Q:Class Machine 能不能用?

A:能用,但是我认为唯一必须要用 Class Machine 的 lab 就是 Attack Lab(因为 Attack Lab 需要考虑 ASLR 等问题,最好使用助教配置好的 Autolab)。其他的 lab 推荐自己购置一台云服务器(如腾讯轻量云、阿里云 ECS 等),因为 Class Machine 是不连接外网的,所以装环境 / 下载文件都很麻烦,而且即便是 Bomb lab,如果你熟悉了怎么安全化炸弹之后也都不需要 Classs Machine(不过可能当你做完之后提交时会需要一下)。而且自己购置的云服务器可以用来做其他事情,比如搭建个人博客等,这些折腾都会成为你宝贵的经验。

Update:自 2024 年以后,北大 ICS 课程已经转为使用 Clab 来完成实验,所以上面的话你可以忽略啦!

Q:刷往年题一套刷了好几个小时正常吗?

A:正常,特别是第一套往年题,如果你过程调用式复习的话,第一套刷 10 个小时都是正常的。但是随着你刷的越来越多,没见过的题型越来越少,这个时间会越来越短。

值得注意的是,ICS 的复习以课本为第一优先级,拟合往年题并不能保证你取得好成绩。

参考 & 引用

广告

PKU Art:教学网美化样式

后记

虽然考完期末后的我也曾心怀不甘,觉得一个学期的努力就这么付诸东流,但当我无暇悲伤而又立刻紧张地投入到 ICS 之后一场又一场的考试中时,当我考完所有试回到家中静下心来整理这份资料时,这些不甘、愤懑、悲戚的情绪似乎也就自然而然地淡了下来。

尽管我也仍在等待着最终成绩的公布,但我还是希望大家不要被分数所异化,不要因为考差就自暴自弃,也不要因为考好了,就高傲地去嘲讽那些没有考好的同学,而是做一个正直、善良、有同情心的人。

这份资料不是免费的。我愿以这份资料买走一些同学心中的戾气。

如果你觉得这份资料对你有帮助,不妨点个 Star,或者在我的博客点个赞,留个言,这会让我很开心的。

请不要吝啬于将这个仓库分享给你的同学,我的本意不是让这份资料只能被少数人看到,而是希望能让更多的人看到,让更多的人受益。

如果你有任何问题或者建议,欢迎在我的博客评论,或者在 Github 的 Issue 中提出,我会尽力回答 / 改进。

再次感谢如下朋友的帮助:

  • EmptyBlueBox:我的卷王朋友,为我提供了很多资料与学习经验。
  • thezzisu:我的 ICS 助教,为我和我的小班课同学解答了很多问题。
  • CS-icez:素未谋面的卷王王中王,他的优化代码令我叹为观止。
  • HenryHuang2004:一起学 ICS 的同学,我们一同探讨了许多往年题的问题。