计算机四大专业课,计算机专业主要课程

首页 > 经验 > 作者:YD1662022-10-26 23:36:48

计算机专业课

本章设计的课程并不是说专业课,只是说相比于上面的四大件,专业性更强,主要包括面向对象程序设计、形式语言与自动机、机器学习、数据库系统、编译原理。

面向对象程序设计

面向对象程序设计(OOP)是程序员编程的核心思想,如果以后走软件开发路线,OOP 是必须要精通的。OOP 给程序员提供了一种思维模式,将现实生活中的事务抽象成为“对象”,面向对象进行程序设计。

举个例子,OOP 中有三大要素——类、继承、多态(也有封装、继抽象、继承、多态四大要素)。如果把杯子抽象成为类的话,那么咖啡杯、茶杯、马克杯等等都属于对杯子的继承,在该继承中,被继承者——杯子,被称为父类,继承者——咖啡杯、茶杯、马克杯,被称为子类。子类继承父类,即父类有的子类一定有(除父类私有),而子类有的父类不一定有。而多态的概念是在继承之中的,在继承中,子类拥有父类的方法,都是杯子,那么酒都能装水。而不同的杯子可以定制自己的方法,即重载父类“装水”的方法——装咖啡、装茶水等。

OOP 中还有六大原则:

  1. 单一责任原则(Single Responsibility Principle) :一个类尽量只负责一种事务的抽象,功能尽量单一,降低耦合。
  2. 开放-封闭原则(Open-Closed Principle) :在类的设计中,要尽量保证“对扩展性的开放,对修改的封闭”。
  3. Liskov 替换原则(Liskov Substitution Principle) : Liskov 规则严格规定,“子类型必须能够替换其基类型,派生类必须能够通过其基类的接口使用,客户端无需了解二者之间的差异。”
  4. 接口聚合原则(Interface Segregation Principle) :该原则要求,不能强迫客户端依赖于它们不需要的接口,只提供必需的接口。“大”接口尽量分割为若干个”小“接口,不同的接口向不同的客户端提供服务,客户端只访问自己需要的接口。
  5. 依赖转置原则(Dependency Inversion Principle) :抽象的模块不应该依赖于具体的模块,具体应依赖于抽象。
  6. 最少知识原则(Least Knowledge Principle) :一个类对其他类的内部实现,知道的越少越好,如果一定要和不太相*类通信,尽量使用第三者作为转达。

计算机四大专业课,计算机专业主要课程(13)

可能有很多小伙伴在学完了 OOP,编了两三年程序也没完全弄清楚这六大原则。其实他们无处不在,这里我尽量举例子来形象地说明这六大原则。

假设杯子分为咖啡杯和牛奶杯:

关于 OOP 大的概况,我只能用三大特性和六大原则来概括,真要学习起来,OOP 中的每一个细节都值得深入讨论。OOP 早在上世纪八十年代就开始流行,作为提高程序设计生产力的重要思想,一直沿用到现在。C 和 Java 是现在比较主流的 OOP 编程语言,也是高校中 OOP 课程的主力教学语言。如果接触的第一门语言的是 C 语言的话,也不用太过抵触,虽然 C 语言是面向过程程序设计,接触过这种稍稍比较原始的编程思想,再学习 OOP 的话,会有更不一样的感觉。

形式语言与自动机

“计算机专业大学四年到底应该学什么?”,我想很多人在这个问题下的回答不会包括这门课——形式语言与自动机

这门课包括两个部分:

  1. 形式语言。
  2. 自动机。


形式语言更像是计算机专业的数学课,它研究的是严格的语法规则下,语义的表示。基于形式语言课程的后续课程其实也不算多,编译原理、自然语言处理等专业课程可能会用到形式语言的知识,但形式语言带给学生的更偏向于一种思想,在给定条件下对问题的定义能力和抽象能力。

自动机是算法的一种。自动机可以理解为一台在给定状态下、给定输入得到确定的输出(集)的机器,核心是状态 × 输入 →{状态}的映射。他也是代表着一类思想。自动机思想在算法中的应用常常被看作是传统算法,由于他的思路非常简单,运行效率高,在一些特定的场景下有着高效地运用。但自动机的缺点在于其定义非常复杂,正因为此,适用面也比较窄。

总的来说,形式语言跟正则表达式还有点关系,自动机的学习过程更像是解一道道的智力题,这门课应该还算比较有趣的一门课。

计算机四大专业课,计算机专业主要课程(14)

如果你要学习这门课的话,可以去中国大学 Mooc 看看哈工大的形式语言与自动机理论这门课。

机器学习

机器学习这门课不一定每个高校都开设,有的高校可能开设的是领域性更强的深度学习,有的高校可能把机器学习当作选修课开设,但在现在的人工智能技术横行的 IT 行业中,要掌握 AI 技术,机器学习属于一门很好的入门专业课(并不是通识课)。

机器学习中涉及了大量的概率论的知识,需要扎实的概率论基础,还夹杂着一些不简单的线性代数知识。 机器学习的工作是在研究一种算法,在某些任务中,利用一些经验,研究该算法的性能。任务的种类大体可以分为分类问题和回归问题。 分类问题,就是在给定已知条件的情况下,决定该情况属于哪一类,比如经典的航班预测问题,给定某一班航班的信息,预测该航班是否可能会晚点。而回归问题是在给定已知条件的情况下,计算该情况的回归值,在航班预测问题中,可能并不是预测是否晚点(二分类问题),而是预测该航班的到达时间(相比于基准时间的晚点时间或早到时间),这就是回归问题。

机器学习中比较简单的算法有决策树、多项式拟合、逻辑回归等,相对较难的算法有支持向量机(SVM)算法、EM 算法等,就不一一列举了。机器学习在一些算法上可以看作是数值分析课程和概率论的延伸,因此在学习机器学习之前,一定要打好扎实的数值分析基础,学好概率论,顺便别把大一学的线性代数都忘光了。

在学习的过程中,除了跟着老师在课堂上的逐步讲解和推导,课下还可以结合着 B 站上的 “白板机器学习” 来看,推导非常详细,小哥哥也非常耐心。

计算机四大专业课,计算机专业主要课程(15)

参考书的话,这里有两本推荐的书,一本是“西瓜书”——周志华的《机器学习》。 西瓜书中的案例场景围绕着“种西瓜”展开,比较能带动读者兴趣,但是该书涉及符号较多,读者最好有一定的代数能力素养,可以尽快适应该书的符号表达和公式推导。该书比较适合慢慢研读,内容在机器学习领域不算深,一点点啃会有不小的收获。另一本书是李航的《统计学习方法》, 该书不仅适合计算机专业的学生,也适合数理统计专业的学生,书中每章都围绕着一个个经典算法展开,推导过程详细,篇幅也不长,但内容相对西瓜书来说比较枯燥,适合作为工具书来读,需要学习某个算法的时候,去该书上找那一章节,快速读完,不懂的话可以多读几遍。

计算机四大专业课,计算机专业主要课程(16)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.