我是2005届的学生,毕业快一年了,对自己的大学生活做简要的回顾,并说明一下自己认为的学习计算机比较重要的课程,并推荐一些好书。
我从大一下学期开始学习计算机,刚开始学习VB(学校的公选课),认真学习了两个月之后,发现学习VB主要是拖放一些按钮控件,没有一点挑战性,学会后,也不能构成自己的核心竞争力,就想学习别的。最后,经一位学长的指点,学习C语言。现在认为VB还是有必要稍微学习一下的,从中可以学习到”桌面软件“的开发方式,更重要的是学习VB那种“事件驱动的编程机制”。
通过由学习VB转向学习C,我感触最深的是:1.需要学习能够构造自己核心竞争力的知识,也就是比较有用,学习的人比较少的知识;2.需要通过老师或别的关系,结识在计算机方面比自己厉害的人,请他们指导自己,大学四年时间有限,这样可以让自己少走些弯路。刚开始学习时,不知道需要重点学习哪些知识,很多知识不知道学。茫然间大学毕业,发现很多重要的计算机课程没有学,以后想继续学,真的很难!
打算学习C语言后,通过联系机电学院的老乡,知道他们开设C语言,就去他们那蹭课(我大学逃课也就是从这个时候开始的)。我去的时候他们已经学习了7章,重点跟他们学习了函数和文件两章,剩下的基本上都是自己看的。学习C语言一阵后,发现做课后的习题非常困难,不知道该如何做。就去记、去背书上的程序,把书上有的经典的程序在本子上抄了很多次,也在计算机上敲了很多次,最后就把这些代码段记住了。以后,很多的程序都可以由这些代码段组合出来。这个时候也报考了C语言二级,大二上学期通过了考试。我认为证书还是有必要考一下子的,这个过程可以让自己学习的更深入一些,强迫自己多学习些知识,还可以通过备考,扩大自己的知识面,刚毕业找工作时,这些证书还是起一定的作用的。
通过学习C语言,对我影响最重要的是熟悉了C语言的指针操作,为以后学习汇编语言打下了基础。通过学习C语言,也为学习C++打下了基础。另外如果公司用C、C++开发软件,很多的错误都是由C语言的指针造成,理解了C语言的各种指针操作,对搞系统软件开发是非常有裨益的。
大一的暑假,我和一位同学没有回家,在学校学习计算机知识。暑假里,葛老师让我们使用我们学院软件小组的电脑学习,为我们创造了一个非常好的学习环境。这期间,主要学习几门课程。1.为了准备C语言二级,把C语言课本课后的习题基本做了一遍。2.自学了C++,这个过程很痛苦,很多东西不懂,把程序一遍遍的敲到计算机中,去记去背,把构造函数、析构函数、拷贝构造函数、继承、多态这些知识看了很多遍,才慢慢的有了感觉,最后基本把C++的基础知识学完了。3.学习了数据库。去图书馆找了本武汉大学出版的《数据库原理》,内容比较的抽象,看不懂。在网上下载了视频,多少明白了一些,但还是有很多的困惑。为了记笔记,把那本书的很多概念都抄了一遍,对一些内容理解了,但还是不理解里面的外模式、模式、内模式以及他们之间的映射等这些概念。
通过暑假的学习及自己现在的感悟认识到学习一门课程是一个漫长的过程。学习一门课程需要反复的学习,比如学习C++时,刚开始学习某个概念没有弄明白,可以先学习后面的内容,学习后面内容的时候可以思考着之前没有搞明白的问题。也可以学习一段C++后,去学习别的计算机课程,等过一段时间后再来学习C++,这样经过反复几次的学习,就可以把C++的基础知识学好学扎实。但现实中,很多人都是学习了一遍C++后,从此就再也不碰C++了,等到毕业找工作时,发现学习的最基本的概念都还给老师了。只有通过反复多次的学习,才能够把一门知识学习的比较扎实,那样知识才是自己的。
大二上学期时,和一位同学在学校的课程表中查了东营校区开设计算机课程的班级,就想去蹭课。这期间学习的课程有:汇编、操作系统、数据结构、计算机网络。1.汇编:我对计算机系统的底层非常的感兴趣,通过学习汇编可以认识到计算机系统底层是如何跑起来的。重点是学习了计算机的8086体系结构、各种寄存器、寻址方式等。学习了这些之后对计算机有了大概的认识。这门课程刚开始学习很难,我也是反反复复看了五六遍,才有了一些认识,但感觉对自己的能力有了很大的提升。2.操作系统:这门课程对做软件开发非常非常的重要,甚至比学习哪门计算机语言更重要。因为计算机语言有很多种,但它们编译后的可执行程序只能利用操作系统才能跑起来。我刚开始学习时,听一位学长说,这门课程非常重要,他感觉他学习了这门语言之后,发现自己明显的上升了一个台阶。我学习了之后,发现确实是这个样子。学习这门课程涉及的知识比较的多,如:汇编语言、C语言、8086体系结构、80X86体系结构、数据结构,但只需对这些课程的知识有大概的了解就行,不需要深入学习。也可以学习操作系统时,遇到相应的问题,再去找相关的书查阅,或者先把学不明白的一点放过去,等将来有了一定的知识储备后再去学习。这门课需要反复多次的学习。3.数据结构:这门课程也是非常非常重要的。刚开始学习时,需要把C语言学好。我蹭课时,只听明白了链表、栈、队列等简单的知识,至于二叉树、树一直没有搞明白,最后上聂老师讲的数据结构时,才学会,聂老师讲的课是非常值得珍惜的。4. 计算机网络:通过学习这门课程,对网络有了大概的认识,为学习TCP/IP协议打下了基础。在学习计算机网络时,我学习了TCP/IP协议,在图书馆找了本台湾出的讲解TCP/IP协议的书,非常的好,比较容易明白,但我还是看了至少两遍才有了大致的理解。通过学习TCP/IP协议,为学习Linux网络编程打下了基础。至于为什么学习TCP/IP协议,是听一位师兄说的,他要不告诉我,我根本不知道去学,但学习之后,发现收获非常的大。TCP/IP协议是网络通信的基础。所以想要学习好,自己必须要有主动性,每个人都有自己能力的天花板,需要别人的指点,不然自己很难达到一定的深度。
大二下学期时,重点学习Linux。至于为什么学习Linux,也是听一位师兄说的,那时他搞过嵌入式开发,用过Linux。他说:“中国没有自己的操作系统,因为Linux是开源的,Linux是中国的机会。”学习Linux前,先要安装Linux,最好用虚拟机安装,网上很多用虚拟机安装的指导,安装上之后,每次登陆时,最好直接进入命令行界面,别进入图形界面,这样不利于自己的学习。这学期重点学习了三门课程:Linux shell脚本编程、Linux系统编程、Linux网络编程,1.Linux shell脚本编程:shell是操作系统的外壳,提供一个操作的界面。shell脚本主要用于各种系统管理。通过学习,对与Linux的交互有了一定的认识。对Linux目录结构、Linux的命令、Linux的基本操作有了一定的认识。2.Linux 系统编程:应用软件通过操作系统提供的接口才能访问操作系统提供的服务,这些接口就是系统调用接口,通过学习Linux系统编程,可以学习操作系统提供的这些接口,也就是学习操作系统向外界提供了哪些服务。通过学习Linux系统编程,对操作系统的理解更深刻了一些。3.Linux 网络编程:两个计算机的通信是通过操作系统提供的网络编程接口完成。通过学习Linux网络编程,可以知道计算机通信的一般原理。
通过学习Linux认识到学习一门课程时,没有必要学习这门课程的所有细节,即不需要记住Linux提供的所有系统编程接口、网络编程接口,只需要了解最主要的系统调用,一般的编程模型,等将来工作中需要时可以再查书。
大二的暑假,我依旧没有回家。我好像没有学习什么知识,只是整天呆在宿舍看电影,这个暑假是彻底的堕落了。还好的是,我大学中大部分时间是利用了起来,没有虚度,不然会后悔终生的。现在我就听到了很多的大学同学说,他们后悔大学没好好学,没有好好的规划自己的未来,但已经晚了。我们上大学时,葛老师对我们说了很多次,让我们好好做职业生涯规划,别把精力浪费在网络游戏上,可是很少有人听。很多同学大学毕业后找不到理想的工作,或者盲目考研,或者大学毕业了之后,对大学四年非常的后悔,就在学校复习一年准备考研,但上大学的时候干嘛去了呢?平时自己困惑时,多找找自己的辅导员老师吧,他们会给自己很多建议,甚至可以通过自己的关系找人帮我们解决问题,而且都是免费的(社会上很多三四天的指导或培训都是五六千呢?!)。我虽然不善于说话,但大学里我找过葛老师很多次,每次同葛老师聊天,我都会学习到很多知识,他会告诉我他的经历和经验、他带过的学生的毕业就业工作状况,让我少走了很多弯路。
大三上学期时,重点学习了软件工程和设计模式、UML。软件工程是跟着陈华老师学的,通过陈华老师的指导,一步步实现了一个小的但五脏俱全的管理软件,理解了软件开发的大致流程,为自己快速的适应工作打下了基础。学习UML可以学习软件的设计架构的表示方式,对自己更深一层的发展及学习面向对象的思想非常有帮助。设计模式是一位师兄告诉我学的,对想成为设计师或架构师是非常重要的。由于设计模式比较抽象,需要在项目中逐渐的锻炼,才能有非常深刻的认识。我当时找了几本书,仔细学习了一下,并整理了每个模式的示例代码,需要反复的学习记忆。这几天,我正在看设计模式,之前已经看多次了,经过很多次的学习和思考,慢慢的有了些理解,还需要结合项目实践,才能掌握好。
大三寒假,我没有回家,假期里重点学习了一本书《Linux 0.11内核完全剖析》。这是一本讲linux 0.11内核如何实现的书。即是讲一个操作系统的实现源码。通过看完这本书,把学习的汇编语言、数据结构、操作系统理论、80X86体系结构都系统了起来。我刚开始学习Linux的时候,就在书店买了这本书,但里面涉及的知识多,很多次想看,都没有能够啃下来。大三寒假时,已经对汇编语言、操作系统理论、80X86体系结构大致了解了之后,才仔细开始看。经过一个寒假的努力,终于理解了里面的大部分知识。感觉自己真正的上了一个台阶。这期间还看了《TCP/IP协议详解 卷二:实现》,将TCP/IP如何实现的书,看了里面的四章,实在看不下去了,至今还没有往下看,打算最近一两年把这本书看完。
大三下学期时,已经铁了心不考研。就为找工作做准备,了解各个软件公司,制作简历。最重要的是确定将来使用哪门计算机语言,当时有两种选择:C++、Java。因为Java功能比较强大,我就开始学习Java,学习一阵之后,发现Java涉及的知识太多,很难把握学习哪些东西。而且考虑到我喜欢系统底层开发,就想重新学习C++。确定学习C++之后,就在当当网上疯狂的买书,只C++方面的,就买了10多本,但我只仔细看了四五本,如《C++ Primer》、《Effective C++》、《深度探索C++对象模型》、《STL 源码剖析》、《C++ Templates》。我们平时学习的C++非常基础,学习完课本后,可以找《Effective C++》、《深度探索C++对象模型》、《STL 源码剖析》、《C++ Templates》这几本好书看看。如果工作中用到C++,那么C++ STL用的非常多,但我们上课时,基本没有学。
这里需要说明的是,学习计算机需要舍得花钱买书,我从大三下学期到现在买书花了四千多块钱。买了很多关于算法、C++、TCP/IP协议、汇编语言、Oracle、SQL、、分布式系统、UML、设计模式、设计架构、项目管理的好书,甚至还买了数据仓库、数据挖掘的书,当然很多的书,我都没有看。但将来总会看的,而且工作中,遇到问题随时都可以找书翻看。但买书也不能向我一样没有目的性,盲目地买。学习一门课程时,就买这门课程的好书,因为好书的结构非常的好,由浅入深,很多概念讲解的非常的浅显,但不好的书,看很多遍不知道怎么回事,这个事情我深有体会。刚开始学习汇编,找了很多本书看,就是看不明白,学习了几次都放弃了,最后听一位师兄说,清华大学出版社出版的王爽编的《汇编语言》非常的好,就买了一本,看了之后,收获非常的大,弄明白了大概怎么回事,对操作系统的认识也深刻了。最近,因为工作需要,需要学习Oracle数据库,在网上下载了几本书,都看不明白,最后在网上查询“学习Oracle的入门好书”,发现有人说,清华大学出版社出版的何明编写的《Oracle DBA基础培训教程》挺好的,就买了本,学习后发现这本书确实非常好,学习完这本书后,再看别的书就容易多了。因此,学习一门课程时,要想知道有哪些好书,可以去问老师、可以上网搜、可以去买书的网站查并看用户的评论。
大三暑假,在学校忙着找工作的事,在智联上投了很多简历。把原来学习的知识,回顾了一下,没有去学习新的知识。
大四上学期时,应聘去一家公司做实习生(暑假里,在智联上向这家公司投了简历)。然后基本整个大四都是在公司做软件开发。在公司里发现C++ STL、操作系统理论、数据结构、Linux/UNIX基本命令非常的重要,工作中就用这些东西(我在公司做UNIX下的C++开发,可能和做ERP或Java的不一样)。
我感觉大学对我影响最大的几件事是:1.葛老师刚开始时给我和另外的一位同学提供了一个非常好的学习环境,后来还指定一位师兄带着我们,使我们得到了很好的指导,为我们以后的学习打下了基础。2.通过跟葛老师多次交流,学会了很多东西,更坚定了走软件开发这条路。3.我认识了三位03级的师兄,没有他们,我的知识面可能非常的窄,很多知识都是他们让我学的。4.有几位志同道合的朋友一块学习,从而使自己不至于那么孤独。5.能够耐得住寂寞。6.从来不打网络游戏!
在公司工作一年半后(2008.10-2010.3),感觉在这个公司很难再学习到更多的知识,就向公司提出了离职,打算去杭州发展。这几天办理离职手续的时候,在智联招聘上更改并刷新了一下自己的简历。华为、摩托罗拉杭州研发中心、同方万维三家公司都通知我去面试。对于华为、摩托罗拉杭州研发中心,我是非常想去的。希望自己能够应聘成功。
到现在为止,我还没有明确的发展方向,但感觉自己一直在成长。脚下的路还有很长,还需要继续努力。
下面我列一下我的大学毕业时的知识结构,并推荐一些好书(有些书是入门好书,有些书需要有基础后再看),如果想知道需要学习哪些知识,也可以去图书馆找本“软件设计师考试”或“系统分析师考试”的书,看看目录就知道了,也可以去看看计算机系开设了哪些计算机课程。
下面是结合我的学习和工作说的,主要考虑做C、C++开发的,没有考虑做Java或.Net的.
基本的知识结构:
1.
计算机语言
汇编语言、C、C++
2.
数据结构
3.
操作系统
操作系统基本理论、Linux shell编程、Linux系统编程、Linux网络编程
4.
计算机网络
计算机网络原理、TCP/IP协议
5.
数据库
数据库基本理论、SQL
6.
软件设计
设计模式、UML、面向对象思想
知识块主要上面6个:
1. 1
、2、3中C、C++、数据结构、操作系统理论是必需学习的,其中的汇编语言、Linux可以选择学习或不学,但Linux最好毕业前有所了解,很多编程工作都会用到。
2.
对于4,可以了解了网络基本的知识后,学习TCP/IP协议,TCP/IP协议是非常重要的。
3.
对于5,数据库是比较独立的,和别的课程关联不大,最好学习一下,工作中,数据库也会涉及到的,毕业前最好对数据库的基本理论和SQL有所了解。
4.
关于6,设计的知识可以了解一下,不是必须的。但如果提前有所了解,在工作中很好的运用,能够使自己走的更远。
以下是推荐的一些书
1. C
语言:
《C语言程序设计》 谭浩强著
2. C++
《易学C++》:
C++
的入门书,这本书我没有看过,但网上评价很好。
网址链接:http://product.dangdang.com/product.aspx?product_id=20223776&ref=search-1-A
《Effective C++》
讲C++使用方式的书
网址链接:http://product.dangdang.com/product.aspx?product_id=9190688&ref=search-1-A
《深度探索C++对象模型》
讲C++底层表示的书,有些难
网址链接:http://product.dangdang.com/product.aspx?product_id=38379&ref=search-1-A
《标准模板库自修教程与参考手册:STL 进行C++编程(第二版)
STL
入门的书,可能网上已经没有卖的了。
网址链接:http://product.dangdang.com/product.aspx?product_id=706699&ref=search-1-A
《STL 源码剖析》
讲STL实现的书
网址链接:http://product.dangdang.com/product.aspx?product_id=7405371&ref=search-1-A
3.
数据结构
《数据结构(C语言版)导教·导学·导考》
这本辅导书挺好的,有很多的例子。
网址链接:http://product.dangdang.com/product.aspx?product_id=8888084&ref=search-0-A
4.
操作系统理论
《操作系统概念 第六版》
这本书很厚,也很好,我前后看了两三遍,需要结合别的课程反复看。
网址链接:http://product.dangdang.com/product.aspx?product_id=8860590&ref=search-1-A
5
.数据库概念或数据库基础理论
《数据库系统概论(第4版)》
王珊,萨师煊 。著这本书是很多学校的教材,网上反映挺好。我没有看过这本书。
网址链接:http://product.dangdang.com/product.aspx?product_id=20148154&ref=search-1-A
6. sql
语言
可以到图书馆找本讲SQL的书,可以稍微了解一下。
7.
汇编语言
《汇编语言(第2版)》
王爽著。这本书讲非常非常的好,学习操作系统前,最好先看看这本书。
网址链接:http://product.dangdang.com/product.aspx?product_id=20196660&ref=search-1-A
8.
计算机网络
《计算机网络(第5版)》
谢希仁著。网上反映挺好。我没有看过这本书。我没有特别的感触。
网址链接:http://product.dangdang.com/product.aspx?product_id=20101953&ref=search-1-A
9. TCP/IP
协议
图书馆中一本台湾出的书,名字我忘了。
《TCP/IP协议详解 卷一》
这本书我是在看过台湾出的那本讲解TCP/IP协议的书后看的,挺好的。
网址链接:http://product.dangdang.com/product.aspx?product_id=436349&ref=search-1-A
《用TCP/IP协议进行网际互联 卷一》
这本书,我也大致的看过,也挺好的。比《TCP/IP协议详解卷一》容易理解些。
网址链接:http://product.dangdang.com/product.aspx?product_id=9265011&ref=search-1-A
10. UNIX & Linux shell
编程
图书馆有很多讲shell的书,可以学习一下。
《UNIX初级教程(第五版)》
这本书讲UNIX的一些基础知识,非常好的一本书。
网址链接:http://product.dangdang.com/product.aspx?product_id=20166485&ref=search-1-A
11. UNIX & Linux
系统编程
图书馆有本薄些的系统编程的书,比较的好。
12. UNIX & Linux
网络编程
图书馆有网络编程的书,可以大致的学习一下。
13.
设计模式
《大话设计模式》
程杰著,这本书非常的好。学习完C++就可以看,对自己编写程序很有帮助。
网址链接:http://product.dangdang.com/product.aspx?product_id=20079096&ref=search-1-A
14. UML
《面向对象技术UML教程》
王少锋著。这本书是原来上课的教材,感觉挺好。
网址链接:http://product.dangdang.com/product.aspx?product_id=8816784&ref=search-1-A
15. Linux 0.11
内核
《Linux 内核完全剖析》
赵炯著。这本书非常好,讲解了一个操作系统的实现。可以视个人兴趣和情况,选择看与不看。如果有能力把这本书看完看懂,能够学习很多东西。
网址链接:http://product.dangdang.com/product.aspx?product_id=9119212&ref=search-1-A