Kaiyun(中国)开云·官方网站

开云体育 Kaiyun.com 官网入口计算机专业入门探讨及相关推荐 | 开云(Kaiyun.com)
× 快速导航
新闻资讯
分类
开云体育 Kaiyun.com 官网入口计算机专业入门探讨及相关推荐
发布日期:2023-10-05 07:34:40

  针对大学计算机专业的新生或者计算机初学者,本文从课程安排、计算机专业特征以及课程之间关系进行了探讨,重新梳理了对计算机专业的认识与学习方法;并整理一系列经典计算机书籍、在线课程和资源网站清单,推荐给广大初学者,期待投桃报李。

  计算机专业的第一门课程,一般是计算机科学导论,这门课程的目标是为了让学生建立起计算机科学的基本知识框架。作为初学者的引路人,它所涉及内容太多,往往是浅尝辄止。因此,计算机科学导论的作用往往被作者或者读者所忽视。

  其实,计算机科学导论除了提供基本知识框架,还应该提供深入探索计算机的话题,以便于给后续课程提供传导作用。这里,给初学者推荐《计算机科学概论》,可以作为计算机专业学习的大纲,详见“二、书籍课程推荐”。在学习计算机科学导论的同时,也可以并行学习一门编程课程,比如Java、Python、C,在《计算机科学概论》里就采用了Python代码。

  计算机专业的第二门课程,选择什么?可以根据个人情况而定,建议编程学得越早越好,甚至可以把编程放第一门课程。如果学习计算机科学导论时没有学编程,那么,第二门课程就可以安排编程语言了。请选择容易入门的编程语言,比如Python、Java,尽量不要选择学C语言,它的学习周期太长,况且后面操作系统课程也需要了解C语言,没必须提前去学。程序设计课程,推荐《Python编程》、《Java核心技术·卷 I》、‍《编程珠玑》、《C程序设计语言》、《C Primer Plus》

  任何一门编程语言的学习都是从入门到实践,并不是学一门编程课、考试过关就结束了,考试过关只是代表入门,真正的实践尚未开始。编程是计算机专业的核心,就像工人如何操作机器、农民如何种地。学习编程是一个长期过程,不同阶段、不同应用场景,对应的编程层级不一样。学习编程的目的不是为了学习,而是为了借助计算机来提升解决问题的能力。所以,除了课程学习,遇到机会应该参与到一些编程项目中,比如开源软件项目、商业软件开发项目、编程竞赛项目、课题项目等。

  曾经在网上看到,有人选择离散数学作为第二门课程。这样选择不太合理,离散数学难度比较大,容易劝退初学者。对于绝大多数初学者,本来就是学应用技术的,不太可能做计算机科学理论研究,未来工作时使用离散数学的可能性微乎其微。离散数学是计算机理论基础这些理论都是无数个数学家研究的结果,本身就不是入门级,作为入门非常不合适。这些“基础”并不代表基本功、必经之路,而计算机专业真正的基础,就是编程。

  第三门课程,可以选择计算机组成原理,课程内容是计算机硬件基础知识;也可以选择操作系统课程,操作系统是管理和使用硬件资源的基础软件。当然也可以把操作系统和组成原理放在一起学习,这里推荐《深入理解计算机系统》,即CSAPP,这本书是CMU的计算机导论教材。这个“导论”并不是计算机科学导论,比《计算机科学概论》内容更深入细节,其内容整合了组成原理和操作系统知识。

  国内的教学喜欢把计算机专业分的很细,学硬件时不讲软件,学软件时不谈硬件。其实了解计算机来源,就知道计算机硬件和软件在逻辑功能上是等同的,同样的逻辑功能硬件可以实现,软件也可以实现;软件可以用硬件方式实现,硬件也可以通过软件模拟实现。计算机设计者根据性能价格比、技术条件来决定哪些逻辑功能用硬件实现,哪些用软件实现。由于计算机的逻辑功能是一致的,因此计算机是一个系统,我们在学习计算机专业时,一定要把它作为一个系统去看待,而不是把系统割裂去研究。

  在学习计算机组成原理时,等遇到逻辑电路问题,再去了解和学习逻辑电路这门课程中相关内容;在学习操作系统时,等遇到数据结构和编程问题,再去了解数据结构和算法课程、程序语言设计课程的关联内容。当看到操作系统底层代码中会涉及到汇编语言、编译器,再去了解汇编语言、编译原理。遇到问题,通过解决问题去学习,才能逐步形成系统。计算机组成原理,推荐《编码》、《计算机组成与设计》;操作系统,推荐《操作系统概念》、《现代操作系统》。

  而尼古拉斯·沃斯提出Algorithms + Data Structures = Programs(算法+数据结构=程序),正好把图灵和冯诺依曼两人的认识完美结合在一起。

  计算机诞生的目标,就是为了让计算机解决问题,而所有问题的解决都依赖于编程。这样,我们可以把计算机等同于程序,即计算机是一个程序,编程就是操作计算机解决问题。所以,在学习计算机专业时,所有知识将围绕编程进行展开,对于知识的理解亦不能离开编程。数据结构与算法课程,推荐《算法》;编译原理课程,没有太好的入门书,推荐《计算机程序的构造和解释》里面涉及编译原理部分。

  计算机专业的课程之间,存在各种逻辑关系,但并非每个人都从最底层开始学习,越是底层越难,越不容易入门,因为底层理论和技术往往是科学家和工程师长期研究出来的。想学好计算机,首先面对的不是它的数学和物理学基础,而是实际操作或者解决问题的程序。

  开云体育 开云官网

  除了上述层级关系,还有互为依存的关系。编程语言和操作系统之间的逻辑关系:操作系统是用编程语言写出来的,而编程语言必须在一个操作系统环境中运行,听起来似乎有点鸡生蛋、蛋生鸡的关系,这是操作系统和编程语言互相迭代的过程。操作系统和组成原理的关系,首先是用户和资源的关系,用户通过编程来操作硬件资源,其次对应着软件和硬件两者逐渐升级的过程。

  很多人学计算机,学完导论之后就从底层开始,电工电子、逻辑电路、组成原理、微机应用、编程语言、数据结构与算法、操作系统、网络、数据库系统......让人就头晕(见下图)

  大家都觉得东西太多,导致什么都没学通,最终失去了兴趣。其实很多编程高手,都不是计算机专业的。在使用计算机编程时,需要解决什么问题,再了解涉及的学科。

  首先,学习计算机导论对计算机系统有了初步认识,再学习编程、组成原理、操作系统;这三者学好之后,我们就可以把学到的知识应用到实践中,需要什么再去展开,比如需要网络编程时,就去学习计算机网络;需要数据库操作时,去了解数据库系统。计算机网络课程,推荐《计算机网络---自顶向下方法》;数据库系统课程,推荐《数据库系统概念》。

  这本书既可以作为入门课程又可以作为未来计算机专业学习的大纲。内容深入浅出,既有知识传递,又有阅读思考。它对计算机科学做了全景式的精彩描述,包括数据编码和存储、组成原理、操作系统、网络、算法与数据结构、编程语言、软件工程、数据库、计算机图形学、人工智能、计算理论,以及计算机科学的发展历史和新趋势。

  采用Python编程语言作为探索和实验工具。阅读本书,采用一种编程策略:就是先根据设想的算法写下伪代码;伪代码类似设计草图,使用简单描述的代码,像程序但不能运行;根据不断修正伪代码,让自己的想法更加成熟,之后,再根据伪代码编写线、《编码》

  本书讨论了操作系统的基本原理,包括进程、线程、存储管理、文件系统、输入/输出、死锁等,同时还包含了有关计算机安全、多媒体操作系统、掌上计算机操作系统、微内核、多核处理机上的虚拟机以及操作系统设计等方面的内容。Tanenbaum教授还编写了MINIX(小型的UNIX),这是Linux的源头。

  ,基于Git的全球最大开源代码托管平台,以及软件开发者社交平台(程序员找工作必备),除了分享代码,还能遇到各种意想不到的信息宝藏。>

  ,学习编程的好工具。通过可视化代码执行来帮助学习 Python、JavaScript、C、C++ 和 Java。>

  leetcode.com/,用户不需要编写数据输入和输出的代码,Kaiyun 开云专注于功能的编写,习题多数来源于各个大型互联网公司的面试题。Kaiyun 开云Kaiyun 开云

  开云体育 开云官网