ahpucd

1. 目标人群

刚考上大学待入学的计算机类的萌新;
目前仍然对自己专业比较迷惘的低年级的;

2. 学什么?what?

2.1 必修课程

数学类: 微积分 线性代数 概率论与数理统计
CS类: 编程语言 数据结构 操作系统 计算机网络 计算机组成原理 数据库
语言类: 大学英语 4,6 级, 英语日常写作,英语口语;

2.2 选修课程

数学类:统计学基础 离散数学 复变函数 高等代数 数值分析 数论基础 凸优化 运筹学 随机过程
CS类: 编译原理 数字图像处理 博弈论 汇编语言 算法分析与设计 机器学习 计算机视觉 自然语言处理 计算机体系结构 计算机网络体系结构

3. 怎么学?how?

3.1 学习的建议

(1) 数学类的学习建议

  • 微积分和线性代数弱关联,可以同时并发学习,而概率论与数理统计和微积分关联较大,需要微积分的基础。
  • 大学的工科数学的不要在局限于计算和做题,而在于应用。 大学数学三重境界:第一,听课 看书 做做题 记记概念 做做总结 考得不多 完~; 第二,深刻理解概念,遇到问题可以用数学语言表示出来,转化成一个数学问题,并可以解答(抽问题-建模-解答),说明理解数学概念,对相关方法也很熟;第三,遇到一个困难的问题,会分解成一些小的数学问题或者是一个多步完成的数学问题,解决各个小问题,合并成一个大的解决方案,根据指标会优化问题,或放松或转化条件,达成指标,提升性能,这说明对工科数学不惑,数学当工具灵活运用了;
    (2) 编程语言的学习建议
    每个计算机的低年级学习,都有要学习哪门编程语言的困惑,其实什么c c++ java python 这几门语言你肯定要学,只不过有侧重点,
  • 你对计算机底层更感兴趣,如操作系统啊,算法设计,编译原理啊,计算机组成啊,那么你需要侧重学习c++;
  • 对网站开发,对app开发感兴趣,那么需要侧重学习java;
  • 如果你对人工智能感兴趣,那么需要侧重学习python;
  • 如果你对数学建模 数据分析感兴趣,你可能需要学习 matlab R python 语言;

当然一般地,你可以根据自己的学校开设的第一门编程语言来同步学,如学校开设的是c语言作为入门,我觉得你就可以c++ java python 任选一门同步学起来,总之,一入编程语言深似海,编程语言说难听点就是工具,但是绝不像大家刚刚入门是学到那些for while if i++ --i 这些简单的语法,任何一门流行的编程语言,其身后都有一个庞大的生态圈,足够大家学习好多好多年,而且,任何一门编程语言的深入底层,大家一定会和编译原理,操作系统,计算机组成这些知识打交道,对于初学者来讲是很难的,没法一口吃个胖子,每每深入可能就会遇到底层的"大booss",干不动。
总之,关于编程语言学习路线,我的建议是:先学好,学校教授的may be c? c++ ? java? python? 其他?
如果是c语言,建议选一门java 或者 python 自选;如果是c++, 可以多找刷题平台多刷题;特别是,java c++ 市面上有很多经典大厚书,而python 基本逃不掉 数据分析的各种库,人工智能的各种框架。
最后,编程语言本身不难,但编程语言本身的设计和实现底层知识很难,且中文资料也相对匮乏,对我们其他专业课的要求也很高很高,编程语言的生态圈很庞大,要学习的东西超级多,一个四年精通一门编程语言(语法 程序设计 语言本身实现 语言背后的生态圈)那你的大学一定足够充实和精彩!
(3) 数据结构的学习建议

  • 数据结构学习之前一般需要学习一门编程语言为基础,先学习其理论,即各种数据结构,在利用编程语言动手实践,完整实现各个数据结构;
  • 仅仅会实现数据结构还是不够的,要会应用,这个时候需要去找OJ(OnlineJudge)平台或就刷题网站做题了,如果你想要参加学校的程序设计比赛(ACM),毫无疑问,你需要直接在一些大学的平台刷题,如杭州电子科技大学OJ,北大OJ等(当然还有一些国外著名的OJ,等你需要的时候,你已经知道你的目标和前路了),如果你想坚持下去,打比赛,锻炼自己,你一定需要加入学院的程序设计组织,在专业老师带领下,和队友一起拼搏奋斗!(主要靠队友一起肝,一起刷题,丧气,失望,兴奋,释然 各种情绪经常交替,ACM 属于高投入 难度大 一般回报小的比赛,主要时锻炼人,每一位坚持打了1-3年的计算机学生都值得被尊重!)如果你和我一样,就想熟悉数据结构,运用他,可以直接在一些就业的刷题网站刷题就可以了,如leetcode。
  • 当你刷了几百道数据结构题时,各种数据结构很熟悉时,一天不刷题浑身不快活时,那么顺其自然,一直做下去把;

