计算机专业的学习经验分享
1. ⽬标⼈
刚考上⼤学待⼊学的计算机类的萌新;
⽬前仍然对⾃⼰专业⽐较迷惘的低年级的;
2. 学什么?what?
2.1 必修课程
数学类:微积分线性代数概率论与数理统计
CS类:编程语⾔数据结构操作系统计算机⽹络计算机组成原理数据库
语⾔类:⼤学英语 4,6 级, 英语⽇常写作,英语⼝语;
2.2 选修课程
数学类:统计学基础离散数学复变函数⾼等代数数值分析数论基础凸优化运筹学随机过程
CS类:编译原理数字图像处理博弈论汇编语⾔算法分析与设计机器学习计算机视觉⾃然语⾔处理计算机体系结构计算机⽹络体系结构3. 怎么学?how?
3.1 学习的建议
(1) 数学类的学习建议
微积分和线性代数弱关联,可以同时并发学习,⽽概率论与数理统计和微积分关联较⼤,需要微积分的基础。
⼤学的⼯科数学的不要在局限于计算和做题,⽽在于应⽤。⼤学数学三重境界:第⼀,听课看书做做题记记概念做做总结考得不多完~; 第⼆,深刻理解概念,遇到问题可以⽤数学语⾔表⽰出来,转化成⼀个数学问题,并可以解答(抽问题-建模-解答),说明理解数学概念,对相关⽅法也很熟;第三,遇到⼀个困难的问题,会分解成⼀些⼩的数学问题或者是⼀个多步完成的数学问题,解决各个⼩问题,合并成⼀个⼤的解决⽅案,根据指标会优化问题,或放松或转化条件,达成指标,提升性能,这说明对⼯科数学不惑,数学当⼯具灵活运⽤了;
(2) 编程语⾔的学习建议
每个计算机的低年级学习,都有要学习哪门编程语⾔的困惑,其实什么c c++ java python 这⼏门语⾔
sklearn回归你肯定要学,只不过有侧重点,你对计算机底层更感兴趣,如操作系统啊,算法设计,编译原理啊,计算机组成啊,那么你需要侧重学习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++, 可以多刷题平台多刷题;特别是,jav
a c++ 市⾯上有很多经典⼤厚书,⽽python 基本逃不掉数据分析的各种库,⼈⼯智能的各种框架。
最后,编程语⾔本⾝不难,但编程语⾔本⾝的设计和实现底层知识很难,且中⽂资料也相对匮乏,对我们其他专业课的要求也很⾼很⾼,编程语⾔的⽣态圈很庞⼤,要学习的东西超级多,⼀个四年精通⼀门编程语⾔(语法程序设计语⾔本⾝实现语⾔背后的⽣态圈)那你的⼤学⼀定⾜够充实和精彩!
(3) 数据结构的学习建议
数据结构学习之前⼀般需要学习⼀门编程语⾔为基础,先学习其理论,即各种数据结构,在利⽤编程语⾔动⼿实践,完整实现各个数据结构;
仅仅会实现数据结构还是不够的,要会应⽤,这个时候需要去OJ(OnlineJudge)平台或就刷题⽹站做题了,如果你想要参加学校的程序设计⽐赛(ACM),毫⽆疑问,你需要直接在⼀些⼤学的平台刷题,如杭州电⼦科技⼤学OJ,北⼤OJ等(当然还有⼀些国外著名的OJ,等你需要的时候,你已经知道你的⽬标和前路了),如果你想坚持下去,打⽐赛,锻炼⾃⼰,你⼀定需要加⼊学院的程序设计组织,在专业⽼师带领下,和队友⼀起拼搏奋⽃!(主要靠队友⼀起肝,⼀起刷题,丧⽓,失望,兴奋,释然各种情绪经常交替,ACM 属于⾼投⼊难度⼤⼀般回报⼩的⽐赛,主要时锻炼⼈,每⼀位坚持打了1-3年的计算机学⽣都值得被尊重!)如果你和我⼀样,就想熟悉数据结构,运⽤他,可以直接在⼀些就业的刷题⽹站刷题就可以了,如leetcode。
当你刷了⼏百道数据结构题时,各种数据结构很熟悉时,⼀天不刷题浑⾝不快活时,那么顺其⾃然,⼀直做下去把;
正则表达式教程python(4) 计算机组成的学习建议
计算机组成是计算机专业⼀门很硬很难的课,想学的⼀般,需要投⼊⼤量时间,如果你没有任何基础,计算机组成这门课就像⼀政治课,都是⽂字,没啥计算;
我认为计算机组成是需要模拟电⼦和数字电路这两门前置课程的,⽽模拟电⼦⼜需要电路基础,但是为了学这⼀门,学三门⾮强相关的电⽓课程⼜很不划算,这门课对授课⽼师的要求很⾼,⼀般⽼师扛不住,⼀个优雅的复读机;我建议⼤家采⽤直接学,哪⾥不会补哪⾥;
理论和实验结合,建议⾕歌⼀个国外顶尖计算机强校的实验部分,因为⼀般学校实验也搞不起来,⼤部分都是51单⽚机 stm32 树莓派,好点的是FPGA,这些实验也需要⼤量额外的知识才能跑起实验;我⼤学做的实验⼤部分都是混过去的,所以......
如果你觉得学得好有趣,那么,学完计算机组成可以继续学习计算机体系结构,这个⼀般需要攻读硕博学位了,为中国的芯⽚设计和操作系统添砖加⽡;
(5) 计算机⽹络的学习建议
计算机⽹络并不要需要前置课程,但是需要⼀些专业常识,你要感兴趣,随时都可以学习,困惑的地⽅,⾕歌⼀下就好;
计算机⽹络如果你觉得有趣,可以继续学习,⽆线传感器⽹络,计算机⽹络体系结构等⾼阶科⽬;
最好的python入门教材(6) 操作系统的学习建议
操作系统国内出了清北和⼀些计算机强校,⼀般⽼师上课也会上成⽂科背诵课,原因如下,操作系统的教材基本都是⽂字描述设计⽅法或设计思想,不基于某类特定操作系统,那没有操作系统设计或实践的⽼师只好说思想啦。(基于某种特定操作系统,作者⼀般也扛不住,要很细节才⾏,读者也不好读)。然⽽,操作系统确确实实是⼀门超级重要的专业课,因为现在很多很多软件的设计优化原型的思想都借鉴了操作系统中的⼀些设计,如软件的设计模式模块化⼤型系统中做缓存都来源操作系统。
学习操作系统的⼀些设计思想,各种算法的设计思路和思想,将学到的设计思想泛化到其他的⼤型软件设计上去,解决性能瓶⼝问题;
在具体硬件平台上,做实验,做实验,做实验,学校没那条件,做⽹上的实验,⼀些top⾼校的实验是开放的,都可以去做;
如果实验实在太难,⾄少linux系统⾄少要同步学习来;
django apps配置name(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. ⽹易公开课可汗学院公开课:概率(
(4) 编程语⾔
书籍推荐:
1. c语⾔: c primer plus , c和指针 , c陷阱与缺陷 , c专家编程
2. c++: c++ primer , c++ 编程思想,effctive C++, 深度探索C++对象模型 c++ 官⽹
3. java:java核⼼技术,Java编程思想( java并发编程实战,深⼊java虚拟机,jdk源码 java官⽹
MOOC推荐:
1. 郝斌⽼师的c语⾔⼊门课程:
2. 中国MOOC⼤学,北⼤郭炜c c++ ⼊门课程
3. java⼊门课程,浙⼤翁恺
(5) 数据结构
书籍推荐:简述asp页面的工作流程
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 战⽼师数据库(哈⼯⼤出品必属精品)
集合的tostring方法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) ⽼师学长学(万不得已,⽔平不好鉴别,不⼀定靠谱,特别是普通学校的学⽣混的⽐较好的,不⼀定有真才实学,⽽是会社交)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论