专注全网免费汽车问答资源免费平台

快来看(计算机专业主要学什么)大学计算机专@成都万通未来高级技工学校

发布:147小编11-15分类: 行业前景

华科毕业,阿里Java开发的学长来答一波。

先分享一张网上找的计算机专业大一的课程表:

各个学校的安排可能会有差异,仅做参考

大一主要以通识课程为多,专业课主要是计算机科学导论、C语言。

C语言是计算机专业非常基础的课程,但是学习难度较大,很多人在大一学习的时候掉队,想再赶上是不容易的。

所以你如果想在暑假接触编程语言的话,建议可以从C语言入手,下面这个零基础入门C语言的学习路径可以参考:

下图是我本人总结的计算机专业大一到大四需要重点学习的课程:

大一(上):学好计算机导论。

大一(下):开始学习一门入门语言(大多数高校设置的都是C语言)

大二(上):很多学校会安排学习一门面向对象设计语言(C++或Java),另外开始学习数据结构。数据结构非常重要,不管后面参加ACM竞赛还是找工作还是实际编程都会用到这些基础知识。这个时候已经可以开始关注学校ACM竞赛的一些信息了,可以参与一些培训课程,会贯穿到整个大二大三。

大二(下):专业课程主要是算法设计和计算机组成原理

大三(上):大三开始没有了数学那些基础课程,大多数都是专业课,并且有更多的时间来进行实践。这个时候可以开始参与一些项目(不管是实验室老师的项目也好还是自己去github上找开源项目都OK),也可以出去实习,尽早接触互联网的工作环境,有更深的体感。

大三(下):和大三上区别不大。

大四:课程不多,时间相对更加自由和宽裕。需要保研和考研的可以准备起来了。这段时间可以实习也可以选择自己有兴趣的方向进行深入学习。

计算机专业有哪些课程一定要学好?

(一)学好计算机基础课程

如数据结构与算法、操作系统、编译原理、计算机网络原理等,这些不仅是是计算机基础课程,更是校招中会考察的基本知识,几乎各个大厂面试前2轮面试都会重点关注基础,如果基础不扎实,那么就很难进入后面的面试。

计算机专业的大学生和其他专业通过几个月转行出来的程序员有一个很大的区别就是基础知识差距很大。而这些基础知识的重要性体现在多个方面:

第一个,面试,大厂面试基本都要考基础知识,比如算法。 第二个,更高纬度去发现问题,更能发现问题的本质,更好的解决问题,学习技术也能站在很好的纬度,学习到本质。 第三个,要想接触更高领域的技术,基础知识是一把利剑。

推荐视频课程+书籍结合的方式,千万不要抱着大块头的书从头啃到尾。

看视频课程会比纯看书更生动,更容易理解。

另外这里强烈推荐网上的经典公开课,这些公开课久经考验,有深度,评价非常高。并附有详细的lecture和代码案例。可能一开始会觉得比较难,尤其是国外大学课程,英文讲解,而且通常比国内学校讲的有深度,但是只要坚持,收获还是非常不一样的。

基础课程推荐的视频课程和书籍有:

1、操作系统

①MIT6.268

课程官网:https://pdos.csail.mit.edu/6.828/2018/schedule.html

网友的一些homework实现: https://github.com/SmallPond/MIT6.828_OS/tree/master/xv6-public MIT6.828 是一门公认的硬核课程,一直以来都有很高的知名度,也广受好评,是理论与实践相结合的经典。

建议是在上过学校的OS课,或者阅读过操作系统导论类再来学习这门课。最好在开始之前熟悉C和汇编,也对计算机组成有一定了解。

然后只要你跟着项目一步一步走,做完 6 个实验,就能实现一个简单的操作系统内核。 lab是这门课的重点:

Lab1: C, Assembly, Tools, and Bootstrapping. 熟悉课程使用的工具qemu,C语言,以及汇编。讲解了bootstrapping:从计算机从通电,到开始运行操作系统,这个过程中发生了什么。Lab2: Memory management. 实现虚拟内存,分页机制。Lab3: User-level Environments. 实现进程管理,中断机制(interrupt),系统调用(system call),缺页处理(page fault handling)等。Lab4: Preemptive Multitasking. 实现多CPU的支持,Round-Robin进程调度,Copy-on-Write机制,抢占式多任务(preemptive multitasking), 进程间通信(IPC)。Lab5: File system, spawn, and sh. 实现文件系统,完善sh。Lab6: Networking. 实现网络功能。

②国内哈工大的操作系统实验课 https://github.com/hoverwinter/HIT-OSLab

2、计算机网络

推荐standford课程cs144结合书籍《计算机网络:自顶向下方法》。

课程链接:

https://www.scs.stanford.edu/10au-cs144/

https://cs144.github.io/

书籍选择《计算机网络:自顶向下方法》,豆瓣评分9.3分。

这位知乎大佬 @胡津铭 有一个专栏讲如何自己实现一个TCP,强烈推荐: https://zhuanlan.zhihu.com/p/175998415

如果想找一本简单的入门书籍,推荐《图解TCP/IP》:

实战的话推荐《Wireshark网络分析就这么简单》,可以亲手尝试抓包分析数据报文的信息。

3、数据库

① standford CS145/CS245/CS346逐步递进的学习。

课程链接:

CS145:Introduction to Databases Course Information

https://cs145-fa20.github.io/ http://infolab.stanford.edu/~junyang/cs145/info.html

