扫码微信咨询
关注微信公众号
什么是计算机科学与技术?这个问题置信很多计算机科学与技术专业的同窗也没有深思过,百度百科是这样引见的计算机科学与技术是研讨计算机的设计与制造,并应用计算机停止有关的信息表示、收发、存储、处置、控制等的理论办法和技术的学科。
在维基百科上是这样引见的:
Computer science is the theory, experimentation, and engineering that form the basis for the design and use of computers. It involves the study of algorithms that process, store, and communicate digital information. A computer scientist specializes in the theory of computation and the design of computational systems.
总结来说,计算机科学与技术是设计和运用计算机的理论和理论根底,包括处置、存储和传输数字信息的算法学习。
计算机科学与技术能够分为科学与技术两局部,大学期间的课程根本上涵盖了这两局部,像计算机组成原理、计算机网络、操作系统、数据构造与算法等课程都是在论述科学的局部,而像C言语程序设计、Java面向对象编程、WEB网页设计等课程则是在论述技术局部。
科学与技术的学习是相辅相成的,俗话说理论是检验谬误的独一规范。不过,很多同窗却没能搞分明这个关系,以至懒得去想这其中的关系,也就很难参显露出其中的微妙。
因而,很多同窗在大学期间顶多学习些C言语、Java言语、WEB编程等,或者高级点能够学习一些ORM框架、DI框架等,然后应用这些能做出一些小型的系统,比方选课系统之类的;却对Java言语中的线程模型、内存模型,WEB编程中的网络学问视而不见,到头来只学会了技术,却忘了科学。
其实这种学习方式也无可厚非,毕竟我们喜欢所见即所得,喜欢可以立马看得见的东西,就像打游戏一样,并且刚接触新学问时也倡议从理论动手,先晓得是什么,再晓得怎样回事,之后再以技术反哺科学,这样对科学了解的愈加深化,而不是读死书。
可是,很多同窗在大学期间光学习上面提到的Java言语就曾经消耗了一两年、以至两三年的时间,更别提以技术反哺科学了,能把技术控制纯熟就曾经很不错了。
反观缘由,一是大家对计算机科学与技术没有整体的认知,以致于在学习时无固定的学习方向,这周学一周C言语,下周又学一周Java言语,三天打鱼两天晒网,那当然是学不好喽;二是缺乏带路人,固然大家一个班都是学习计算机科学的,但是大家程度都差不多呀,相互都带不动,而这时假如你身边有个技术很凶猛的同窗,那你的生长速度肯定快过其他同窗。
因而关于以上两点,我个人给的倡议不断都是坚决学习方向和参加学校编程社团或组织,我本人在大学期间,这两点都做到了,在很快的时间内,技术上就有了很大的生长,之后再深化考虑技术背后的缘由,发现学校的课程都是宝。
当然,由于各种各样的缘由,很多同窗是很难做到以上两点的,跟很多同窗交流之后,发现很大一局部缘由是即便参加了社团,也没有系统的学习方案,大家也都是处于随意学的状态,并且很多状况下都是在学习技术,很少去考虑科学方面的学问。
针对这些问题我本人也分离本身停止了一些考虑,关于计算机专业的同窗来说,怎样的学习方式才是最好的学习方式、怎样的课程才是契合计算机专业学生的课程,而不是等到毕业了,才发现本人什么都不会,之后随意报了一个培训班,经过几个月的培训就上岗了。
我个人不是很赞同这种短期的培训上岗,这样的学习是粗浅的、不深化且不系统的,刚开端还能胜任一些工作,之后就明显潜力缺乏。所以,计算机专业学生最好还是在大学四年期间认真学好专业课程,那么如何学好呢?
我个人以为能够自创柏拉图在《理想国》中论述的教育理念,将大学四年的学习划分为几个阶段,个人以为能够划分四个学习阶段。
第一阶段则用来学习一门编程言语以及根底的数据构造与算法学问。编程言语选择主流的即可,比方C、Java、Python都是能够的。编程言语不需求学习的有多么地深化,比方Java根本数据类型以及根本的操作、条件分支语句、循环语句、类与对象即可;C言语或Python言语相似。在此阶段不需求把编程言语学习的八面玲珑,最重要的是为后面的数据构造与算法的学习打下一定的根底。
之后,就能够开端学习根底的数据构造与算法学问。在学习此阶段时一定要应用前面所学的编程言语,将学习到的数据构造、算法等完成一遍,这样不只可以对编程言语有更深化天文解,同时可以对数据构造与算法有更深化天文解。
此阶段的学习假如没有前辈指点,凭仗个人一点一滴的努力的话,目测需求近一年的学习,假如个人毅力够强,并且学习才能能够的话,半年搞定也是没问题的。假如有前辈指点,估计在半年内可以到达一个不错的效果。这里暂且依照一年来预算吧,也就意味着本人大逐个年都在学习编程言语与根底的数据构造与算法学问。
经过此阶段的学习,置信同窗曾经可以去处理一些算法标题了,所以能够尝试这去一些算法网站去刷题,并且去参与校内的一些算法竞赛。留意处理刷算法题是一个长期的学习任务,第一阶段完毕后就能够尝试每周去刷一道有难度的标题,能够到欧拉方案(Project Euler)上找,也能够到LeetCode上找,养成用程序的思想来处理问题的习气。
第二阶段的学习则开端学习操作系统相关的学问。这里的操作系统不只指大学期间要学习的计算机操作系统专业课程,同时还要学习并发编程相关的学问。学习计算机操作系统时重点学习操作系统的内存管理、进程线程管理等理论学问,同时分离本人所学习的编程言语来停止相关理论,比方能够同步学习Java并发编程、JVM等学问。
同样,此阶段的学习也需求经过近一年的学习,并且此阶段的学习至关重要,为以后的学习工作打下了扎实的理论和理论根底。
第三阶段的学习则是计算机网络相关的学问。同操作系统学问的学习一样,不只要学习专业课开设的计算机网络专业课,同时还要理论分离理论,去学习HttpClient等网络框架技术来停止理论和理论的分离。
在此阶段的学习过程中,假如时间富余的话,能够尝试去学习一些微效劳、散布式等相关的学问,也能够去学习WEB开发、gRPC、Netty、Thrift等相关学问,这些都和并发编程、网络有密不可分的关系。
此阶段的学习同样会持续一年左右的时间,经过以上三个阶段的学习,根本上控制了编程言语、常用数据构造与算法、并发编程、内存管理、计算机网络(Http编程、Socket编程)等,曾经涵盖了常见的计算机编程学问以及相关理论根底。
因而,在第四阶段,也就是第四年的学习,主要以数据库相关的学习为主,同时查漏补缺一些前面未学习到的一些学问,比方汇编言语等。数据库的学习能够以MySQL为主,学习根本的SQL操作、SQL优化以及InnoDB存储引擎。
以上的学习内容可以贯串整个大学四年的学习,并且是十分充实的学习之旅,当然这个不是对一切人都适用的,比方想要考研的同窗。同时由于学习的内容比拟多,且比拟深化,对大家的自学才能有比拟高的请求;并且由于学习的进度是和学校专业课的进度不分歧的,因而学习难度又会进一步增加。不过,无论怎样,假如大家可以坚持学习下来,肯定会有很大的收获。
同时,我个人也想在大家学习的过程中扮演一个带路人的角色,会在后续推出以上各个阶段学习内容的视频教程,为大家的学习提供便利,协助大家更快地生长起来。大家能够微信搜索公众号“极客研讨院”关注我,有什么问题也能够直接在“极客研讨院”公众号私信我,我会尽本人所能为大家解答。