下面说说我的学习看法吧:
在我看来,对一个计算机专业的学生最基本的要求之一就是:从你按下电脑电源键开始到启动你的第一个软件为止,这其中发生了什么,不要求很详细,但至少也得知道个大概。学计算机有两个关键要抓住(其实也就两个点):一是要学会一项技能-----编程,二要清楚一个概念----软和硬。可以这样说不会编程就一定学不好计算机,不会编程你都不好意思说你是学计算机的。下到计算机组成原理,中到操作系统,上到应用软件,哪个地方不需要编程。一谈到编程就不能不学习算法不能不学习数据结构,一般的许多经典的基础性算法都不需要学什么数学(排序、选择、宽度优先、深度优先、分支、DP、贪心算法等),只需要培养一种所谓的“计算机思维”就够了,而从事人工智能等职业还必须得辅以一定的数学基础,如线性代数,概率论,高数等(考研也要考)。软和硬,要求我们明白软件和硬件其实是一体的,只不过一个是虚拟的,一个是实实在在的东西。其关键就是搞清楚一个功能什么时候应分配给软件实现什么时候应分配给硬件实现。软和硬,还要求我们明白软件如何控制硬件,也就是说你敲两行代码,为什么将代码输入到你的智能洗衣机的芯片里面后你的洗衣机就会唱歌了。在我看来,要想明白“软和硬”,上图橙色圈中操作系统(以下简称OperatingSystem)又是重中之重。OS也是整个计算机核心知识圈的核心。正是OS,把底层硬件和上层应用软件联系起来,把整个计算机结合成一个整体。OS一般都用C语言写的代码外加一些汇编代码,这些代码中又把各种算法,各种数据结构很好的结合在一起,以及用这些代码去控制各种硬件,运行各种软件,从而把整个橙色圈都很好的联系了起来,可以说OS学好了,计算机就学完一半内容了。橙色圈,这些都是一个Cser实实在在的软实力
下面说说我的大学历程吧(大一上下、大二上下、大三上):
总述:师傅领进门,修行在个人!我的大学基本就是自学。
核心课程篇:
主课---55%的精力 ,副课---30%的精力 ,15%未用。
大一上期核心课:学会一门编程语言(一定要熟悉语法)并且会编程解决基本问题,强烈推荐C++,比C高级但又接近底层。大学的一切基本都是建立在一门编程语言上的,学第一门编程语言语法的一定要方方面面都学到我强烈建议一定要买一本书把语法尽量多了解一点,把各种库函数多记一点,一定要通过练习书上的代码来巩固。同时我也强烈建议到学校的ACM网站上把入门的基础题给做了,这一步意义非凡#1:通过编程,你能熟练使用各种库函数,并且熟悉语法,当初花了整整一天的时间搞懂了指针怎么用,然后学数据结构的链表,树都是小Case;LastButNotLeast:你能培养计算机思维(只可意会不可言传),这将为你以后的学习打下坚实的基础。我当初为了做一道题我可以在图书馆从早坐到晚(刚入门嘛,即使一道简单的题目也要做好久好久),这一步你以后学数据结构学算法铺平道路。当然我强烈建议在高考完的那个暑假就学完一门编程语言(网上找视频),然后就能让你大学的各项规划提前一个学期。
寒假:ACM网站上做题(当然是基础题啦)/随便
大一下期核心课:主课--数据结构,副课--算法。在大一上期期末一个多月就开始了自学数据结构之路。因为C++语法学得好,指针很熟练,所以按照数据结构书上的讲解,然后自己看代码就很轻松,不用一边找思路还要一边翻语法。然后老师上课讲起来听起来就很轻松了(我们班许多人学了一个学期连编一个简单的链表都要翻这里翻那里还一运行程序就崩溃)。可以说任何一门专业课都离不开数据结构,不管是算法还是操作系统,计算机组成原理,还是图形学计算机网络。数据结构一定要一遍一遍的亲自动手编程,否则你是永远都学不好的。当数据结构学完(强调自学完,因为跟着老师的进度来你是永远没多余的时间来学习副课的)大半时便可以着手进行算法的学习了(一般期末一个月到一个半月左右开始)。
暑假:随便
大二上期核心课:主课--算法+数字逻辑 ,副课--操作系统,单片机。算法作为主课当然是承上啦。数字逻辑作为计算机组成原理的先修课程要学扎实,最重要的是明白“逻辑门”、“节拍(时钟)”、“时延”、“同步异步”等概念。然后期末那一个半月左右就可以开始启下了,开始学操作系统了。当然,操作系统学校一般都是大二下开,但是我是自己提前学。第一次学,完全分不清硬件软件,看书的第一遍我是一脸懵逼,完全不明白,只知道因该是这样,他说的好像是这么回事,数字逻辑到还好,自学没毛病。但是数字逻辑学完大半还是看不懂操作系统最核心的进程调度,文件系统,内存分配(缓存,更新),所以说看书的第一遍主要是在脑海中有一个大概映像,等你知识面展开了外加上之前有个大概映像,那时操作系统学起来很快而且思路清晰。这个学期当我们把我们用来学习数字逻辑的书(书单中我推荐的书)学完大半(时间不够,看不完)计算机组成原理大体框架也学完了(所以说教材一定要选好)。我在期末考试期间还花了十天学习了单片机(自己花了188RMB买的,学单片机还是强烈推荐买一个单片机(不推荐使用软件模拟),我攒了一个半月的钱才买的)(复习什么喽,只要平时学习到位,考前一天就复习完了)
寒假:复习数字逻辑(只看书不做题而且不去上课也没去上机没平时分结果挂了。。悲催)
大二下期核心课:主课--计算机组成原理+操作系统。不管是打算考研还是找工作,这个学期都是提升自我软实力或硬实力的重要学期。《逻辑与计算机设计基础》后半部分便是讲计算机组成的,这学期只要花一个月左右接着上学期把剩下的一小部分看,这个学期便不怎么需要花精力在计组上了,只需上课跟着老师走就行了。计组只是为操作系统打基础。在我看来,学好操作系统,最重要的是要学好操作系统的理论。当然,光学理论你会被抽象死去了,光学理论,学了就忘,只知道好像是这样。要想学好我觉得有两个工作必不可少:一是学汇编,一定要学汇编;二是照着某些书自己动手写一个操作系统内核(也许我们写的不能被称为一个内核),即使写不出来,照着书上的代码一行一行敲也行,但一定要敲一遍,运行一遍,通过这一步你会明白什么是实模式,什么是保护模式,清楚的明白什么是“软”,什么是“硬”,也会知道如何用代码去操作硬件,同时将你学到的理论用上(调度,内存分配等等),你就知道操作系统中如信号量等概念大概是如何实现的,你还会知道你学的算法会在什么时候被用上,这样你就不会觉得操作系统抽象了。这个学期我,15%的精力花在x86汇编语言的学习上,30%的精力花在在裸机上建立最基本的操作系统环境上(实模式),40%的精力花在自己动手写操作系统内核上(保护模式)。虽然最终以失败告终(内核写好了,但是和底层汇编代码结合起来,结果一大堆一大堆硬件细节错误,啰嗦死的,一运行就崩溃,哎呀没事,只要我们明白操作系统大概是怎么个样子就行了,毕竟以后没哪个会真的去写一个操作系统)。
暑假:计算机网络(慕课)+《计算机网络》书籍
大三上期:这个学期也是很重要的一个学期,这个学期主要是学习灰色圈。但对于我来说这是我吊儿郎当的一个学期,我打算考研,所以这个学期基本上属于科普阶段,进一步拓展知识面的一个阶段。我就只说说这个学期我的学习过程,大家仁者见仁智者见智:
8.27~9月中旬 《计算机网络》扫尾阶段
9.3~12月中旬 《编译原理》核心部分--------------------算是我这学期的主课吧
10月~1月 Java | python,静不下心来看书时就学一点不用动脑子的
11月~1月 《人工智能:一种现代方法》第一部分到第四部分-------算是我这学期的又一门主课吧
12月~12月中旬 《计算机体系结构》,操作系统和计算机组成原理学好了,这门课稍微花点时间学一下就可以了。
12月~1.21 基本上是玩
1.1~1.18 《Windows核心编程》,在Windows平台下通过代码加深对操作系统各个概念的理解。唉,不学一点玩都玩不心安
1.15晚上~1.16早晨 通宵复习法:编译原理复习日
1.18晚上~1.19零点 熬夜复习法:复习java
1.21晚上~1.22早晨 通宵复习法:计算机图形学科普日+计算机体系结构复习日
1.22 下午:回家
15%素质提高篇:
大一上期:刚深渊
大一下期:stl以及泛型编程《STL 源码剖析》(侯捷著);接触linux《鸟哥的Linux私房菜》;网页设计
大二上期:单片机;《深入浅出MFC》(侯捷著),唉,看了就忘了;学习用Vim写程序,用Gcc编译程序,用gdb调试
大二下期:学习编译Linux内核,安装linux内核;《Linux内核设计与实现》
大三上期:学习python基本语法;摸眼抢大龙;选修文化经典研读《红楼梦》(老师:没读过红楼梦都不能称之为一个文化人)
【附注】我的大学基本都是自学。我的观点是:本科打基础,知识面一定要广,不求你有多精通,只求别人说到这个你要大致知道是什么,同时基础要打好(橙色圈,蓝色圈),专攻什么的留到研究生阶段再去弄。寒暑假我一般都静不下心来看专业书,所以我一般寒暑假都是在中国大学慕课网上看视频学习专业课。当你看不进书的时候去看视频吧,视频最好的一点就是不怎么需要静心思考
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。