想什么呢,当然不是!!!
今年刚从 985 研究生毕业,本科计算机科学与技术,在计算机专业呆了 7 年,自认为还比较懂。
其实对于计算机专业科班学生来说,想学习计算机科学与技术,我感觉做好两点就够了:
掌握一门扎实的编程语言。编程语言是工具,是我们吃饭的家伙什。掌握是啥,是熟悉,不是了解就行。
扎实的计算机基础知识。计算机基础知识重要的基本上就是“数据结构与算法”“计算机组成原理”“操作系统”“计算机网络”“数据库”。
其实总而言之,对于学习计算机专业,技术才是最重要的。
当然也要多读点计算机的专业书籍,为了节省大家找的时间,我已经做了整理:
毕竟在计算机专业呆了够久,后来总结了几条经验,读研究生的时候无数次在想,如果我在大学的时候就懂得这些,大学会更起飞:
学会自学。大学的自由时间一大把,只靠上课听讲远远不够,上课你不睡觉我都算你是条好汉,你是大学生了,不能只低头拉车,更要抬头看路!掌握一门编程语言好嘛。这个是必须,根据自己的规划,无论是选择 Java、C++、Python 都行,无论你以后是不是用这门语言,这都是你找工作的敲门砖。没事的时候多敲点代码。当个熟练工,才能显得你牛x,有机会跟着学校的老师或者进入到实验室做项目,一定要坚决跪舔,要跟着学习跟着做。学好数据结构、操作系统、计算机网络、计算机组成原理、数据库这些基础课程。以后不管你是走考研这条路还是面试找工作全都用的上!学好这些,走到哪里都不怕。大学的自由时间一大把,只靠上课听讲远远不够。
上课你不睡觉我都算你是条好汉,主要上大学,是大学生了,不能只低头拉车,更要抬头看路!
其实还有一点就是,对于你大学的不同规划,努力的方向也是不一样的!
我觉得计算机的新生,尽快在上大学的初期,想明白自己之后想要干啥。
认真思考未来,这个动作越早做越好,毕竟目标导向。
最好及早决定自己是要毕业直接工作还是要考研,因为虽然在学习内容上相差不大,但是重点努力的方向还是不同的。
1. 毕业直接工作
着重就业,那你的大一大二就玩命学,之后大三找机会进大厂实习,为你之后毕业找一个薪资炸的工作打下基础。
玩命学不是瞎学,把握住两方面就好了:
玩转一门编程语言:c++、Java、Python 都行。计算机基础学好玩转一门编程语言,玩转是啥,是熟悉,不是了解就行。
最好能做点工程项目,如果有机会进实验室跟着老师或者有额外的机会做点东西都行。
没有就自己去问,我不信个计算机专业没这个。
学校资源要用好。
实在没有,那就多刷题练感觉,刷题是啥,后面会说到。
校招来说,计算机基础重要的就这么几门:数据结构与算法、计算机组成原理、操作系统、计算机网络、数据库这几门。
你要找工作的话,首先保证数据结构与算法学的顶呱呱。
在这个基础上,多刷题,按照分类按照专题刷。
刷题上 LeetCode 上刷就好。
可以看下这个前字节大佬的刷题笔记:
针对 LeetCode,题的解法有很多,我们往往追求的是最优解,这里有一份清华学长整理的 LeetCode 最优解,强烈推荐:
两者配合起来应该非常舒爽。
除了数据结构的其余的课程的话,上课认真听,下课多琢磨,可能很多东西抽象懵懂,没事,你要你认真学了,认真琢磨了,你就超过 90% 的人了。
2.考研
着重考研的话,学习的内容和“着重就业”学习的差不多,但是就是不用玩命,平稳的学就好。
编程语言的话,那 C 语言好好学一下。
其余的计算机基础课程,还是那些,都好好学。
考研看学校的,不同学校的计算机考研课程不同。
有的考 408,有的只考数据结构算法,但这些都不是问题,你只要这些课都在你的学习之时学好,都不成问题。
除了编程语言和计算机基础课程外,你想考研,还要把数学(高数、现代、概率论)、英语、政治学好,这些都要考。
呃,政治的话就上课好好听就好了,反正到时候还是得背的,问题不大。
还有就是,最好大一大二能参加个竞赛,拿个有点分量的奖,还有像什么奖学金啦这种能争就争,对考研复试有好处。
下面我来具体说一下学习路线!!!
都是很干的干货,麻烦动动小手帮我
点赞,么么哒。一、计算机导论
计算机专业导论是面向非计算机专业人员和学生介绍计算机基础知识的计算机基础教程。
内容涉及计算机应用,Internet,与计算机交互,音频、视频和打印,数据处理,存储数据,操作系统,应用软件,网络,在线世界,数据库管理,信息系统,软件编程和开发,以及计算机安全等内容。
其实算个科普教程,上大学的第一门课,这门课能不能学好完全看老师讲的好不好。
我就很幸运,不知道是不是因为是实验班,当时给我们上这门课的是我们院长,造导弹的间隙来给我们上个课,讲的非常风趣幽默,无愧大佬。
作为一个计算机小白,真正从那一刻开始觉得:诶,计算机不错呦。
呃,如果你的老师只是个讲 PPT,听的云里雾里的。
不慌,我来给你推荐门课:《计算机科学速成课》,通过图文并茂生动形象的介绍计算机的基础知识。
关于这个我写过一篇文章:B站收藏 6.1w+!GitHub 标星 3.9k+!这门神课拯救了我薄弱的计算机基础
在这我简单摘要一下:
一共 40 集,都是英文的可能对英语不好的同学来说难度太大,但是不要慌,国内一些爱好者早已经把它们翻译成中文。
这门 40 集的课真的包含了超多的基础知识:
1 – 早期的计算 – Early Computing
2 – 电子计算 – Electronic Computing
3 – 布尔逻辑与逻辑电路– Boolean Logic & Logic Gates
4 – 二进制 – Representing Numbers and Letters with Binary
5 – 算术逻辑单元 – How Computers Calculate – the ALU
6 – 寄存器 & 内存 – Registers and RAM
7 – 中央处理器– The Central Processing Unit(CPU)
8 – 指令和程序 – Instructions & Programs
9 – 高级 CPU 设计 – Advanced CPU Designs
10 – 编程史话 – Early Programming
11 – 编程语言 – The First Programming Languages
12 – 编程原理:语句和函数 – Programming Basics: Statements & Functions
13 – 算法初步 – Intro to Algorithms
14 – 数据结构 – Data Structures
15 – 阿兰·图灵– Alan Turing
16 – 软件工程 – Software Engineering
17 – 集成电路、摩尔定律– Integrated Circuits & Moore’s Law
18 – 操作系统 – Operating Systems
19 – 内存 & 储存介质 – Memory & Storage
20 – 文件系统 – Files & File Systems
21 – 压缩 – Compression
22 – 命令行界面 – Keyboards & Command Line Interfaces
23 – 屏幕 & 2D 图形显示 – Screens & 2D Graphics
24 – 冷战和消费主义 – The Cold War and Consumerism
25 – 个人计算机革命 – The Personal Computer Revolution
26 – 图形用户界面 – Graphical User Interfaces
27 – 3D 图形 – 3D Graphics
28 – 计算机网络– Computer Networks
29 – 互联网 – The Internet
30 – 万维网– The World Wide Web
31 – 网络安全 – Cybersecurity
32 – 黑客与攻击 – Hackers & Cyber Attacks
33 – 加密 – Cryptography
34 – 机器学习与人工智能 – Machine Learning & Artificial Intelligence
35 – 计算机视觉 – Computer Vision
36 – 自然语言处理– Natural Language Processing
37 – 机器人 – Robots
38 – 计算机中的心理学 – Psychology of Computing
39 – 教育型科技 – Educational Technology
40 – (完结) 奇点,天网,计算机的未来 – The Singularity, Skynet, and the Future of Computing像计算机的早期历史、编程的发展史,到二进制、指令和程序,到算法入门、数据结构,甚至是计算机安全、黑客、加密、机器学习 & 人工智能、计算机视觉、自然语言处理、机器人等等等等都有涉及,感兴趣的可以看下,链接在下面:
如此良心的一门课,如此贴心的翻译团队,真的强烈建议大家一定要好好看,沉下心来,认认真真的每天学一点,你会发现真的很不一样,有时候改变和成长就是这么潜移默化的进行。
二、C 语言
计算机科班的同学,不出意外,进入编程世界的第一门的语言学的肯定是 C 语言了。
其他立志做技术行的同学,从 C 语言入门百利无害。
很多人都觉得 C 语言入门难,不能像 Python 这种编程语言一样快速获得成就感。
为啥现在还有这么多技术大佬建议学一下 C 语言呢?
因为 C 语言是一门面向过程的语言,运行速度极快,是计算机产业的核心语言,像操作系统、硬件驱动、数据库这些都离不开 C 语言。不学 C 语言,就很难深入了解计算机底层的运行机制。
现在常见的高级语言的底层几乎都是 C 语言实现的。
在大学的时候搞 ACM,用过三年的 C 语言,自认为比较熟悉,给大家总结一下 C 语言的学习路线。
我写过关于 C 语言得学习路线,下面我给大家摘要一些重要得内容。
C 语言的学习其实就三个阶段就好了:
(1) 入门阶段
这个阶段学习 C 语言的基础语法知识。
目标是可以开发一些简单的控制台小程序。
(2) 提高阶段
这个阶段学习 C 语言自带的库函数,形成 C 语言的基本知识框架。
目标是开发一些基本的应用程序。
(3) 应用阶段
这个是实战阶段,要具备一定的综合性应用软件开发能力。
目标是能够开发像贪吃蛇、图书管理系统、学生信息管理系统等项目。
入门阶段
1.视频推荐
此时同学们应该是小白阶段。
对于小白来说,不建议上来就看书,因为干看看不懂,容易劝退。
可以先从视频教程开始。
C 语言的视频教程我只推荐一人:浙江大学翁恺老师的 C 语言课,yyds!
是一个课程质量非常棒,讲课幽默,深入浅出的课程,非常容易理解!
当时学 C 语言的时候,自己还是个从来没接触过编程的菜鸡,当时的学习全靠翁恺老师了!
不多说,看过的都知道。翁恺老师的课是在 MOOC 上开的。
主要分两门:
第一门是面向高考结束想提前自学一些编程的或者是刚开始学习的大一新生,叫《程序设计入门-C语言》,涵盖了主要的 C 语言知识点。完成本课程之后,就能具有初步的运用C语言编写程序的能力。
2.第二门是《C语言程序设计进阶》,这门课就是要告诉你C语言到底有哪些独特的地方,为什么能长期占据15%上下的编程语言份额。这门课同样也是带你项目实操,和设计入门搭配使用,效果翻倍。
2.书籍推荐
我姑且认为现在题主有了一点基础,可以能配合视频看书了。
《啊哈 C语言》
这本书是为计算机纯小白量身打造。
风格幽默,生动形象,通俗易懂,读起来令人耳目一新,对入门小白培养兴趣的帮助很大。
在语言艺术这方面,是登峰造极,让人不得不佩服作者的才华和用心。
只不过内容并不深入,真的是对零基础,大佬绕路。
语法全覆盖,细节多,知识点讲的清楚,但是内容极多,是本大部头,容易劝退。如果你觉得入门差不多,可以啃一下。
现在是第六版了,书的封面啥的都换了,内容也更贴合现在的需求。
一共17章:
第1、2章介绍了C语言编程的预备知识。第3~15章详细讲解了C语言的相关知识。第16章、17章介绍C预处理器、C库和高级数据表示。书籍地址:
提高阶段
1.书籍推荐
《C 和指针》
指针和指针操作一直是c语言中的重点和难点,反正我当时学到这里的时候,就很头疼。
这本书是 C 指针的经点之作,通过对指针的基础知识和高级特性的探讨,来让我们学会把指针的强大功能融入到自己的程序中去。
但是这本书不只是指针,更是一本很棒的 C 语言入门书,提供和C语言相关的全面资源,还有比较深入的讨论,让你形成一个正确的c语言观。
《C 专家编程》
任何人都可以享受编程,编程应该是一项精妙绝伦、充满生机、富有挑战的活动,而讲述编程的书籍也应时时迸射出激情的火花。
这本书展示了最优秀的 C 程序员所使用的编码技巧,还对 C++的基础知识进行了介绍。
书里关于 C 的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习 C++ 这些内容进行了细致的讲解和深入的分析。
差不多对几十个实例进行讲解,生动有趣,对 C 程序员具有非常高的实用价值。
《C 陷阱与缺陷》
任何人都可以享受编程,编程应该是一项精妙绝伦、充满生机、富有挑战的活动,而讲述编程的书籍也应时时迸射出激情的火花。
这本书展示了最优秀的 C 程序员所使用的编码技巧,还对 C++的基础知识进行了介绍。
书里关于 C 的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习 C++ 这些内容进行了细致的讲解和深入的分析。
差不多对几十个实例进行讲解,生动有趣,对 C 程序员具有非常高的实用价值。
书籍地址:
应用阶段
学编程除了理论外,更重要的是要应用,应用很好理解,前期多敲代码,之后慢慢去升华。
其实编程语言就是要多练,怎么多练,就是代码量。
自己多写,然后多观摩别人的项目,看人家的写法,模仿项目,学习其中的思想,一点点的积累,一步步形成自己的东西,厚积而薄发,慢慢你就会发现你也可以了。
1、C语言制作斗地主发牌器
通过本项目的学习,可以让学员掌握一些棋牌类的手机游戏中的发牌系统算法怎么编写,为学员就业后编写一些小的游戏类APP打下良好的基础。
传送门:C语言:斗地主的发牌器 – 网易云课堂、2、C语言实现通讯录/图书管理
这个课程将使用 C 语言完成一个简单的通讯录。会涉及到结构体、数组、链表等重要概念,需要对 C 语言有一定的了解。
地址:C 语言实现通讯录_C – 蓝桥云课3、C语言实现2048小游戏
2048是之前十分火爆的一款益智游戏,这个课程将使用 C 语言完成一个2048游戏。适合对C语言有一定基础,需要了解C语言,以及绘图库ncurses的实用。大大提高你的动手能力。
地址:C 语言实现 2048 游戏_C4、Tinyhttpd(7.3k+ star)
一个不到 500 行的超轻量型 HTTP Server,可以用来理解服务器程序的原理和本质。
C语言 的入门级项目!
传送门:https://github.com/EZLippi/Tiny5、db_tutorial(5.9k+ star)
用 C 从零创建一个简单的数据库。
传送门:https://github.com/cstack/db_tu三、计算机基础
计算机基础一定要好好学,不管以后面试找工作还是保研、考研都很有用。
我写过关于计算机基础得学习路线,跟着整没问题!
主要内容是下面这几门:
数据结构与算法计算机组成原理操作系统计算机网络数据库数据结构与算法
程序 = 数据结构 + 算法。
数据结构经常与算法放在一起,在有些高校,会存在“数据结构”和“算法设计与分析”这样两门课。
这就造成很多同学懵圈,数据结构与算法有什么区别?甚至有些同学认为这就是一种。
其实吧:
数据结构主要讲解数据的组织形式。就是我们要怎样把这些数据存储起来,所以有数组、链表、栈、队列、树、图,这是数据结构的重点。算法,则注重的是思想。比如数组里的元素怎么排序、怎么找到最大的数和最小的数等等。说白了就是解决现实中问题的思想。所以才会有贪心、动态规划等这些算法。【数据结构】
数组(Array)链表(Linked List)栈(Stack)队列(Queue)散列表(Hash table)堆(Heap)树(Tree)图(Graph)【操作数据结构】
查找插入删除修改排序【算法】
学习算法的套路很简单,多看、多写、多上机。
回溯算法分治算法枚举算法贪心算法动态规划查找算法
二分查找散列表查找树结构查找字符串匹配
暴力匹配KMP算法10大排序算法
冒泡排序选择排序插入排序希尔排序归并排序堆排序快速排序计数排序基数排序桶排序计算机组成原理
计算机组成原理,即“计算机”“组成”的“原理”。
我觉得它是所有计算机基础课程中最难学的一门课,整个课程的核心就是使用数字逻辑电路和触发器搭建一个可以运行汇编指令的机器。
操作系统
无论你学习什么语言,都避免不了和操作系统打交道。所有语言的最后执行,都是靠操作系统。
比如你学习 Java,用到多线程技术,实际上操作系统才是负责管理进程和线程的。
不懂操作系统,你在未来学习编程语言的高级特性,涉及到线程进程调度,内存分配,或者是学习 Linux 相关的知识时,都会一头雾水。
只有学会了操作系统,才能够更好地学习其他语言和技术。
所以,操作系统是程序员进阶必会的知识。
计算机网络
计算机网络的相关知识在工作时使用的频率较多的。
学习计算机网络,你需要懂得Socket编程,知道TCP/IP网络模型,了解OSI七层网络架构,知道一个数据包是如何层层包装,再层层拆包,从客户端发送到服务端。
但是计算机网络好学的多,因为计算机网络不抽象,在现实生活中,都能找的到例子。
数据库
数据库就是存储数据的地方,但也不只是这么简单。
学习数据库,不仅要懂得SQL语句,表设计结构这些基础部分,还要懂索引、慢查询优化,配置参数调优。
再深入点儿还要学习SQL优化、备份与恢复、架构优化等等进阶内容。
四、新编程语言学习
我选的是 Python,那这里我就来说下 Python 的学习路线。
快速了解 Python
我们学任何东西学习之前,肯定要先快速的了解它是什么,大概做到心中有数,帮我们初步判断一下这个是不是想进一步学习的东西,帮助消解一下面对未知时的恐惧。
这里大家可以看一下GitHub上的这个项目,可以让你在短短几分钟之内了解一门技术:
Python 视频推荐
不管是零基础学习 Python 或者其他的编程语言,在刚开始的时候还是建议视频为主,书籍为辅。
毕竟啥也不了解,直接上来就看书,立马从开始到放弃。
Python 视频推荐
【Python 基础】
1、[小甲鱼]零基础入门学习Python
我大二的时候有一段时间想转去 Python,当时也没买书,就想先了解一下,不知道怎么就搜到了小甲鱼的论坛,当时跟着他的视频学过一段时间,觉得讲的挺有意思,还专门去他网站冲了个永久的会员,好像一百多来着,后面好像再也没登陆过…
后来看到小甲鱼的这门课在 B 站上已经 1500w+ 的播放量,搜索排名第一(不过第一的那个应该别人发的,他们自己的账号是200w+播放)。
这个课程看起来有点老了,但是内容差别不大,后来又搜了一下,他们又录制了最新版的《零基础入门学习 Python》,现在是更新到了序列,觉得不错的小伙伴可以追一下,对新手还是比较友好的。
旧版传送门:https://www.bilibili.com/video/av27789609新版传送门:https://www.bilibili.com/video/av520806982、微软 Python 入门课程
这是微软放出的一门免费的 Python 教程,名字叫 Python for Beginners,专为初学者打造,一共有 44 个视频,每个视频的时长大概在 2-6 分钟之间,只有极少数的几个时间在 10 分钟以上。
整个课程由两位讲师共同讲解,分别是微软高级项目经理Christopher Harrison和微软的 AI Gaming 开发经理 Susan Ibach,英文配中文字幕,食用起来极佳,同时课程的示例代码和 PPT 微软也同步到了GitHub 上,只能一句卧槽走天下了…
如果你觉得这个教程不错,学完了基础可以看一下后续的微软官方的进阶教程,其实也是基础语言的一部分。
传送门:https://www.bilibili.com/video/BV1nE41127zQ代码&PPT传送门:https://github.com/microsoft/c9-python-getting-startedPython 书籍推荐
【Python 基础】
1. 《Python编程 从入门到实践》
这是我买的第一本 Python 书,当然也是刚开始学的时候看了别人的推荐,加之也是豆瓣评分 9.1 的书,就买来看看。理论 + 实践,前面是基础知识,后面是实战项目。
前面的基础知识讲的很详细,以至于给我当时的感觉有点过于啰嗦了,不知道其他人看会是什么感觉。每个知识点后面都带着“动手试一试”,我感觉这点比较好,学编程之初,就是要多练,多敲代码…
至于后面的实践部分,包括一个简单的 2D 游戏、数据可视化和 web 项目,可能是当时我太菜了,或者之前没有做过项目的原因,我觉得这三个项目出现的太突兀了,2D 那个游戏做完我就直接被劝退了,倒是没觉得有啥提升,没甚意思,sad…
而且跟着书做项目,因为书出版的时间太长,很多用法都变了,照着书上做,大概率会有运行错误的时候,可能心态有点崩…
2. 《零基础入门学习 Python(第2版)》
我大二的时候有一段时间想转去 Python,当时也没买书,就想先了解一下,不知道怎么就搜到了小甲鱼的论坛,当时跟着他的视频学过一段时间(现在看来当时的视频比较老),还专门去他网站冲了个永久的会员,好像一百多来着,后面好像再也没登陆过…去年他的书出了第二版,就买来看了一下…
怎么说呢,算是为当初看的视频充值了…
非计算专业的同学可以拿来一看,如果你想系统学习一下的话,就别花这钱了,内容有点乱,这个得真的配合他的视频食用了,不然真的难顶,但如果一本书需要配合视频才能看懂,那也就不太推荐了…
3. 《Python基础教程(第3版)》
这本书是我朋友送我的,书到了以后一直在吃灰,因为那时候 Python 学的差不多了膨胀了…
翻开也是很偶然,那天刚好很无聊,就随手拿出来翻了翻,然后就翻完了,怎么说呢,这本书的内容给人一种很舒适的感觉,我很少有觉得读起来很舒服的技术书…
整个的结构很清晰,内容简单但是不肤浅,整个基础知识的讲解简洁明了,一点也不啰嗦,很容易就看懂了,不会有那种我看了好几遍才理解的情况(os:我什么时候也能写成这样),各种小的代码片段比比皆是,在练习的过程中反过来再加深对概念的理解。而且作为实践部分,它后面带了十个小项目,按照实际开发的步骤介绍Python 项目的过程。
如果实在让我推荐一本,我是会推荐买这本书的…
五、实战演练
对于计算机专业来说,实战是非常重要的,因为这决定着你的生产力。
说几个途径吧:
参加比赛
大学期间含金量比较高的几个比赛:
ACM程序设计竞赛CCPC 全国大学生程序设计竞赛蓝桥杯Kaggle天池因为我是做 ACM的,数据结构与算法的学习,往往要伴随着“刷题”。
我总结了一些刷题的经验,感兴趣的可以看下。
算法题从入门到放弃?刷了几千道算法题,关于如何刷题有些话我想对你说
刷题网站可以在下面这些选择:
如果是不想参加ACM,为了锻炼数据结构与算法得学习,我建议大家刷 LeetCode 就好。
针对算法小白,我总结了一套算法小白的刷题顺序,可以作为参考。
实习
实习是比较好的方式。
最好能去大厂实习。
一方面可以提前接触第一手的项目,有大佬带,学习经验,另一方面可以提前感受互联网公司的工作强度和工作氛围。
刷题
这个我在数据结构与算法那提过,就不再过多表述。
开源项目
可以参加学校实验室的项目或者参与 GitHub 上比较好的开源项目,锻炼自己的能力,开拓自己的视野。
希望对你有所帮助
在我看来,既然你选择了计算机,就一定要好好努力,它一定会给你一个比较好的未来!
码字不易,如果觉得不错,记得帮我
点个赞呀。