大三下

【操作系统】

努力学操统(如果学得懂的话…我当时弃疗了),考前一定要复习piazza(血的教训)。

——by赖涵光学长

【数值分析】

实验都不难,平时好好学吧,毕竟期末考就能看出差别。

——by李成江学长

【搜索引擎】

平时作业比较简单,大作业实现基本功能也不难,前端写好看点就ok。

——by李成江学长

【现代密码学】

如果选了现代密码学的话,考试要好好准备,平时签到/作业都会占分。

我们当时的平时作业都是让你实现加解密算法,不同学号的人做的算法是不一样的,而且也能在网上找到参考。

——by李成江学长

【SOA(以服务为中心的软件开发设计与实现)】

挺好玩的,比软工要容易,没那么多规范。

——by李成江学长

【数据挖掘】

数据挖掘好像也没啥,大作业可以做比赛,倒是有考试,好像是有做几个往年题(但感觉都是假题,和最后考的都不太一样)

——by李成江学长

多媒体技术

搜索引擎技术基础

搜索引擎课上会将一些搜索引擎的框架,还有一些算法比如pagerank,还有一些根据网页内容进行相关性排序的算法。会有三次小作业,一次大的project,三次小作业分别是(1)搜索引擎的性能评价 (2)写一个图片搜索引擎 (3)写pagerank 大的project是用heritrix的爬虫框架爬校园网(不会限制域名,一般是爬几十个g然后停下来),随后处理一些编码问题,建一个大的索引表,之后在写一些前端,以及一些附加功能(比如语音搜索,搜索词的纠错,相关关键词推荐等)。最后给分就是功能实现的多,给分就高哈哈。

最后:搜索引擎课上会点名,有的时候会有随堂小测

——by 吴昊哲学长

操作系统

2017文件夹下的作业代码已经很详细了……

One more thing: ucore从19年开始lab2的代码被谭院士改了,之前的代码不能work,这里是一个参考:https://github.com/Trinkle23897/os2019/tree/master/labcodes/lab2

数值分析

数字图像处理

 Tips

先修了大三限选课。 感觉还挺有收获的,对于我这种偏CV的人而言。重新讲了下DIP的传统方法都有啥,学到很多。

作业也很好,比如Poisson Image Editing,真 长见识。虽然有点难度,但是还是在可以接受的范围内。

下半学期就开始讲机器学习,对于我这种已经上过好几门机器学习的课(并且忘光了)的人来说,赶紧回宿舍睡觉。下午第一节课啊喂

作业:https://github.com/Trinkle23897/dip2018

第二次是组队的,找了Gty,然后我就负责干脏活。

			 Update

2020春季学期作业:https://github.com/zx1239856/UndergradProjects/tree/master/数字图像处理

平常4次小作业较为trivial,第一次大作业的view morphing正确实现具有一定难度,第二次大作业随便训一个attention head就能提高准确率到不错的程度,总体工作量不大

数据库专题训练

	 Tips

update: 2020春本课程已课改,内容改为数据库的基础知识(与数据库系统概论有不少重合)。2020年作业见https://github.com/RecursionSheep/Database-Training-Projects

我觉得lcgg的代码写的太菜了,就把它删了。我的在这里:

https://github.com/Trinkle23897/Personal-Homework/tree/master/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%93%E9%A2%98%E8%AE%AD%E7%BB%83

一共三次作业,占比30/30/40,还似乎年年都一样。前两次按照时间升序排名,用时越短分越高。我前两次的排名都是全班第二(orz zl)。第三次是“前端大作业”,算法都不用自己写,就只需要调库……把前端写好了就能拿高分。

我第一次最后跑了4.8s,第二次最后跑了1.5s。不过在写第一个的时候,推荐先看看我第二个的实现,里面有一些trick是我后面才想到的,没有用于第一次作业。

