计算机导论python知识点_每个计算机学生都应该掌握什么

随着计算机科学的发展,领域内人才应该掌握的知识技能正不断发生改变。但是即使是这样,总有一些技能是每一个计算机科学专业学生都应该掌握的。结合了网络上一些观点和我的看法后,我希望撰写这篇文章来为类似的思考提供新的方向,或为刚刚入门的朋友、同学等提供一个学习指导方案。文章内各个技能重要性排名不分先后,但是所列顺序可能有潜在的学习先后关系。

介绍自己

首先,作为一名计算机专业人士,你应该学会如何把自己介绍给别人。最基础的是知道如何制作一份精美的简历,因为它可以帮助你在学术界或工业界谋求职位。如果可能的话,最好能够拥有一个个人主页,上面不仅应该有你的个人信息,还应该列出你的各种优秀作品(包括论文、项目、博文等),这样可以让招聘者对你快速建立良好的第一印象。

此外,拥有一个Github账户也是一个不错的选择。当你的账户提交满满或/且有一些高星项目时,你扎实的工程能力、持续的开源社区贡献精神也已跃然纸上。

英语能力

计算机是一个与国际接轨的学科,它的发展速度很快,并且很多优秀的教科书、论文等著作都是以英文形式呈现。虽然已有大量经典的教材出版了中文版本,但是限于译者数量和时间等因素,仍有不计其数的文献需我们自己翻阅。因此,拥有不错的英语能力可以为你清除很多障碍。

计算思维/计算机导论

这一门课应该作为大一新生入学就必修的课程。不仅仅从培养同学对计算机学科的兴趣角度出发,引领刚刚经历完高考的同学一窥计算机学科的全貌也是非常有必要的。经历这门课,你可以对逻辑思维、实验思维之后的第三种科学研究的思维方式——计算思维,建立整体的认识;也可以通过这门课程初步了解计算机领域内最基本的概念,上手最简单的实践;还可以从此探索自己的兴趣所在,培养适应于计算机学科的良好的学习习惯。

微积分、线性代数、概率论、数理统计、离散数学

这五门课是基础中的基础,即使未来并不会在购物的时候用到中值定理或者大数定律,但是修读数学课可以让你的逻辑和理性得到训练,也可以为你未来深入研究计算机学科提供必要的基础知识。另外需要特别提的一点是,因为计算机科学家必须对形式逻辑等形式化的数学符号和证明、离散结构有所掌握,来涉足逻辑、程序设计语言、递归函数的构造等理论实践内容,所以离散数学也是一门不可忽视的学科。

一门编程语言

掌握一门语言是必须的,因为它保证了你能够把你的思想转换为计算机所能理解的语言。现在有C/C++, Java, Python等语言相对比较流行,你可以从上述其中一门语言着手探索计算机的秘密。当然,你需要对语言的高级特性有所了解,不能仅仅停留在掌握顺序、条件和循环的层面。最好的情况是擅长其中一门语言,并把它作为你后续编写各种实验的主要编码工具。中国大学的计算机专业一般把C/C++作为入门选择。

数据结构与算法

在之前的编码过程中,你可能用过数组、结构体等数据结构,也可能用过从1循环到n来计算阶乘的算法,但是你是否想过:各种数据结构有什么优缺点,有什么适用性,什么时候应该用什么数据结构呢?还有为什么你可能设计了一个算法算十万年都算不完,为什么某个算法可以正确地解决某种问题?此时,学习数据结构与算法的必要性就体现出来了。有一种流行说法是“程序=数据结构+算法”,没有这两种基础工具为你提供思路,光凭直觉则很难设计出正确高效的程序。

操作系统

“任何足够大的程序最终都将成为一种操作系统”,不仅仅指你现在正在浏览网页时运行的Windows、Mac OS或者Linux,也包括银行数据的分布式系统、飞机票或者火车票的售票系统、智能家具里的嵌入式系统等。操作系统已经在我们身边的各行各业默默地服务社会,而诸如内核如何处理系统调用,分页分块,进程和线程调度,文件系统等都是操作系统所讨论的内容。

计算机组成原理与计算机体系结构

这两个学科可以为你提供一个计算机硬件的整体视角:前者是计算机硬件的总述,后者则更偏向CPU的细节;前者向我们介绍计算机如何计算并输出结果,而后者则帮助我们掌握定量分析评估现代计算机系统的技术和设计一个新型处理器的能力。同时,作为408四门专业课之一,计算机组成原理与数据结构、计算机组成原理、操作系统和计算机网络等共同构成了大多数高校计算机学科研究生招生的学科基础知识,其重要性不言而喻。

编译原理

编译原理则为高级语言到计算机执行指令输出结果这座大厦添加了最后一块砖头。很多人说编译原理很难很晦涩,但实际上编译原理是一个有趣的科目——它把计算理论中自动机的部分演绎得淋漓尽致,让人能够真正感受到计算理论的美。除此之外,编译原理还可以帮助你理解高级语言是怎么转换成汇编语言的,让你能够在平时的代码编写中注意一些细节,从而获得更加高效的代码。

计算机网络

考虑到网络已经成为我们日常生活必不可少的部分,你应该也对计算机网络有所了解,包括协议栈、栈内各层的情况(如拥塞控制、“三次握手四次挥手”)、加密技术等。当然,你可以不涉及过于细节和底层的东西,因为那是专门研究网络的人员需要掌握的技能,而我们讨论的范畴应该是对所有计算机人员应该了解的基础知识。

数据库

随着数据的爆炸性增长,如何管理数据便成了一个至关重要的问题。不论是未来从事数据分析、数据挖掘或者数据库理论相关的研究,还是为企业管理大型数据库等实际工作,学会如何实现、维护一个DBMS(这需要数据结构等基础知识),如何设计不同范式和保证数据库安全等相关课题都是非常有意义的。

机器学习

当今世界,随着可用数据规模和存储能力的不断增长,计算处理能力更加便宜和强大,探索分析更复杂的数据并提供更加准确、快速的模型,对包括商业、医疗、金融、交通、物流等在内的各个社会事业有着重大的意义:机器学习能够有效推动各项业务发展(例如节省时间和金钱),方便人们的生活,继而有效影响人类的未来。因此,机器学习的重要性不言而喻。在这一门类下,需要掌握机器学习的基础概念和基本方法。从分别以符号主义、联结主义以及频率学派、贝叶斯学派为基础的逻辑、决策树、神经网络、支持向量机、贝叶斯网络等出发,到半监督、无监督学习等技术,你需要从这门课中对机器学习的概貌有一个整体的把握,为后续继续深入其中某些话题打下坚实的基础。

人工智能

把AI列入最后一点也是基于大环境的考虑。自1956年达特茅斯会议之后,AI便正式诞生。在科学技术高速发展的今天,人工智能也已列入国家战略规划,国内众多高校也成立人工智能专业或学院。现今,人工智能的不同方向,如视觉、语言、语音和机器人等都在快速发展,而为了入门这一领域,学习人工智能的一些基本理论与方法是一个不可或缺的步骤。

后记

当然,计算机学科还有更多重要的技能树需要大家点亮,比如软件工程、设计模式、安全、程序语言、复杂性、图形等,但是在我的理解范围内,这些课程应该让每个人根据兴趣去学习,而不应列入成为一名合格的计算机行业从业人员所必备的素养。当然,限于个人能力和时间仓促,所述观点、论据等难免有不足之处,还望多多指教。您可以在评论区留言、私信我、访问我的Github里所列邮箱或者访问我的专栏,谢谢!

你可能感兴趣的:(计算机导论python知识点)