帽子
不知道在哪儿看见这样一句话,深有感触:现在回想自己的大学,我只能引用费正清在《伟大的中国革命》中说的‘这锅汤熬得还不错,就这样吧’。在哈工大大学四年下来,真正有时间自己看看书、锻炼锻炼身体,也就只有大一和大四的时候有这样的时间;大二逃课泡妞,以至于挂了不少科,现在想来却只觉得有舍有得,舍了保研的机会,得到了难得的年少轻狂;大三的时候忙的四脚朝天,除了弥补大二不好好学习,大三好好学以外,也有着俱乐部的活动,以及自己想做一番东西出来的想法,可惜终究弄得不能令自己满意。
大一:
上半学期课程:军训及军事理论、大学英语、体育、高等数学、线性代数、程序设计语言、数字逻辑、计算机导论、计算机职业道德
下半学期课程:大学英语、体育、中国特色社会主义理论、高等数学、离散数学、交流技巧、个体软件过程(PSP)、计算机组成技术、C++程序设计语言
现在想来,我大一的时候以逃课玩游戏,做ACM题为主,实在是有点浪费时间,不过以当时的经历、眼界等等来看,这样做也还说得过去。
下面说说我对当时上的这些课程的一些看法和补充。
军训、大学英语、体育、计算机职业道德、政治自不必多说。
高等数学最开始会和高中所学的高等数学初步有所重叠,但是接下来的积分部分可以说是整个高等数学的基础,如果在这时候不多做些题,不好好听听课,等到以后想弥补就比较困难了。当初给我们上课的是刘维国老师,刘老师讲的课非常的棒,希望大一的同学们不要重蹈覆辙,高数一定要好好上。另外咱们学院的高等数学用的是哈工大出版社的《工科数学分析》,这是一本非常难的教材,建议同学们使用同济数学系的《高等数学》作为辅助教材。另外就是,一定要多做题,反正老师给发的题都按时做了就没问题!
线性代数在图形学中应用非常的多,大一的时候讲的也比较简单,算是一门非常好过的科目了。
程序设计语言讲的就是C语言,我去上的很少,因为很早之前就能比较熟练的使用C语言了。C语言语法元素非常的少,所以整个语言也显得非常简单。我不清楚现在是否还是使用谭浩强的《C语言程序设计》作为教程,但是我觉得这本书并不应该作为我们的教材,另外老师讲的很多部分有可能都不符合ANSI C的标准,这点我不想做过多的评价。推荐教材K&R的《The C programming Language》和Robert Sedgewick的《Algrithms in C》,这两部书都有中文版并且在一区的图书馆中都有,二区就不太清楚了,不行就跑一趟吧。头一本书估计不会看太久,第二本书可能看起来比较困难,推荐多做练习,我觉得NOIP的比赛题中挑选比较简单的题做做就好。另外我不推荐在Windows下面写C程序玩,因为C语言本来就是为了开发Unix系统弄出来的东西,咱们要玩也就玩个原汁原味的,不妨装个Windows、Ubuntu双系统,没事鼓捣鼓捣Ubuntu,学学Makefile,在Linux下面编写C程序,很有Geek的感觉呢。
因为C语言实在是比较重要的一门语言,所以我在这里花费了非常多的篇幅来写这些东西。但是我觉得把C语言作为自己的第一门语言还是有点#$@#%@!$。所以如果有空的话,不妨看一看MIT的公开课,跟着视频学学Python也很不错,还能顺便练练英语。
关于数字逻辑这门课,我本身很不感冒,不过对于了解计算机的最终原理还是有帮助的……推荐辅助教材《Code》(中文名《编码的奥秘》)
计算机导论这门课讲的#$@!%,我也不多说什么了,推荐教材《New Perspectives on Computer Concepts》(中文名《计算机文化》)和MIT公开课中的计算机导论。
离散数学是对于计算机科学比较重要的一门课程,不过其中的现代代数部分据说不太重要@_@总之好好学没坏处,哈哈。推荐后续教材《组合数学》、《Concrete Mathematics》(中文名《具体数学》)
交流技巧是一门外教课,现在应该是换老师了,不知道情况如何,这这门课上尽量多说话吧:P
个体软件过程(PSP)是一门标准的软件工程的专业课,在我看来算是我软件工程的启蒙课程,个人认为非常重要。这一方向我不能给出更多的指引。推荐辅助读物《人月神话》、《走出软件作坊》、《人件》、高德拉特的《目标》、《观止——微软创建NT和未来的夺命狂奔》、《梦断代码》、《敏捷软件开发——原则、模式与实践》、《重构:改善既有代码的设计》、《代码整洁之道》、《设计模式——可复用面向对象软件的基础》。这些书是我对所有软件工程方向的推荐读物,不是针对PSP的。
计算机组成原理这门课也是考研的课程之一。推荐辅助教材:《Intel微处理器》、《Computer Systems: A Programmer's Perspective》(中文名《深入理解计算机系统》)。这本推荐教材一定要读,不读白学计算机组成原理了。
C++程序设计语言这门课课时太少,基本上什么都没讲明白,主张自学,推荐教材《Accelerated C++》、《The C++ Programming Language》、《The C++ Standard Library: A Tutorial and Reference》(中文名《C++沉思录》)、《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》(中文名《C++编程规范:101条规则、准则与最佳实践》)
大一是我大学生活中最宝贵的时光,也是浪费时间最多的一段时期:P
大二:
上半学期课程:大学英语、马克思主义哲学、数据结构课程设计、概率论与数理统计、软件工程概论、数据结构与算法、Java语言、操作系统、市场营销、IT企业管理、体育、软件开发工具
下半学期课程:数据库课程设计、软件开发过程管理、数据库系统、计算机网络、软件构件与中间件技术、.Net、财务管理、知识产权法、体育、英语口语、面向对象技术与UML、运筹学概论
大二是我自己上的比较混乱的一年,不过好在下半学期专业课比较多,上着还比较有意思。
数据结构与算法我那年是黄院长讲的,讲的#$@%#@!……不过内容都很基础,不知道有什么可推荐的教材,好好看看书就好了,关键还是多练习。数据结构如何实现如果记不住的话,至少要把这个数据结构的特点、什么时候用、有什么优势记住。也就是说,知道有这么个东西,知道什么时候用就好。补充一下,最近看到了《程序员实用算法》,似乎不错(作为一个入门书籍)
概率论是陈桂林老师讲的,这门课也是考研要考的课之一,陈老师讲的挺好的,好好听课,按时做作业就行。
软件工程方面推荐的书籍在上面写PSP的时候就写过了,估计都看完了也就差不多了。
Java语言讲的是够慢的,这个语言比起C++那是简单不少了,直接看看《Java核心技术》第一册就好了,然后去支持Java的OJ平台上做做ACM的题。从思想上讲要从面向过程转向面向对象,这一点是比较困难的,我没法提供好的建议,不过建议多看看上面提到过的《敏捷软件开发——原则、模式与实践》
操作系统当年是孙志刚老师教的,特点就是比较累,但是能学到很多知识,前提是你按照他要求去做。推荐教材《Linux内核完全剖析》、《深入理解计算机系统》、《操作系统概念》。这门课是我觉得最接近MIT公开课水平的一门课了!
市场营销和IT企业管理……我只能说建议留好课件……
软件开发工具讲的是用Eclipse开发网站,这个,你要是不会就去听听,要是会了就算了吧……或者找个教程自学也行我觉得,课时这么长,不如好好讲讲Java高级特性。
数据库系统讲的比较浅的内容,但是也非常难了,建议没事多看看书,反正我觉得挺难的。
计算机网络也是考研课,也挺难,而且非常枯燥,虽然最后考试挺简单的,但是仍然建议好好学、认真学,毕竟以后做的东西跟网络肯定分不开。可能还会涉及到一些通讯原理方面的知识,推荐《数据与计算机通信》,这本书大四上数据与计算机通信的时候还会用。
软件构建与中间件讲的都是中间件技术,可能对遗留系统会比较有意义,再有就是Windows下的COM+组件开发 ,这方面我没有发言权,留给大家补充吧。
.NET讲的就跟Java一样慢,推荐从网站程序入手自学,推荐教材《ASP.NET 第一步》、《ASP.NET揭秘》,推荐社区资源博客园(www.cnblogs.com)。
面向对象与UML是个老奶奶级别的老师讲的,内容非常多,但是讲的可能比较枯燥,不过仍然强烈建议好好听课!讲的非常好的,同样推荐《敏捷软件开发——原则、模式与实践》和《设计模式》。
运筹学还是陈桂林老师讲的,内容也比较浅,有兴趣的同学可以深入学习,推荐教材《数学建模》、《最优化方法》。
大二下学期是我真正开始好好学习的时期,我想说的是,无论什么时候意识到学习的重要性都不晚,只是你需要从此开始投入大量的精力进行学习,你所需要的就是坚持、毅力,成功离你并不远。
大三:
上半学期课程:软件工程课程设计、软件项目管理、软件质量保证与测试、软件能力成熟度模型CMMI、编译原理、用户界面设计、合同法、商务谈判、英语口语、分布式系统、J2EE、面向服务的计算
下半学期课程:综合课程设计、系统分析与设计、计算机图形学、信息检索、算法设计与分析初步、IT企业创业管理、企业资源计划、企业与服务建模、供应链与客户关系管理、服务管理(含IT服务管理)、服务工程综合实践、服务学概论
大三是我印象中最忙碌的一年,现在想来也不知道都忙点什么了= =,好像主要是排课没排好,各种惨……
软件质量保证与测试我觉得是一门挺好的课,但是可能有些人会觉得有些枯燥,我主要考虑的还是自动化测试以及集成自动化、持续测试等等问题,所以觉得比较好玩,有很多值得思考的地方。
CMMI这课上的最惨了,没有能讲这课的老师= =,推荐自学。推荐教材:《基于软件能力成熟度模型(CMM)的软件过程改进:方法与实施》、《CMMI成功项目管理——7个CMMI过程域》
编译原理是一门比较难的课,除了教师推荐的“龙书”(编译原理,买本科教学版就够)以外,还推荐《现代编译原理——c语言描述》、《程序员的自我修养—链接、装载与库》、《程序设计语言:实践之路》
用户界面设计我觉得是非常好的一门课,因为大多数程序员好像都不怎么关心用户界面设计:P其实用户界面的重要性大家都知道,就是觉得有点无从下手的感觉,这门课使得我开始注意、并且追求用户界面设计。
面向服务的计算看起来比较深奥,其实主要还是讲WebService和SOA的,还讲了BPMN工作流等等。老师很牛,不过我上这门课的时候这个老师才讲第一次课……
下半学期可以自己选方向,我选的是服务学方向。多媒体方向比较难但是比较容易通过,嵌入式方向非常惨,又难又不好过工作量也大,服务学方向比较好过,但是工作量也比较大,网络方向不太清楚,据说也不太容易。想要校外实习的同学这时候就应该好好准备了,多看看算法什么的,做做ACM,把C语言的边边角角都看看。
大三好像主要是忙俱乐部的事来着,后来觉得还是留下了很多遗憾╮(╯▽╰)╭
大四:
上半学期课程:数据与计算机通信、搜索引掣技术
下半学期课程:
大四忙着考研,结果还不算理想,不过也还不错。考研比高考还是容易太多了,主要是心理压力要小得多,咱们这个专业找工作难度还是比较低的:D准备考400分的同学最好早早的就复习,天天都往死里拼,要不然还是比较困难的。
尾巴
流水账似的记了这么多,回忆了一下大学四年的学习生活,以此为低年级的同学做一些不靠谱的指引,并且缅怀一下这四年的生活。
附加资源:
资料集中地:
维基百科、谷歌(百度真没法比)、图书馆、知网、万方、博客园、ItEye、CSDN、学院FTP、run.hit.edu.cn、MIT公开课
用户体验:
秋叶的个人博客,http://www.70man.com/
UCD大社区- 以用户为中心的设计,http://ucdchina.com/
数学:
Matrix 67,http://www.matrix67.com/blog/