这门课拿高分(flag)有一些技巧

  1. Rejudge:评测机不稳定,越早开始写越好,因为交的人少;如果迟了的话,只能rejudge,反正他是取历史最好成绩。夸张一点,第一次交上去40s,rejudge一下变18s。感觉时间的分布是个正态分布,这就意味着你rejudge越多次,你排名越前。某次我写了个15s的交上去,洗了个澡发现rejudge成了11s。你甚至可以在睡觉的时候,在服务器上跑这个脚本(脚本在根目录下
  2. baseline要好:我第一次拿lcgg的改,发现突破不了upper bound。第二次拿一个7s的改,思路和lcgg的完全不一样,upper bound直接甩了lcgg的代码几条街…
  3. 第一次作业只算运行时间,不算初始化,因此你可以把初始化随便写,一些特别耗时间的操作都放到初始化里面。此外,第一次作业往年有学长跑到2s,而且是包括初始化的那种,我膝盖没了。大概就是overfit数据,比如输入字符串长度大于某个threshold的时候把ED/JC的threshold也变一变,虽然这么做肯定是错的,正确性没有保证,但是在这个数据集上却能够work,我也是很无语。

数据挖掘

由于某些原因,原来这里面的所有东西都不能展示

模式识别

系统分析与控制

 课程内容

课程主要讲授经典控制论和部分现代控制论。在 2017 春季学期讲授过的内容包括但不限于(不限于是因为可能有的我没想起来):

  • 线性系统描述
    • 信号流图
    • 微分方程
    • Laplace 变换,传递函数
    • 矩阵指数,状态方程,能控标准型
    • 非线性系统 Taylor 展开线性化
  • 稳定性,稳态性能和动态性能
  • 状态方程的能控性
  • 频域分析,Bode 图
  • PID 控制器,超前滞后校正,控制器设计
  • 极点配置
  • Nyquist 采样定理
  • 连续系统转采样系统(时域离散,值域连续)
  • 强化学习初步

其中上面的内容在离散系统和连续系统中均有涉及,但以下内容没有涉及

  • Mason 公式,Mason’s gain formula

  • 非最小相位系统

  • 频域稳定性判据:根轨迹法,Nyquist 判据

  • 其他的控制器设计方法:分析法、综合法等

  • 状态方程的能观性:观测器的设计

    老师和给分相关

我选的2017春,刘华平老师的系统分析与控制,给分非常高。满分 105 分,其中 5 分加分,为大作业。最终和 100 取 min

  • 平时作业 30%
  • 期末成绩 70%
  • 动态纹理作业 5%

印象里平时作业中还有一次期中考试,相当于一次作业的分。期中考试非常水,2 hr 的考试时间,.5 hr 就能做完。

期末考试才是重头戏。

 考试相关

	 开卷考试

可以携带教材,笔记,打印课件,计算器,因此相当于可以带无数张 A4 纸。

期末考试比较紧张,因此在计算器方面,建议携带 Casio fx-991ES PLUS 或者更高档的计算器,并建议熟练掌握以下功能:

  • 变量参数代入(即左上的 CALC 键):节省时间
  • 矩阵运算:计算状态方程的能控性,用极点配置法设置控制器(也能算能观性,但是不考)
  • 高次方程的求解:计算极点
  • 不含参的定积分,用于代入参数后检验 Laplace/Fourier 变换是否计算正确
  • 不含参的求和,用于代入参数并取有限项后,检验 Z 变换是否计算正确
  • 复数运算,包扩内置的 a + biA exp(i \theta) 转换功能:与频域分析相关,求增益和相位等
  • Newton 法解高次方程:可能会用在算极点,或者根据开环传函在不依赖 Bode 图的情况下精确计算带宽、相位裕度、增益裕度等,但可能用不上

这些功能的具体使用方法请自行查询

	 试题分布
  • 简答题 (3分*5),基本概念 50 汉字以内应该能说清楚

  • 选择题 (3分*5),ABCD 四个选项单选,很快就能做完

  • 计算题 (5道),压轴

       压轴题
    

计算题里有一类压轴题,见 这套题 大题的第 3 题。这类问题的一般形式是给一个连续系统 $G(s) = K/(s \cdot (as + b))$,加入周期为 $T$ 的采样和保持器以及单位反馈后,问闭环系统的传函,并进一步使用 Routh 判据设计适当的 $K$ 使得其稳定。其中 $K, a, b, T$ 是实数,$a, b, T$ 在题干中给定,$K$ 是待定实数(控制器参数)。改变 $a, b, T$ 的值后,就是不同的题。

这类题的计算量非常大,如果计算不过关,考试过程中肯定无法在规定时间内完成。推荐使用符号计算工具先把答案步骤算出来(保留 $a, b, T$),记在笔记本上,考试的时候用计算器,把 $a, b, T$ 的值代入(使用 CALC 键)后,抄上去就行。

我当时只在笔记本上记了 $G(s) = K/(s \cdot (as + 1))$ 的情况,见 a4paper/,结果考了一个 $G(s) = K/(s \cdot (2s + 3))$ 之类的东西,额外手推了一下。读者如果要参加考试,可以自行补全 $G(s) = K/(s \cdot (as + b))$ 的情况,节省考试时间。

网络编程技术

工作量真的很小,只有至多两次编程作业(我们还只有一次),两三百行的小玩具级别的。还有一个非常简单的考试,就是一些考基本概念的选择题,和一个找代码缺陷的大题。这种找代码缺陷的题老师上课也经常讲。

https://github.com/MashPlant/undergraduate_projects/tree/master/网络编程技术

计算机系统结构