(4) 计算机组成的学习建议
计算机组成是计算机专业一门很硬很难的课,想学的一般,需要投入大量时间,如果你没有任何基础,计算机组成这门课就像一政治课,都是文字,没啥计算;

  • 我认为计算机组成是需要 模拟电子 和 数字电路 这两门前置课程的,而模拟电子又需要电路基础,但是为了学这一门,学三门非强相关的电气课程又很不划算,这门课对授课老师的要求很高,一般老师扛不住,一个优雅的复读机;我建议大家采用直接学,哪里不会补哪里;
  • 理论和实验结合,建议谷歌一个国外顶尖计算机强校的实验部分,因为一般学校实验也搞不起来,大部分都是51单片机 stm32 树莓派,好点的是FPGA,这些实验也需要大量额外的知识才能跑起实验;我大学做的实验大部分都是混过去的,所以......
  • 如果你觉得学得好有趣,那么,学完计算机组成可以继续学习计算机体系结构,这个一般需要攻读硕博学位了,为中国的芯片设计 和 操作系统 添砖加瓦;

(5) 计算机网络的学习建议

  • 计算机网络 并不要需要前置课程,但是需要一些专业常识,你要感兴趣,随时都可以学习,困惑的地方,谷歌一下就好;
  • 计算机网络如果你觉得有趣,可以继续学习,无线传感器网络,计算机网络体系结构等高阶科目;

(6) 操作系统的学习建议
操作系统国内出了清北和一些计算机强校,一般老师上课也会上成文科背诵课,原因如下,操作系统的教材基本都是文字描述设计方法或设计思想,不基于某类特定操作系统,那没有操作系统设计或实践的老师只好说思想啦。(基于某种特定操作系统,作者一般也扛不住,要很细节才行,读者也不好读)。然而,操作系统确确实实是一门超级重要的专业课,因为现在很多很多软件的设计 优化 原型的思想都借鉴了操作系统中的一些设计,如软件的设计模式 模块化 大型系统中做缓存 都来源操作系统。

  • 学习操作系统的一些设计思想,各种算法的设计思路和思想,将学到的设计思想泛化到其他的大型软件设计上去,解决性能瓶口问题;
  • 在具体硬件平台上,做实验,做实验,做实验,学校没那条件,做网上的实验,一些top高校的实验是开放的,都可以去做;
  • 如果实验实在太难,至少linux系统至少要同步学习来;

(7) 数据库的学习建议
没学习数据库之前,你会发现,学了这么多知识,开发个网站,开发个app好难呀!等你学习了数据库,你就可以开发一些简单的应用软件了(当然也建立在你编程语言学的不错,其相关生态库也了解情况下)。 数据库,本科阶段,学校教授的一般关系型数据库的相关概念,然后以其中一种数据库做实验,然而,数据库其实是一门理论性、技术性和工程性很强的学科。企业中有一类专门为数据库设置的岗位,叫DBA(Database Administrator)。

  • 尽可能的设计一些完整的数据库
  • 大量练习数据库语句(sql)
  • 特别地,关注数据库的查询优化和性能优化技术
  • 进阶地,自己实现数据库的引擎,这也是一块“硬骨头”(一般国内只有名校的顶尖学生会做的事,颇具挑战,出来一般都是企业千金难求)
  • 不要仅仅关注学校教授的关系型数据库(mysql sqlserver orancle),一定要自主提前学习非关系的数据库(redis mongodb neo4j等等),拓宽自己的眼界,关注设计和优化两个方向,顶尖同学会关注数据库的底层实现和自己创造数据库的引擎,数据库引擎的优化等等;
  • 关注一些大数据,分布式的技术;

