写一些程序,尤其是比较底层的程序。就明白它们的用处了。
列举下我们当初的作业(其实是老师从UC Santa Barbara\UC Berkley CS作业直接copy来题目)
(1)实现一个简单的 TCP 传输层的协议机制
自己去设计协议,不用照搬 RFC 的标准,其实就是数据结构的用场。
需要考虑到数据包丢失(Loss)、损坏(Corruption)、乱序(Disorder)这样的情况。
(2)实现操作系统的虚拟内存机制(基于Nachos系统)
如何去设计页表。如何使用置换算法。以及应用程序请求页的时候,发生缺页,从而导致的中断如何处理。
(3)实现一个简单的编译器(MiniJava)
词法:字符串匹配,表达式求值 等算法;
语法:生成抽象语法树;
语义:采用适当的设计模式(Visitor)来生成语义表、字典、然后转化为目标代码(可以是汇编、或者是类似的 Three-Address Code)
如果以上三个任务都完成并搞懂了,那么恭喜:你不仅掌握了数据结构、算法,而且也学习了计算机网络、操作系统、编译原理中大部分的知识。