CS专业的道路上有哪些课程要学?

3,017 阅读8分钟

首先来看中国大学在QS和THE最新的世界大学计算机科学专业排名中的情况,清华大学的计算机科学与技术系在两项排名中都稳居榜首。

image

那以清华大学本科生培养方案中的专业核心课程与学位基础课为例,我们来看看cs都要学哪些。

清华计算机科学与技术专业的本科生除了要求运用所掌握的理论知识和技能,从事计算机科学理论、计算机系统结构、计算机网络、计算机软件及计算机应用技术等方面的科研、开发与教育工作,还多了一些学习人工智能、机器语言的课程,主要是由于其重视智能科学,不止停留在计算机的内部构造。

目前,该系设有计算机系统结构、计算机软件与理论、计算机应用技术三个研究生专业,除公共必修课、必修环节,学科专业要求如下:

接下来是关于cs必修课的一些课程推荐。

一、算法

算法设计与分析

该课是北京大学信息科学技术学院屈婉玲教授主讲,汪小林、蒋婷婷、罗国杰等教师辅助开设。 本课程注重针对实际问题需求,进行数学建模并选择高效求解算法的训练,内容分成两大部分:算法的基础知识和通用算法设计技术与分析方法。

image

九章算法——求职必备

由FLAG工程师,前算法竞赛中国国家集训队员令狐冲担任主讲,破解面试算法,洞察硅谷大厂最新算法面试动向,教你有重点地刷题。课程涉及的算法面试套路国内外通用,是一门算法求职的必修课,适合有任意一门编程语言基础、算法基础薄弱、面试经验少的求职者。

image

Algorithms, Part I

Kevin Wayne和Robert Sedgewick共同授课,涵盖了有关算法和数据结构的基本信息,重点是Java实现的应用程序和科学性能分析。第一部分包括基本数据结构、排序和搜索算法。第二部分重点讨论了图形和字符串处理算法。

Algorithmic Toolbox

image

Daniel M Kane、Pavel Pevzner等五位老师共同授课,这门课程的最大特点是理论和实践的结合,你将学习到解决各种计算问题的算法技巧,并实现大约100个算法编码问题。

二、数据结构

浙江大学《数据结构》

@陈越姥姥 和何钦铭教授联合授课,其大名在计算机领域可谓耳熟能详了。

这门课程对每一种重要的经典数据结构都从实际应用问题出发,导出其定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例和练习题帮助学员增强对理论的感性认识,从而明白这些数据结构为什么存在以及在什么情况下可以最好地解决什么样的问题。手把手教授小白如何将解决问题的抽象算法用具体的代码实现,从而引导初学者更好地入门。

image

武汉大学《数据结构》

武大李春葆教授授课,介绍有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮助学生学会数据的组织方法和一些典型算法的实现,能够针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。

学堂在线——清华大学数据结构(上、下)(自主模式)

邓俊辉教授讲课,另外,邓公及其教学团队针对算法学习而设计、研发的系列课程——“算法训练营”也是经典中的经典,共五期。

image

image

三、编程

C/C++

C++语言程序设计基础

本课程将C++语言作为大学生的计算机编程入门语言,不仅详细介绍语言本身,而且介绍常用的数据结构和算法、面向对象的设计思想和编程方法。课程以面向对象的程序设计方法贯穿始终,每一章都是首先阐述面向对象的程序设计思想和方法,由实际问题入手,然后引出必要的语法知识,在讲解语法时着重从程序设计方法学的角度讲述其意义和用途。

image

The Arduino Platform and C Programming

image

Ian Harris教授授课,全面讲解Arduino平台在物理板、库和IDE(集成开发环境)方面是如何工作的,还包括使用C代码编写Arduino程序,以及通过软件访问板上的引脚来控制外部设备。

C++ For C Programmers, Part A

image

Ira Pohl教授授课,该课程面向有经验的C程序员,其中的例子和练习需要对算法和面向对象的软件有一个基本的理解。

Python

Python语言程序设计

本课程面向Python零基础学习者,主要讲解“Python基础语法”全体系,包括Python快速入门、Python基础语法、Python编程思维等3个教学部分,提供大量练习。

image

Programming for Everybody (Getting started with Python)

image

Charles Severance教授授课,旨在教授每个人使用Python编程计算机的基础知识。

Python Data Structures

image

Charles Severance授课,介绍Python编程语言的核心数据结构,探索如何使用Python内置的数据结构来执行日益复杂的数据分析。

Introduction to Computer Science and Programming Using Python

image

由MIT三位instructors联合授课, 你将会学到计算的概念、Python编程语言、一些简单的算法、测试与调试等等。

Using Python for Research

image

由Harvard的Jukka-Pekka“JP”Onnela教授授课,使用指导性介绍和更独立的深度探索相结合的方法,学习者将通过选择不同的案例研究来练习新的Python技能。

Object-oriented Programming in Python: Create Your Own Adventure Game

image

本在线课程将介绍Python中面向对象编程的原则,展示如何创建对象、函数、方法和类。学习者将使用所学来创建自己的基于文本的冒险游戏,并有机会与其他学习者分享代码。

Java

Java Programming and Software Engineering Fundamentals

image

Susan H. Rodger、Owen Astrachan等四位老师共同授课,通过对Java和Android操作系统的介绍,使初学者掌握核心编程概念,并能够编写解决复杂问题的程序。

Object Oriented Java Programming: Data Structures and Beyond

image

Mia Minnes、Christine Alvarado、Leo Porter三位老师共同授课,使学习者充分利用Java,以一种既高效又易于使用的方式组织大量数据。此外,还将实践批判性地评估自己的代码。

Software Construction in Java

image

由MIT的Rob Miller教授授课,在本课程中,学习者将了解软件工程师所说的“好的”代码——不受bug的影响,易于理解,并随时准备进行更改。并还将学习如何使代码更好,包括测试、规范、代码评审、异常、不可变、抽象数据类型和接口。

Java Tutorial for Complete Beginners

image

这是Udemy上最受欢迎的免费Java课程,讲师John Purcell在英国和荷兰的CSC、ProQuest、SPSS和AT&T等公司担任了14年以上的软件开发人员和承包商,该课程带你讲解Java编程。

Java Multithreading

image

多线程是Java编程的重要组成部分,也是区分优秀Java程序员和普通Java程序员的重要技能之一,同样是讲师John Purcell授课。

Practice Java by Building Projects

image

讲师Tim Short有10年以上IT软件开发和业务交付服务工作经验。这门课程就是为技术面试做准备,构建应用程序。

Java Database Connection: JDBC and MySQL

image

Chad Darby是Java开发领域的作者、讲师和演讲者。本课程使用MySQL作为示例数据库,并教授如何使用JDBC在Java中使用数据库,适合初学者和中级Java开发人员学习JDBC。

四、人工智能

人工智能实践:Tensorflow笔记

​这是人工智能入门课,将用八次课梳理人工智能概念、机器学习方法、深度学习框架。

image

人工智能:模型与算法

本课程成体系介绍人工智能的基本概念和基础算法,梳理人工智能脉络体系。课程内容包括如下:人工智能概述、搜索求解、逻辑与推理、监督学习、无监督学习、深度学习、强化学习、博弈对抗。授课过程中也会介绍人工智能在自然语言理解 (词向量与机器翻译等) 和视觉分析(图像分类与视觉对象定位等)等方面的应用。

image

image

人工智能集训营

人工智能求职必上,旨在通过三个月的强化训练,把学生从零基础的水平,培养成人工智能精通的水平,能够应付市面上所有公司人工智能面试。报名后一年内可以重复上课。

image