基础知识 热度 8
计算机相关专业书单
最近看论坛来了很多在校学生,想想自己离开大学11年了,本人05年大学毕业,但是我自己是99年开始学习计算机,整整学了6年,现在和一些在校同学交流的时候发现一个大问题,就是现在的老师,还是和我们当年一样,老师是念书的(老师照着教课书在上面念),学生是听书的(学生就傻傻的听老师把课本上的文字读一遍)。
但是本人的6年计算机专业学习(三年职业高中计算机专业学习,三年大专),有一些心得,今年可以静下心来好好的写一下这书单的事情。分享一下当年的学习经历,因为不能写成经验,是因为不一定是经验,但是经历还是真实一点儿
那些年,我自己学习了很多计算机语言(高中阶段:C语言、QBASIC、foxpro这个语言,即是语言也是数据库,我们高考还是专业毕业考课,汇编,不过汇编对于我们高中生来说,学起来非常难的,那个时候也只能听个似懂非懂的样子,我自己还有学了一点点VC++不过这个在高中阶段,是完全没有看懂的),当然了,我们也已经在高中阶段,学了计算机原理,操作系统相关的理论课,那个时候非常吃力,不过现在看来,也就这么过来了,最有意思的时候,还有经历了学习MS-DOS,100多条命令,刚刚有windows3.0的时候,好像是12还是16张磁盘发行的,当时我们每个同学都有10来张磁盘,非常有意思的,大家把自己手上的磁盘集中起来,然后试着装起来,好像还是装成功了,到了有用到win95的时候,那一个开心
不过当时学校的电脑都是无盘的,装一次,用完,下课后,又得重来了
想想现在的孩子,好幸福呀,我们那个时候为了能摸到计算机,满世界的跑,能看上几眼都不得了,呵可,现在想想,应该是苦还是甜呢?
因为有了高中的基础,到了大学,再来学习,大学的书籍更多,可以接触到更多东西,再经过三年的大学学习,最终自己基本形成了一些知识结构和知识体系,今天有幸能来分享,希望可以帮到各位学子,那就是最大的慰藉
好了,废话少说了,书单开始
计算机科学导论
这个是对于普高进入计算机专业学习的学生来说,有必要好好看一下
具体的书单,我认为,就不写细的,这个可以多看一下,书名差不多的书,因为国内的书,写的得,编的比较多,一般会是一些学者或教授,用一些时间,去整理出来的,说成作者好像不太合适,编者更加准确,为什么要写成编者,因为是书的内容,原创的比较少了,本人这个帖子,每个字,都是自己码的,文笔有限,大家还是可以称我为这帖子的作者
说说为什么要看很多同名书的事情,当时我自己在学习的时候,看书经历告诉我,很多书的编者在编写时,内容也是大致相同,但是都会稍有不同,主要是因为内容来源的关系吧,一般一书的内容,可以分为几个种方式整理出来,一个是同行同名书,一个是同名外文书,加上整理和翻译,再加上编者的一些个人理解,所以有时候同个术语的解释会有一些不同,有一些会抽像一些,有一些会通俗一些,不过我觉得真正理解了的学者,应该要用更加通俗的语言来表达会更加好,特别是导论类的书籍,读者基本上是一些刚入门的学生。
这个就讲到这里面。
关于一些基础课程,就不表了,因为每个学校基本上都会的,那些作为以后考研或者做研究的同学来说,也要花时间好好学一下,要只是以后出来工作,做一个专业的工程师,我不知道能得上多少,呵可
离散数学
这个课,我们因为是专科,课本非常薄,当时学的时候,也觉得没有什么后,因为是一年级就有开课了,不过后来我们在学数据库原理的时候,就发现了一个问题,很多关于理论方面的课程,其实就是学离散数学的时候,就有讲过了,所以大家在一年级时候,开的一些基础理论课不要不重视,基础没有,就对于后面真正的专业课更难了
计算机编程基础
程序设计基础
教材:
1.《Little Scheme》2.《How to Design Program》
程序设计原理
教材:1.《计算机程序设计的构造和解释》英文名称《The Structure and Interpretation of Computer Programming》简称“sicp”江湖上人称“魔法书”
2.《Concepts, Techniques, and Models of Computer Programming》
ps:如果你读sicp不做里面的习题简直就是暴殄天物,浪费了。
推荐MIT的公开课“计算机科学及编程导论”尽管他们用python取代了scheme。
C语言程序设计基础
教材:1.《C语言的科学和艺术》
2.《C程序设计的抽象思维》
3.《C语言程序设计》K&R
4.C语言 谭浩强教授的书,书名 不记得了,一般的学校都会有的
以上书目,有点难的,大家可以看一下,是不是要看!!
进阶教材:
1.《C专家编程》
2.《C语言接口与实现:创建可重用软件的技术》
0.009 汇编语言程序设计
教材:1.《汇编语言》作者:王爽
这可能是本书单中唯一一本中国人写的教材
面向对象程序设计
C++程序设计
教材:
1.《Thining in C++》
2.《C++ Primer》
3.《Effective C++》
4.《深入探索C++对象模型》
ps:C++的经典教材太多了说不定我可以列出20本来,但是初学者还是先打好基础吧。
JAVA程序设计
市面上有很多培训机构的java视频,有些视频讲的真心不错,可以找些看看。
教材:
1.《Thinking in Java》
2.《Effective Java》
3.《Practical Java》
4.《深入理解Java虚拟机》
5.《Java并发编程实践》
计算机核心专业课
数据结构与算法:
教材:
1.算法:C语言实现(第1~4部分) 基础知识、数据结构、排序及搜索
2.算法:C语言实现(第5部分)图算法
或者3.《算法》第四版(java描述)(本书红黑树讲的奇好比CLRS好百倍)
4.《算法引论:一种创造性的方法》(一本被大家忽略的好书,正如序言说的,如果你没时间请直接看第五章)
5.《编程珠玑》
6.《算法概论》 一本不厚的算法书,作者惜墨如金,字字珠玑。对动态规划的讲解非常的棒!
7.《编程之美》一本很好的习题册
算法分析与设计
教材:
1.《算法引论:一种创造性的方法》
2.《算法导论》
程序设计与计算机系统
教材:1.深入理解计算机系统
计算机网络
教材:
1.《Head First Network》
2.《Tcp/IP详解卷一:协议》 这方面的书,非常推荐
3.《计算机网络:自顶向下方法》
操作系统(可以拆分成两门独立的课程)
教材:
1.《现代操作系统》
2.《操作系统:精髓与设计原理》
3.《莱昂氏UNIX源代码分析》
4.《现代体系结构上的UNIX系统--内核程序员的SMP和Caching技术》
5.《计算机系统设计原理》
6.《UNIX编程艺术》
7.《鸟哥的Linux私房菜》make your hands dirty,学一学怎么用操作系统吧,各种名目,shell^_^
听国外读书的朋友讲,学完的之后国外的学生就可以写出一个微型的操作系统内核。
Linux/Unix编程实践:
1.《UNIX环境高级编程》
2.《UNIX编程环境》
3.《Linux/Unix编程实践教材》(这本更适合初学者)
以上书单,只要你以后想从事与编程相关的工作,都要学习的,学的深度与广度,自己适当去把握。
想要从软件工程师,偏纯软件,系统开发(如:mis系统、互联网相关技术研发),下面的书单,注意了
数据库
教材:
1.数据库系统导论
2.数据库系统概念
计算机体系结构
教材:
1.《计算机体系结构:量化研究方法》
软件工程:
1.《人月神话》 本人有读,不过在大学期间,读这本书,有一些不太明白,这个建议就来后,可以再出来翻翻,一定会有新的认识。
2.《代码大全》 这本没有书,可以建议现在还在从事代码和技术开发的朋友看看
3.《UNIX编程艺术》这本没有书,可以建议现在还在从事代码和技术开发的朋友看看
4.《梦断代码》这本没有书,可以建议现在还在从事代码和技术开发的朋友看看
5.《程序员修炼之道:从小工到专家》 这本没有书,可以建议现在还在从事代码和技术开发的朋友看看
数据挖掘与机器学习
数学基础要好,特别是统计学,线性代数可能还需要更高级的随机过程知识
教材:
1.《Machine Learning in Action》
2.《集体智慧编程》
3.推荐斯坦福“机器学习公开课”
4.《统计思维:程序员数学之概率统计》
网络编程:
1.《TCP/IP详解:卷一》 好书
2.《UNIX网络编程(卷1):套接字联网API》好书 要是可以的,可以深入学习,这个对做深入的通信相的技术研发,有很大帮助
3.《UNIX网络编程.卷2:进程间通信(第2版)》
4.《Java并发编程实践》 java的书,建议先把软件工程相关的知识自己完全能理解了,再去学习,会觉得很容易
5.《HTTP权威指南》
编译原理 本科一定会学的,但是专科好像一般学校都不开,本人也没有认真学过,只学了一些皮毛,不过你要是想成为一大系统架构师,这方面的知识一定要很深,这个想学好,也需要时间和功底的,希望还在学校的同学,抽时间翻翻
教材:
1.《编译原理》:江湖上人称“龙书”
2.《编译原理》:江湖上人称“虎书”
3.还有一本江湖上人称“鲸书”的
4.《编程语言实现模式》一本更“practical”的书籍
5.《程序员的自我修养:编译、链接、与库》近年来中国人写的又一好书。
一门优秀的编译原理课程,在学完之后学生就可以做出来一个简单的编译器。在科大的时候我们正好五次实验最终实现了一个简单的编译器。
设计模式:
《设计模式》 这个在我自己上学的时候,没有学过,不过后来出来工作的时候,大量的项目,都需要,就简单的翻了,没有太深入
教材:
1.《大话设计模式》中国人写的不错的书籍,C#描述
2.《深入浅出设计模式》Head first 系列
3.《敏捷软件开发原则:模式与实践》c++/java 描述4.《重构:改善既有代码的设计》
5.《重构与模式》
6.《重构与手册》
7.好了最后看GOF的《设计模式》吧。
最后大家读一读《数学之美》吧,非常棒的一本书。
看完以上书单,做了个工程师,大问题是肯定没有了
其他话题
1.编程语言之争:
很多在校大学生冥茫到底该学习哪门语言,哪门语言更好。其实语言无好坏,“尺有所短寸有所长”。这就好比我问“到底是锤子厉害还是水果刀厉害”,如果是用来削苹果当然是水果刀厉害。如果是用来砸石头当然是锤子厉害。每门编程语言都有自己的应用场景,我的建议如下:
1.学好C语言
2.学一门传统的面向对象语言C++、C#、java都可以,按照自己的喜好来
3.学一门函数式语言,比如schme,F#,common lisp,ML等等。这里我推荐学习scheme,因为“sicp”,“hodp”两本及其优秀的书籍都是用scheme来讲编程思想的
4.学一门动态语言比如pyton,ruby等等。我个人比好喜欢python
现在很多人都会说“编程语言不重要,重要的是思想”,其实我是不完全同意的。深入一门语言编程,但不拘泥于一门语言。
一个好的学院应该会有相关的课程包含这些不同编程范式的语言,比如读研的时候,我在数据挖掘课上学的python,在编译工程课上学的ML,在形式化方法课程学的F#,我们还有一门课时讲授动态语言ruby的。当然了,还有专门的实践课javaee平台,c#.net平台,等等。计算机专业是实践性非常强的学科,没有累计一定的代码量是不行的。10W行,没错,希望大家在本科四年能够累积10W行的代码量。没必要读研了。如果你读了本书单中的大部分书的话。
2.看英文书还是翻译的
大家看我推荐的书单就知道了,我都是写的中文名字。这并不代表我不推荐大家看英文原著。我的观点是,当你进入一个新领域第一本往往得看中文版翻译版的,因为看英文版的有很多术语你看不明白,这样进度会比较慢,打击自信心。反正我是这样的,我学任何陌生领域的第一本书看的都是中文翻译的,以后的书籍基本上就是如果翻译的好就看中文版的,典型的如《unix编程艺术》翻译的就非常好。翻译不好的就看英文版的,比如编译原理课程里面提到的“虎书”的java描述版就翻译的奇差,只能看英文版的。
3.有这些书单就够了吗?
No,学好一门课程需要非常多的动手实践,计算机专业尤其如此。一门优秀的课程往往得配上非常好的实验课程。比如《深入理解计算机系统》这门课的实验就非常的棒,令我印象最深刻的要数“二进制炸弹”了。当时我们大家都在拆弹,拆的不亦乐乎。可见cmu的老师非常用心的设计了这些实验,但是中国的教育呢?
很少有拿的出手的原创课程吧?大学老师们,你们用点心教学生吧!同学们你们用点心学吧。
如果您是工作一族那么读一读用红色标记的部分吧。
last but not the least
书单中尚有漏网之鱼,日后补上。手头还有很多事要忙,就此搁笔。
关于其他专业的书单,其他人也可以补充,或者我再找一些牛人来分享
以上书单,适应于计算机相关专业或与计算机有关的专业,来学习。
如果大家有疑问或者建议可以联系我,也可以加QQ群
Android开发交流群 85642418
物联网技术交流群 499804627
嵌入式技术交流群 511424454