一下三门课程需要认真仔细学习

1. 数据结构

2. 操作系统

3. 体系结构

  • 学习操作系统的目的,不是让你去发明自己操作系统内核,打败 Linux;也不是成为内核开发人员;而是理解操作系统为用户态进程提供了怎样的运行环境,作为程序员应该如何才能充分利用好这个环境,哪些做法是有益的,哪些是做无用功,哪些则是帮倒忙。
  • 学习计算机体系结构的目的,不是让你去设计自己的 CPU(新的 ISA 或微架构),打败 Intel 和 ARM;也不是参与到CPU 设计团队,改进现有的微架构;而是明白现代的处理器的能力与特性(例如流水线、多发射、分支预测、乱序执行等等指令级并行手段,内存局部性与cache,多处理器的内存模型、能见度、重排序等等),在编程的时候通过适当组织代码和数据来发挥 CPU 的效能,避免 pitfalls。

语言

  • 学习一门面向过程语言如c,学习一门面向对象语言如c++,java.
  • 深入理解一门面向对象语言

计算机网络

  • tcp ip详解 1 重点tcp协议
  • tcp ip详解 2只看tcp协议的实现,然后自己实现一个
  • unp掌握网络编程的基本方法,然后实现一个xxI/O内置lua解释器的web服务器,并用benchmark测试它的吞吐量,你可以和当下流行的服务器比较例如nginx ,apache
  • 数据库看数据库系统概念然后去看sqlite这个嵌入式数据库的实现,之所以推荐这个是因为这个数据库很小,只有25k行的代码

软件开发

  • 敏捷软件开发

我推荐的书籍以及项目

  • computer systems a programmer’s perspective 从汇编,到存储器,再到虚拟内存,网络。相当于cs核心课程的一个introduction,看完这本书再来学习操作系统,计算机网络,并行体系结构,数据库等等会很有帮助
  • unix network programming 网络编程入门,讲解网络编程的api,看这本书注意识别有些过时只是或者说现在可能用不到的只是,比如sctp协议基本用不到.
  • advanced programming in the unix environment 学习linux系统下api
  • modern operating systems这本我没有看过,因为当时图书馆看到,很厚而且没讲实现我就没看,不过风评不错
  • operating systems principles and practice 这本书比较新没有中文版,讲解现代操作系统,重点在thread and concurrency上
  • operating systems design and implementation 将操作系统的实现
  • java concurrency in action多线程经典书籍
  • c++ concurrency in action这本书2012年就说要出中文版一直拖到现在,多线程入门书籍讲的很基础。
  • parallel computer architecture 如果以后对并行计算感兴趣可以看看这本书

项目推荐

  • 项目如果的话你可以在 github上面搜索,星越多一般项目质量越好(不过代码量也很大不适宜初学者),都是公开源代码的,你可以用来研究,你大一可以先做做聊天软件,做个文件传输工具,下载器,web服务器等等,可以不用图形界面,强烈建议linux平台下学习,建议看看鸟哥的私房菜入门,就这样,这些完成大学就差不多了,你需要自学学校交不了这么多。会花很长时间,但是你坚持下来一定超过很多在校学生,而且为你以后学习打下坚实的基础。如果说的不对的欢迎评论