CS245:Principles of Data-Intensive Systems

https://web.stanford.edu/class/cs245/

CS346:Database System Implementation

https://web.stanford.edu/class/cs346/2015/

②伯克利的数据库导论

https://www2.eecs.berkeley.edu/Courses/CS186/

③CMU的数据库系统

数据库系统设计域实现,涵盖数据模型、存储模型、查询语言、存储架构、事务处理、恢复、并发架构等等,并结合开源和商业数据库给出案例讲解。

https://15445.courses.cs.cmu.edu/fall2020/

④书籍推荐《数据库系统概念》

4、数据结构与算法设计

①MIT 6.006 Introduction to Algorithms

MIT 6.006 是经典的数据结构和算法入门课程,涉及到排序、哈希、图论、动态规划。Lecture非常翔实,伪代码可读性强,在辅以专门的practice,用py实现的。

课程链接: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/

②书籍推荐《算法》

内容全,源码示例多。

比如普林斯顿大学教材使用的就是这本书,然后有配套的教程网站,上面有很多文档和demo: https://algs4.cs.princeton.edu/lectures/

视频: https://www.youtube.com/watch?v=1QZDe28peZk&list=PLRdD1c6QbAqJn0606RlOR6T3yUqFWKwmX

建议通过可视化的方式学习算法和数据结构,能很容易看出其基本原理、各种操作是怎么实现的。

数据结构和算法可视化学习网站这里强烈推荐:

visualgo: https://visualgo.net/zh

Data Structure Visualizations: https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

5、计算机组成原理

国外大学是怎么学习计算机组成原理的- https://www.zhihu.com/question/38838088 http://www.cs.cmu.edu/~213/ http://web.stanford.edu/class/cs107/

关于公开课,更多的可以参考这个github项目,维护了众多推荐的公开课程资源:(star 14K) https://github.com/ForrestKnight/open-source-cs/blob/master/README.md

老外OSSU组织总结的自学计算机学习路径,star 92K: https://github.com/ossu/computer-science

(二)至少精通一门编程语言

应该了解并熟悉8门语言:C、C++、Java、Html、Css、javaScript、Shell、SQL,并且至少要精通一门以上语言。

专业落实到工作应用层面,往往是一门实际应用如移动端(Android/iOS),后端,Web,算法,大数据,AI等等,根据自己的求职方向选择性学习。

比如说你的目标是毕业后找到一份互联网大厂Java后端的工作,你就去看大厂的招聘要求,看自己需要学什么,给自己规划路径。

阿里JAVA研发工程师职位要求

互联网技术岗位方向一般包括但不限于以下几类:

开发类:前端,后端,客户端,基础架构,网络安全,搜索引擎,DBA,全栈等

运维类:网络,运维等

测试类:测试,测试开发

技术研究类:机器学习,大数据/数据分析/数据挖掘,自然语言处理,模式识别,人工智能等

按照现在的市场来讲,Java是现在工业上运用比较多的语言,也是最好找工作的语言之一。其次是C++、Python等。就目前的形式来看,iOS和安卓等移动端开发是比较不好找工作的,但如果你确实很感兴趣,成为了这方面的大佬,那么前景也还是不错的。

学习语言的话,首先多看专业书籍,另外就是多实战,熟能生巧。

以Java为例,Java技术栈的学习路径可以按照下面来安排:

如果是C++,可以按照下面的学习路径:

再来唠叨2句,有些书籍最好不要买,比如21天精通XXX,完全就是割韭菜的。

学习计算机一定不要想着速成,没有什么捷径和超能力。要下苦功夫去啃那些经典书和源码,然后自己动手写,所有技术大佬都是一行行代码敲,一本本书啃出来的。

我看过的书籍里的一部分

我在大学期间,为了把专业学好,看了大量经典的专业书籍,整理了这份计算机必读的高分经典书籍:

需要的戳下面链接下载

这份书单对于CS学习的同学帮助非常大且十分系统,这些书籍的电子版已经整理好了。

需要的直接戳这里领:计算机必看经典书籍(附pdf下载),请注意查收~

那么大厂校招计算机专业学生,到底看重什么呢?

我下面这个回答可以看看:

(三)数学和英语一定要学好

作为一个计算机类科班学生,还会学习高等数学、线性代数、概率论与统计、复变函数、离散数学、图论、数据结构等等众多的数学课。

这些数学课会比较枯燥无味,且难度较大,但是数学基础对计算机类学生来说是比较重要的,尤其是一些决定走科研道路的同学,数学基础会非常非常重要,有时候数学能力会决定你到底能够走多远。

英语就更不用说了,学计算机,英语不行,那基本是废了,毕竟还有很多外文资料等着你去看呢

比如我上面推荐的哪些国外精品课程,其实都对英语功底有要求。

而且还有一些技术书籍,其实翻译很烂的,看原版才得劲。

计算机专业准大一新生的话,我下面这些回答如果感兴趣的话也可以一起看看:

1、计算机专业如何高质量的走完大学四年?毕业成为offer收割机?

2、给计算机大一新生的建议,获得了3000+赞和收藏:

3、关于大学四年的专业课学习规划,我之前写过一个2万+字的回答,非常之详细:

4、阿里老学长的血泪经验贴,看完你肯定会有所收获:

希望本回答能对你有帮助~

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!

欢迎使用手机扫描访问本站