3.2 学习的资料

(1) 微积分
课本推荐:

  1. 一般地,学校教材都是同济大学的高等代数上下册或学校自编的
  2. 一定要到图书馆多借几本微积分教材,交叉混合看;
  3. 网络搜索,自查网友推荐的课本(知乎或助教或比较靠谱的大学授课老师)

MOOC推荐:

  1. 浙大苏德矿教授(矿爷)MOOC
  2. 高防科大 朱健民教授 MOOC
  3. 哈工大 MOOC
  4. 北大 王冠香教授 微积分基础
  5. MIT 18.01 18.02 微积分(看过国内的高数会发现,国内数学比较讲究体系,计算,推导,往往学过一段时间没用就会忘记,但是国外比较偏向概念解释,图形化,帮助理解,记得深刻,中西合璧才是绝配)

(2) 线性代数:
课本推荐

  1. 同济大学的线性代数
  2. gilbert stang 线性代数 中文版
  3. 张宇考研的线代习题集(线性代数9讲)
  4. 汤家凤的考研线性代数辅导书(他在网上也有视频讲解)

MOOC推荐

  1. 山东大学MOOC 秦静教授 线性代数 + 线代习题课
  2. MIT18.06 gilbert strang 教授录制,经久不衰,经典一绝,必看,一定要看,而且要看2-n遍,直接看不一定能看懂哦!
  3. 清华大学的线性代数 学堂在线
  4. 东南大学的矩阵分析,需要线性代数的基础了,直接看肯定看不懂
  5. 哈工大 严质彬 矩阵分析 也需要线性代数基础

(3) 概率论与数理统计
课本推荐:

  1. 浙大 概率论与数理统计
  2. 中科大 陈希孺 概率论与数理统计

