我的计算机简史·课程
-张不断 2009年3月
注:计算机系各个专业,从大一到大三,学习的知识基本上是一样的,差不多都是以下课程;因为某门学科的老师不够等原因,各门课程的开课时间有先后之分。
第一学期 大一
《计算机导论》(王玉龙主编电子工业出版社第2版)
学习内容:计算机组成及工作原理,数制与编码,计算机系统硬件与系统结构,计算机系统软件概述,计算机系统的应用
《计算机导论》到底是计算机导论,已经把大学四年要学的专业知识轮廓描绘出来了,只是当时惘然,一边漫不经心的学习高度概括的知识,一边老在想计算机到底要学些什么。
《Visual Basic程序设计简明教程》(龚沛曾主编高等教育出版社第2版)
学习内容:VB的数据类型、变量、常量、表达式和编码规则等语言基础,基本的控制结构(顺序结构,选择结构,循环结构),数组,过程(参数传递,变量、过程的作用域,递归),界面设计(通用对话框,菜单设计,工具栏和状态栏)
像大多数同学一样,进入大学以前,我对电脑几乎没有了解,以为上了大学,会有老师教一些电脑的基本操作知识,没想到一开始学计算机,就跳过这一步(只好自己摸索和向同学们请教了),直接学习VB编程语言了。学的很吃力,老提不上兴趣。老师说过,VB的作用主要是把同学们领进计算机的门,不期待我们会在考完试后会记得多少,所以,考完试后我就不记得多少了。课程结束后,大家都把VB扔了,可到后来学C++语言时,当初把VB学好的同学有着明显的优势。
第二学期 大一
《C++程序设计》(有课程设计)(吴乃陵主编高等教育出版社第2版)
学习内容:C++基础知识(变量和常量,运算符和表达式,数组与字符数组),基本控制结构程序设计(分支结构,循环结构,转向语句),函数(函数的定义与调用、函数的递归调用),类与对象(类与对象的基本概念,构造函数和析构函数,运算符的重载),数组与指针(数组,指针与地址,this指针,字符串),模板与数据结构(模板,排序与查找),继承与多态(继承与派生,虚基数),流类库与输入/输出(标准设备的输入与输出,文件的输入与输出,字符串流)
C++语言是萧老师教的,那个在之前一个学期教过我班《计算机导论》的老师,很惹人讨厌的一个夫子。我班的编程能力在06级计算机三个班中是最差,他有着不可推御的责任。我也没把C++学好,很不可原谅的一件事情。在网络领域里,网络编程有着举足轻重的地位。大学毕业之时,起码要精通C语言、C++语言,Java语言中的一种;这句话,大一大二时,听着没感觉,现在大三来听,才知个中滋味。
第三学期 大二
《计算机电子电路技术——电路与模拟电子部分》(江晓安主编西安电子科技大学出版社)
学习内容:基尔霍夫定律,电阻电路分析(叠加定理,戴维南定理,诺顿定理),动态电路分析(一阶电路的零输入响应、零状态响应、完全响应),正弦稳态电路分析,半导体器件(半导体二极管,BJT的放大原理和电流关系),负反馈放大电路
这门课,严格来说,不属于计算机专业的课程;电路板设计,那是电子专业人员的工作了。但计算机专业人员对电路、半导体有认知总比没认知强。
课本里的很多算法很有意思,我可是玩得不亦乐乎的,正是在这方面玩过火了,所以数据结构学得马马虎虎。
《数据结构(用向对对象方法与C++描述)》(有课程设计)(殷人昆主编清华大学出版社)
学习内容:数组(顺序表,多项式抽象数据类型,字符串),链表(单链表,循环链表,双向链表),栈和队列(顺序栈,链式栈,循环队列,链式队列,优先级队列),递归(递归过程与递归工作栈,广义表),树与森林(二叉树的定义、表示和遍历,堆,森林),集合与搜索(集合及其表示,静态搜索结构,二叉搜索树,AVL树),图(图的存储表示、遍历和连通性,最小生成树,最短路径),排序(插入、交换、选择、归并排序),索引结构与散列(线性索引,m路静态搜索树,B-树,B+树,散列函数)
对一个网络工程师来说,数据结构,是可以学得不太好的。网络工程师就不用考数据结构。但数据结构,作为一种思想,应当参透,这是计算机人员与非计算机人员最本质的区别。
《离散数学》(耿素云主编高等教育出版社修订版)
学习内容:数理逻辑(命题逻辑基本概念,命题逻辑等值演算,命题逻辑的推理理论),集合论(集合代数,二元关系,函数),代数结构(代数系统,半群与群),图论(图的基本概念,欧拉图与哈密顿图,树)
《离散数学》,计算机专业里的数学,逻辑性极强,是一门很锻炼思维的课程。中国学生学了十几年数学的意义在哪里,它的意义就在哪里。图论那部分比较实用,跟数据结构相通。
虽然期末试考得不怎么样,但出于对逻辑的热爱,这门课程我下了很多功夫去啃,无遗憾也。
第四学期 大二
《数字逻辑与数字系统(网络版)》(有课程设计)(白中英主编科学出版社第3版)
学习内容:卡诺图,组合逻辑(竞争冒险,数据选择器、分配器、译码器、编码器、比较器、加法器),时序逻辑(解法器,锁存器,寄存器,计数器),可编程逻辑器件(存储器,可编程逻辑陈列,通用陈列逻辑),ispLSI器件的结构,ABEL-HDL语言及程序设计,数字系统(基本子系统,数据通路,微程序控制器的设计)
这是硬件知识的入门课,一个字——难。课堂上郑老师爱讲题外话,我也就跟着她在课本知识之外漫游。有的课程真的是要在课前预习的,比如这一门,我课前一般没预习,所以得课后狠狠的补习,而且是事倍功半的效果。但到底没把这门课程啃透,以后学习《计算机组成原理》和《微型计算机》时,许多时候都是不知所云。
《汇编语言程序设计教程》(罗省贤主编电子工业出版社)
学习内容:Intel 8086/8088的基本结构,8086/8088的寻址方式和指令系统(数据传送指令,算术运算指令,逻辑运算和移位指令,串操作指令),汇编语言与汇编程序(汇编语言语句格式、分类和表达式,伪指令,宏指令)
06计是幸运的,汇编语言遇着了唐老师。我班跟06软都是王老师教的,虽然王老师是个大才(很欣赏他课间抽烟的样子,颇有毛泽东风范,那些没本事的烟鬼学不来),但他不善于表达,而且,给我们的定位也不对。他一开始就跟我们说,汇编很难,有兴趣的就钻,没兴趣的大可以不学,期末考试一般都会过(背答案的那种)。我们两个班都没把汇编学好,这是个极具杀伤力的错误。我现在回头补,可时间很难挤,学习速度比蜗牛爬行还慢。惭愧!
硬件太难了,所以,惠州学院这样的二流大学都不敢望津,力量都放在掊养软件人才上。然而,在计算机里,越高层的人物,越是搞底层开发的人才。汇编语言作为计算机的硬件语言,而且几乎是唯一的语言,它在计算机领域里可谓位高权重。
《数据库系统概论》(有课程设计)(萨师煊主编高等教育出版社第4版)
学习内容:数据模型,数据库系统结构,关系数据库(关系操作、完整性、代数、演算)SQL语言(数年据定义、查询、更新、视图),数据库安全性(用户标识与鉴别,授权与回收,数据加密),规范化、范式、数据库设计(需求分析,概念结构设计,逻辑结构设计E-R图,物理设计)
现在大一中文系、外语系都要学Access,数据库的意义就不言而喻了。计算机系学的当然要深很多,我这06级《数据库系统概论》要用到的开发工具是SQL Server2000。SQL语言比起汇编语言、编程语言,要简单的多、有趣得多,但要建一个数据库系统,可得花耗大量的时间和心血,课程设计很多同学都做不来,都是抄袭别人的。
第五学期 大三
《计算机网络》(谢希仁主编电子工业出版社第5版)
学习内容:计算机网络体系结构,物理层(接口与介质的物理特性,数据速率,线路匹配,物理拓扑结构,传输方式),数据链路层(成帧,物理寻址,流量控制,差错控制,访问控制),网络层(逻辑寻址,路由选择),运输层(服务点寻址,分段和组装,连接控制,流量控制,差错控制),表示层(翻译,加密解密,压缩解压),应用层(网络虚拟终端,文件传输,万维网,电子邮件,域名系统,动态主机配置协议),网络安全(数字签名,密钥分配,防火墙)
《计算机网络》一书,学的全是概念,需要反反复复的阅读(看相关的参考书),才能很好的理解和吸收。实用的知识是没有的,学了跟没学的人一样,但没有这里的知识作为储备,根本没法在计算机这条道上走下去。网络协议,搞网络的人固然要把它融进血液里,搞硬件、搞软件的人也要把它啃透。在这个网络时代,没有网络功能,任何硬件软件工程都只是空头支票。
很幸运,网络老师是校的网络主任、惠州通信领域的一个风云人物,课也讲得很好,出于对老师的景仰,再加上我在第4学期就已经开始自学了部分知识,这门课学得特别起劲,不敢说学得有多好,但确实比大多数同学深入。
《计算机操作系统》(汤子瀛主编西安电子科技大学出版社)
学习内容:进程管理(进程的控制、同步、通信,线程),处理机调度与死锁(调度的概念和算法,实时调度,产生死锁的原因和必要条件,预防死锁的方法——银行家算法),存储器管理(连续分配方式,分页、分段、请求分页、请求分段存储器管理方式,虚拟存储器),设备管理(I/O控制方式,缓冲管理,设备分配和处理,磁盘存储器管理),文件管理(文件的逻辑结构和存储空间管理,目录管理),UNIX系统内核结构(用Linux系统做实验)
这门课程,除了概念,就是算法,难度颇大。我班和06软上学期一同学这门课,最后,我班挂了8人,06软挂了16人,(06计这学期学,都是刘老师教,他们班强,应该不会挂这么多人)。我对这门课还是蛮感兴趣的,经常像读英语一样朗读课本,读书百遍其义自见。至于算法,去图书馆借些习题来大战几个回合,会发现,就比起高中数学,它简单得多啦。每种算法都很独立,没有错综复杂的晕头转向。
这门课程的要求不高,只是达到理解的程度。要真正学透操作系统,得付出很高的代价。那四个很简单的实验就够我们头痛的了。
《计算机组成原理》(白中英主编科学出版社第3版)
学习内容:运算方法(定点加减,定点乘除),存储系统(随机读写存储器,cache存储器,虚拟存储器,存储保护),指令系统(指令格式,指令和数据的寻址方式,堆栈寻址方式),中央处理器(CPU的功能和组成,指令周期,时序产生器和控制方式,微程序控制器,传统、流水、RISC CPU),总线系统(总线接口,总线的仲裁、定时和数据传送模式,PCI总线),外围设备(带过),输入输出系统(程序中断方式,DMA方式,通道方式)
计算机组成原理属于硬件范畴,出了名的难学的课程,几乎每一节课都听得糊里糊涂的,许多时候都在打瞌睡(对不住自己了!)。麦老师说,听不懂是正常,都听得懂的话,可以去清华深造了。期末考试,老师也说了,试题要是不出得简单一些,恐怕没人能过。
《计算机数值计算方法及程序设计》(周煦主编机械工业出版社)
学习内容:误差,拉格朗日插值,分段插值,梯形积分,抛物积分,龙贝格积分,龙格-库塔法,二分法,迭代法,高斯消去法
这门课程的意义在于知道数学在编程里的应用。
上课一般听不懂,我是课后花时间来学习的,毕竟对算法比较感兴趣。一周上三节课,上了12周,有5周做实验,实验是照抄老师给的代码就可以运行、过关的,没几人是真正了解的,三分之二以上的同学是到了考试前两星期才知道课本的内容的。试题老师早已透露得七七八八,主要考计算,要用到计算器,都是些小数点后面五、六位的数的加减乘除,试后,几乎所有同学都说死定了。成绩出来后,有一个同学挂了,没办法,考得实在太低分了,老师终于无法实现他的“100%”通过率的梦想。
《计算机专业英语教程》
讲的课不多。考试前老师已经说了考试的内容。考试时有同学在老师眼皮底下相互抄答案,监考老师当没看到。
计算机英语,我英语功底好,又是感兴趣,所以一直在学习。数年之后,相信它会成为我强有力的助推器。
《Oracle 10g 入门与实践》
讲给我们上课的陈老师也是刚学Oracle数据库,很多实际操作他自己都不懂,所以教得很没劲,同学们学得更没劲。一学期下来,都没几人在自己的电脑上安装Oracle10g来实践,实验课也只是走一下过场。身为学习委员,我有责任在身,所以学得比较踏实。
《多媒体技术基础》
学习内容:多媒体技术概要,数字声音及MIDI简介,无损数据压缩(LZW算法),小波与小波变换,错误检测和校正
专业选修课。老师没要求大家学,大学也没兴趣学,考试是开卷的,实验做了等于没做,一学期下来,只会了个LZW算法。
第六学期 大三
《计算机网络工程》(清华大学出版社)
学习内容:以太网,(10M、100M、1G以太网,以太网的交换技术,虚拟局域网),广域网和网络接入(公用数据网,帧中继,ATM技术),网络的互联(网络互联协议,路由器,第三层交换技术,虚拟专用网),网络服务的建立,网络管理,网络安全技术,网络的规划和实施
这门课由上学期教我们《计算机网络》的蔡老师教,这是全班同学共同的心愿,美中不足的是,一周只有两节课。太少了。还是得靠自己。
我现在是有很有兴趣看网络方面的书籍的,虽然很多书还是看不懂,也不急,慢慢来,关键在于持之以恒的反复学习。
《软件工程导论》(清华大学出版社 第5版)
学习内容:可行性研究,需求分析,形式化说明技术,总体设计,详细设计,实现。
一开始上课,老师就布置了要做一个学期的课程设计,最终的报告大概是一份四五十页的word文档,好大一个工程,这使我们对这门课一下子就有了敬而远之的感觉。
《微型计算机技术及应用》(清华大学出版社 第4版)
学习内容:16位和32位微处理器,Pentium的指令系统,存储器、存储管理和高速缓存技术,微型计算机和外设的数据传输,串并行通信和接口技术,中断控制器
终于遇着了传说中的唐老师。学识渊博,思想独到,果然是个人物。更重要的是,他抓得紧,管理严,几乎节节课点到。只恨我没把汇编语言和计算机组成原理学好,底子薄,无法向这位大师提问题、听他论道。
《Linux教程》(孟庆昌主编 电子工业出版社 第2版)
学习内容:Linux基本命令,正则表达式,文本编辑,shell初步编程,参数传递,网络配置
课时太少,根本就学不了什么东西。教这门课的曾老师建议,实在没兴趣,就不用学,知道一些命令是怎么回事就行了,考试都会通过的。但毫无疑问,Uinux、Linux系统在许多网络公司核心网络里有着广泛的应用,并且由于它们的强安全性稳定性,得到了越来越多的重视。
我对Linux系统是挺感兴趣的,而且,幸运地,今年回家过年时,五叔把他以前用过的笔记本电脑给了我,很古老的东芝手提,性能很差,但用来运行Linux系统还是可以的,这倒方便了我的学习,所以,有些时候,会伏或坐在床上玩Linux,不停地敲命令。
《网络编程》
学习内容:面向套接字编程,面向Socket编程,面向UDP的服务器端和客户端设计,基于TCP/IP编程,组播编程
由于上机实验的需要,现在得花时间去学习很热门但从未接触过的Java语言。学习任务之重,可想而知。
《Internet技术与应用》
学习内容:DHCP、DNS、Web、FTP、电子邮件服务器的组建与安全管理
实践性很强的一门课程,学好了,就已经有资格做一些网络管理的工作了。