课程评价_计算机系统基础
分班该课程分为:大班、拔尖班两个体系,两者在实验上有显著区别。大班的实验为 x86 平台的大班 PA,难度较低;拔尖班的实验为 RISCV 平台的主线 PA,相比于大班难度较高。具体区别见:2024 PA 手册 的 FAQ 部分。
关于老师大班 ICS 推荐实验为汪亮老师的班。汪亮老师讲课逻辑清晰,熟悉实验框架;待人温和、乐于解答同学疑惑,也会在某些不确定答案的问题上与同学长时间探讨。理论课老师是谁并不重要,但理论课知识比较重要。
前置知识C 语言
课程内容课程内容主要涵盖:
计算机硬件基础(对应 PA1)
ELF 文件结构(对应 Lab)
ISA 与 x86 基础指令(对应 PA2)
层次存储系统(对应 PA3)
IO(对应 PA4)
作业、考试与得分课程的主体部分是 Lab 与 PA:
Lab 是 CSAPP 的实验改版,旨在建立对 ELF 文件运行过程的概念。共有 3 个 Lab,每个完成约需要 6 小时。
PA(Programming Assignment)可见 2024 PA 手册,任务是从 CPU 开始模拟一个完整的最小 x86 计算机系统,并最终在其上运行一个小游戏 ...
课程评价_计算机程序的解释器和虚拟机
关于老师由 PL 组的时清凯老师授课;2025 年是第一次开课,选课人数不多,课堂氛围比较轻松;时老师自述也并不希望这变成一门大班课,而是保持小班化方便修改实验和给予指导。
时老师之前用博士成果创过业,后被蚂蚁集团成功收购;如果有创业、大厂相关的问题可以找时老师交流。
前置知识编译原理、对一门面向对象语言的扎实基础(Cpp/Java/Python等)、最好有 Java 经验(没有也可以)
课程内容课程的前 40% 是对实验的集中讲解(见下一节);后 60% 是对 JVM 的详细讲解,会从结构和功能上拆解 JDK 的源码进行介绍,详细程度约等于大厂 Java 岗面试对于 JDK 了解程度的要求。包括但不限于:
Java ByteCode 的静态分析
JVM 启动流程
JavaObject 动态装载过程和运行分析
JDK 的分级 JIT 技术
GC
对没有 Java 经验的同学,是一次很好的全面入门 Java 的机会。
作业、考试与得分整个学期安排一个大实验,最终得分只与实验和签到相关(没有作业和考试,JVM 相关部分也只是纯做科普,不参与评分)。实验内容是:基于 ...
课程评价_操作系统(蒋炎岩)
关于老师由蒋炎岩老师设计并授课(此前的 ICS PA 也是 jyy 深度参与设计的)。jyy 每年都在迭代 OS 的课程和实验内容,会在课程中加入一些比较前沿的技术和研究内容。上课非常有激情,他本人也在知乎有号,经常在群里和知乎上发表一些暴论。
jyy 上课会进行 B 站同步直播+录播,可以不到场。
前置知识对 x86 体系的大概了解、计算机系统基础(ICS)
课程内容教材为 OSTEP(Operating System: Three Easy Pieces),主要包含:
OS 是什么
并发(并发原语、条件变量、信号量、并发 bug)
虚拟化(进程、shell、标准库、链接、ELF)
持久化(驱动、文件系统、简单数据库)
内核的浅显理解(2025 Spring 已删除)
作业、考试与得分如上所述,每年 Lab 的变动较大,仅供参考。主要变动体现在:OSlab 越来越少、Minilab 越来越多。
2024 Spring 的 Lab 包括 6 个 Minilab(操作系统编程)和 3 个 OSlab(编写操作系统):
M1:基于 procfs 实现进程树打印
M2:基于 setjm ...
课程评价_计算机网络(国际化)
关于老师由 COSEC 组的张渊老师授课,使用英文 PPT + 英文讲述。张老师讲课的语调有点令人犯困,还是英文上课,体验一般,不如对着 PPT 和 GPT 自学。
前置知识Modern C++ 基础
课程内容经典的计网教材:计算机网络(自顶向下方法),涵盖:
网络基础(带宽、时延、抖动)
应用层(HTTP、SSL、SSH、ICMP、SMTP、POP3)
传输层(UDP、TCP)
网络层(IP、DHCP、NAT、OSPF、BGP)
链路层(ALOHA、CSMA/CD、ARP、交换机)
无线网络(CDMA、802.11、CSMA/CA)
计算机三大件之一,非常有用(尤其是 TCP、HTTP、SSL、ARP),考研保研实习必考,建议熟练到倒背如流。
作业、考试与得分没啥作业,主要是 Lab,2024 Fall 是照抄的 CS144,跟着框架完成了:
抽象数据流的封装
TCP Sender
TCP Receiver
ARP
需要使用 Modern Cpp 的一些写法和特性,可以现学;大约共有 7 个 Lab,每个 Lab 耗时约 3 小时。
其他就算是跟着把 CS ...
课程评价_算法设计与分析
关于老师推荐徐经纬老师(好像 2025 年起不担任本课程了),支持免修不免考,事少,人好。
黄宇老师不支持免修不免考,且对有 OI 经验的学生敌意很大,会找麻烦。
前置知识简单的 C++ 使用经验(C with STL)
课程内容一些简单的经典算法,包括:
复杂度分析
贪心
动态规划
二分
排序
图论(最短路、最小生成树)
搜索
分治
堆、单调栈等简单数据结构
简单计算复杂性(NP、NPC、NP-Hard)
远低于 OI 中普及组难度。
作业、考试与得分作业主要为书面作业,来自于教材课后习题。需要格外注意作业中的格式和规范性,考试时如果过程不规范则基本不得分。
会有一些简单的 OJ 题目,不超过普及组难度(Tarjan 缩点、分层图、可持久化并查集等)。
其他对于没有 OI 基础的同学,这门课的内容十分重要。类似 OJ 的题目将会大量出现在各类保研机试/找工作机试中,建议以此课程为跳板,在 LeetCode 上练习相应专题。
课程评价_信息论基础
关于老师由姚鹏辉老师授课,本研共修课,研究生占比不低;与计算方法搭配在同一学期可以更深刻地感受到理论组的震撼。笔者认为完全搞懂这门课的内容难度不低。
前置知识概率论
课程内容全程黑板手写板书,无课程网站,无ppt;大部分内容来自于教科书,所以也不用特别记笔记。内容大致包括:
信息论原语(熵相关定义,渐进均分性等)
离散信源、离散信道
连续信源、连续信道
高斯信道
率失真理论
型方法
内容的抽象程度较高,本身不太好理解;加上姚老师节奏略有点快,笔者有点学的不明不白的。课程前几节课的内容可能实用一些,后续内容(尤其是各种大证明)貌似实用性不高。
作业、考试与得分作业大约两周布置一次,一次4题左右,都是书后作业。对理解一些关键的定义、证明和技巧很有帮助。
考试内容较为简单,最难的部分(彩色信道、率失真、型方法)等都没有涉及,以基本概念和公式的运用为主。原话:「在座的99%以后都不是搞信息论的,所以考试以基本概念为主。」
其他《信息论基础》(Elements of Information Theory)这本书的翻译极烂无比,感觉像是10年前的机翻;很多公式都OCR错了,部分作业题题面的表达 ...
课程评价_大学物理
关于老师老师是随机的,每年都有区别,无法定论。2023 Spring 是匡院的郭亚冲老师,很有年轻老师的特质。
前置知识微积分
课程内容视老师而定。2023 Spring 是力学和热学,不难。
学到的没有任何用。
作业、考试与得分视老师而定。
其他这是一门注定没用的课。要是选了就用「去锻炼建模思维」说服自己;觉得花这么多时间不值得就别选。
课程评价_最优化方法导论
关于老师由 AI 学院的张立军老师授课,老师本人方向偏向机器学习理论,跟课程内容还算比较对口。
前置知识线性代数(范数、矩阵求导等)
课程内容凸优化相关的基础内容,包括:
数学基础
凸性判断
对偶问题与拉格朗日乘数法
KTT 条件
梯度下降
线性规划
都是凸优化中最基础的内容,主要难点来自于矩阵运算(求导、取极值等)的规则。对偶问题和 KTT 条件的推导比较省略,需要背公式。
笔者上这门课时,全程都在怀疑自己学习/做题的动机:在每一个阶段都无法理解为什么要学习这些技巧和操作;在后面的章节中才会实际应用到之前看似无用的炫技操作。所以听不太明白是正常的,对着 ppt 能理清逻辑即可。
作业、考试与得分基本为上述每两章对应一次作业。单次作业包含一些基础的题目,耗时约 5 小时。
考试难度远低于作业,会考察一些来自于作业的概念和技巧(和密码学原理感觉很相似)。
课程评价_计算方法
关于老师由理论组的刘景铖老师授课,刘老师讲课慢条斯理,对于一些难以理解的地方会主动展开解释,相对而言没那么容易 get lost。
前置知识线性代数、图论
课程内容比起参加一个课程,笔者更觉得这是一门“大讲座”:针对很多问题都有概念性和比较浅的介绍,并没有深入某个领域挖到底,更多是对一些数值计算领域的经典问题介绍 background、motivation 和一些经典的 solution。整个课程参与下来比较轻松,没有什么负担。
课程内容主要涵盖:
插值与拟合(方程求根、插值、最小二乘、FFT)
线性矩阵计算(高斯消元、解线性方程组、SVD)
谱图论(Laplace 矩阵、图上随机游走、电阻电路网络)
线性规划(建模离散问题、线性对偶、Min-Max 原理)
课程难度主要来自于数学功底不扎实。概念的理解和算法的原理上没有很大障碍。
作业、考试与得分作业有一定难度,可能需要一些思考、查找和讨论。单次作业耗时约 5 小时,共约 8 次作业。
按照惯例,期中考试是一次 take-home-exam,即发放一份量比较大的作业,按作业时间完成和提交。期末考试题量较大、难度较低,考察概念性的题 ...
课程评价_Rust程序设计语言
关于老师由 PL 组的冯洋老师讲授,上课风格很随和(甚至有些随意);讲课水平一般:自己确实是懂,并且很努力在讲明白,但确实是讲不太明白。
不过这门课是语言入门课,老师对语言基础的讲授并不是重点;冯洋老师会补充一些在使用 Rust 某些特性时的经验技巧、一些 Rust 编译器的实现方式与特性、Rust 部分机制背后的设计哲学,这部分非常受用。
上课氛围比较自由,冯老师更像是一个索引和答疑者,不点名。
前置知识一门强类型高级语言的使用经验(Cpp/java/Go等)
课程内容2025 年是第一年开课,内容不全面、质量一般,主要覆盖:
Rust 基础语法
Cargo 包管理
所有权
错误处理
生命周期
并发编程
该课程主要基于冯洋老师自编的教材,直接对着教材看 Rust Doc 就可以。主要锻炼来自于 Lab。
作业、考试与得分没有作业和考试,评分基于 Lab。Lab 为四选一完成:
Git
数据库
Lox 解释器
植物大战僵尸
需要提交 OJ(植物大战僵尸除外),都会有一些额外加分项,在答辩时呈现。可3人组队完成,1/2人队伍有10%和5%的分数加成。 ...