CS452完结
好像还是在几天前,为自己马上要开始挑战CS最难课感到激动。
好像还是在几天前,为自己一次次完成之前从未见过的挑战而感到兴奋。
但昨天,这一切都随着final demo的完成而成为回忆。回头看这学期在452 lab里面写的这一万多行code,似乎能记起每行code,每个function写完时的心情。
毕竟,这是我大学期间写的最后一个CS作业,也是我大学期间写的最有成就感的东西。虽然期间有过数不清的困难,数不清的彷徨,也想过要放弃。
感谢这学期CS452的队友,狗,帮我在CS学生的生涯里写下这最后压轴的一笔。
====================煽情的分割线======================
这门课开学第一周就会有作业,而且是第二周的星期一交,占总分的5%。要上此课的同学请前几周不要翘课,因为452的程序开发和之前的课都不一样。课上老师会教你要做什么,和怎么开始。使用的语言是C和ARMv4 Assembly。虽然貌似可以使用C++,但是强烈不建议这么做,因为C++的compiler生成的assembly和C的不太一样,不利于理解compiler把程序编译成assembly的套路。第一周的作业主要在于熟悉开发环境和硬件配置,独立完成。
从第二个作业开始进入452的正题,由两人组队完成,从此开始写的东西以后都需要用。而且不像241,就算一个阶段写不出来,老师会给你一个能用的版本来写后面的作业。452不会,设计的时候尽量考虑之后会要增加功能的情况。第2到6个作业是realtime microkernel的开发,从基本的user program, context switch, exception handle到irq,和内核服务。microkernel使用大量的message-based线程间通讯。但不至于最后写出像CS350的OS161那样复杂的kernel,而且OS161并不是realtime kernel。至于具体的区别,写的时候会体会到。kernel的设计方案在很大程度上取决于你和你队友,并没有什么标准解。
第7-9个作业是train project,在自己写的系统的基础之上构建一个程序来控制火车的运行,具体的方式由自己确定。做出来的成果要进行demo,每阶段demo一次。
作业花费的时间非常多,但更多的时候是需要理解要怎么做和为什么要这么做。上452的学期建议不要报444,486这样同样需要大量时间的课。因为基本上你所有的在学校的时间都在写452作业,本人一学期在452全部收工之前天亮回家的次数依然可以用一只手的手指数出来。
学校官方对这门课的评价是会用到学生学过的所有CS课的知识,建议学生最后再上这门课。这么说不为过。从CS136的算法开始一直到4开头的课程教过的算法我很多都用过。
虽然很累,但是上完这门课的确能很大的加深对操作系统内核的理解,也可以培养出诸如快速扫描上千页文档并找到自己需要的东西的能力。
This site uses Akismet to reduce spam. Learn how your comment data is processed.
Recent Comments
- Franny on 留言板
- jerry on UWaterloo的CS课程介绍,一篇充斥着淡淡忧伤的总结…..ˋ(╯ω╰)ˊ
- 上官小天 on UWaterloo的CS课程介绍,一篇充斥着淡淡忧伤的总结…..ˋ(╯ω╰)ˊ
- tooyoungtoosimple on UWaterloo的CS课程介绍,一篇充斥着淡淡忧伤的总结…..ˋ(╯ω╰)ˊ
- 上官小天 on UWaterloo的CS课程介绍,一篇充斥着淡淡忧伤的总结…..ˋ(╯ω╰)ˊ
Leave a Reply