MOOC推荐:

  1. 南大 范红军 概率论与数理统计 b站(哔哩哔哩)
  2. 浙大 MOOC 概率论与数理统计
  3. 网易公开课 可汗学院公开课:概率(http://open.163.com/newview/movie/courseintro?newurl=%2Fspecial%2FKhan%2Fprobability.html)

(4) 编程语言
书籍推荐:

  1. c语言: c primer plus , c和指针 , c陷阱与缺陷 , c专家编程
  2. c++: c++ primer , c++ 编程思想,effctive C++, 深度探索C++对象模型 c++ 官网 http://www.cplusplus.com/
  3. java:java核心技术,Java编程思想(https://lingcoder.gitee.io/onjava8/#/sidebar), java并发编程实战 ,深入java虚拟机,jdk源码 java官网 https://docs.oracle.com/javase/8/docs/

MOOC推荐:

  1. 郝斌老师的c语言入门课程:https://www.bilibili.com/video/BV1os411h77o?from=search&seid=15912117136332054834
  2. 中国MOOC大学,北大 郭炜c c++ 入门课程
  3. java入门课程, 浙大 翁恺

(5) 数据结构
书籍推荐:

  1. 大话数据结构,通俗易懂
  2. 算法导论,工具书,讲得全

mooc推荐:

  1. 浙大MOOC 陈越教授 数据结构(基于c语言)
  2. 清华 学堂在线 邓俊晖(邓公) 数据结构(基于c++)

(6) 操作系统
书籍推荐

  1. 计算机操作系统 汤小丹
  2. 操作系统概念 黑皮书
  3. 线代操作系统 黑皮书
  4. 深入理解计算系统 黑皮书
  5. 30天自制操作系统
  6. 深入理解linux内核架构 红皮书
  7. 鸟哥Linux 系列图书

mooc推荐

  1. 哈工大 MOOC 操作系统
  2. 学堂在线 清华 操作系统 (含实验课,难度大,需要汇编基础)

(7) 计算机网络
图书推荐

  1. 计算机网络 谢希仁
  2. 计算机自顶向下 黑皮书
  3. tcp/ip 详解 三件套

mooc推荐

  1. 哈工大 MOOC 计算机网络 三件套

(8) 数据库
书籍推荐

  1. 数据库系统概论 王珊
  2. 数据库系统概念 黑皮书
  3. mysql必知必会
  4. 高性能的mysql
  5. mmysql技术内幕 InnoDB存储引擎

mooct推荐

  1. 哈工大 MOOC 战老师 数据库(哈工大出品 必属精品 )
  2. CMU数据库 15-445/645 b战视频(cmu的一系列都不错哦)

4. 为什么要学?why?

4.1 为何要学习数学?

  1. 买菜用不到,但赚钱买房炒股一定会用到;
  2. 底层打工仔肯定用不到,但工程师一定用到的,正是你用到了,你才是工程师,当然也没啥了不起;
  3. 稍微有点技术含量的工科工作,一定离不开数学,如现在计算机行业高薪的AI算法工程师,数据分析师,量化交易.....
  4. 工程上的一些验证和优化,必然要建模验证,用数学方法描述,数学方法优化;
  5. 学习数学,至少可以培养耐心和打磨心态,不会成为一个没有礼貌没有耐心的同志,会做一个普通理性开心的普通人。

4.2 为何要学习CS这些专业课?

  1. 一切的工程深水区都是这些底层学科;
  2. 学好cs专业课,你让自己成为更加不可替代的“螺丝钉”;
  3. 大型系统的性能瓶颈,你可能会想到优化方向,不会把工作搞砸,能挑起担子;
  4. 深造才有基础,没准能为中国梦的计算机行业 添砖加瓦,天才少年梦成真;
  5. 年纪轻轻,学到就是赚到,无意中培养自我的事业根基,找到自我兴趣,为之奋斗,免得蹉跎光阴,懵懵懂懂,整天瞎鸡巴想人生意义......
  6. 空闲时间用来学习,没那么多爱恨情仇,保持年轻,不容易老......
  7. 经常学习,脑袋瓜子反映快,别人骗不到自己,不存在“我读书少,你别骗我的”烦恼;
  8. 人丑就要多读书,人美更要多读书,腹有诗书气自华!

5. 还是学不够,到哪里找资料继续学?future?

(1) 网络公开课
中国mooc大学 网易云课堂 网易公开课 学堂在线(清华的) A+ 课堂派(北大的) 哔哩哔哩(众所周知,b站是学习网站) YouTube(科.学.上.网是计算机学生的基本功,不然你学的永远是n手知识) MIT CMU 等强校大佬的开的公开课 (不知道在知乎上搜 提问 )
(2) 学校的图书馆
大学里一定要充分利用,还要经常Push 学校常买新书,没事多多建议 多发邮件,hh;
(3) 学校的讲座
一定要留意学校里面的小范围讲座,学术研讨,没准你就找到为之奋斗的一生事业!
学术大咖讲得一般都学科超级前沿的东西,要不就是目前的主流 比较热的东西
(4) 学校图书馆的在线学习资源数据库
学校图书馆的在线学习资料数据库,一般学校都会买 万方 知网 ACM(美国计算机学会) EEE/IET Electronic Library(IEL) Ei(工程索引) 等一些数据库没事可以找找搜搜论文
善用google scholar,找找专业论文
(5) 知乎 谷歌
(6) 老师 学长 学姐 (万不得已,水平不好鉴别,不一定靠谱,特别是普通学校的学生混的比较好的,不一定有真才实学,而是会社交)

分类:

技术点:

相关文章: