[第1课] 抽象编程第1课

主题:我们的讲师可是计算机系的大神哦,不过大神也有无奈的时候,只能吃吃泡面什么的?第一节课往往都是介绍性的课,讲师讲诉关于斯坦福的CS106系列课程,CS106的教学宗旨,选择CS106B的原因,课程的管理方式,C++介绍。当然中间也穿插一些冷笑话以及轶事。

[第2课] 抽象编程第2课

主题:C++与Java的相似处-语法-变量类型-操作符-控制结构,C++程序示例-注释,#include声明,全局变量声明(常量),声明函数原型,main函数,析构函数定义,代码示例:计算平均值,for循环->while循环:同样代码的另一个功能,C++自定义类型:-枚举类型-记录,C++参量传递-值传递-地址传递。

[第3课]抽象编程第3课

[第4课] 抽象编程第4课

主题:C++输入输出控制,C++文件输入输出,流操作,代码示例:文件操作,文件流的操作,通过引用传递文件流,错误函数,类库,面向对象特性,面向对象成功的原因,CS106课程类库,CS106课程:Scanner库,Scanner用户接口,Scanner用户使用方法,容器类,模板容器,向量容器接口。

[第5课] 抽象编程第5课

主题:主题:本讲讲解了模板的应用,分别详细介绍了向量(Vector)、存储网格(Grid)、栈(Stack)和队列(Queue)四种数据结构的接口、使用方法、适用情况以及注意事项等。介绍了数据结构的复合,和类型名称的简写方法,即类型定义typedef。最后介绍了获取库相关信息的两种途径。

[第6课] 抽象编程第6课

主题:进一步讨论容器的使用方法;介绍新的数据结构——图(Map)及其用法及接口,代码示例:图的用法,关于图的更多信息。补充一些没讲到的知识,介绍图的迭代器操作方法,图的迭代;集合类型(Set)及其接口,编程代码:集合的用法,集合的高级操作,集合的用处及优点。

[第7课] 抽象编程第7课

主题:主题:本讲以通用绘图函数为例,介绍了把函数作为数据,用于参数传递的方法。继续介绍集合类Set,用函数作参数的方法解决了用Set盛放自定义数据类型的问题。介绍了抽象数据类型ADT的概念,并举例演示ADT的综合使用。最后简单介绍了递归的主要思考方法。

[第8课] 抽象编程第8课

主题:话题:连接字符串, 递归解法,功能递归, 递归实例,有效递归,递归与效,实例:回文,线性搜索。

[第9课] 抽象编程第9课

主题:话题:递归思考,程度上与功能上分析,递归,分形编码。现场演示:分形范例。

[第10课] 抽象编程第10课

主题:话题:编码排列;递归调用——现场演示:不同案例测试,消除重复, 子集与子集策略,力竭递归。

[第11课] 抽象编程第11课

主题:话题:回溯伪码;数独解算器;数独密码;指针介绍;单一指示器;伪代码(Pseudocode)是一种算法描述语言。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语言。 介于自然语言与编程语言之间。以编程语言的书写形式指明算法职能。使用伪代码, 不用拘泥于具体实现。相比程序语言(例如Java, C++,C, Dephi 等等)它更类似自然语言。它是半角式化、不标准的语言。可以将整个算法运行过程的结构用接近自然语言的形式(可以使用任何一种你熟悉的文字,关键是把程序的意思表达出来)描述出来。

[第12课] 抽象编程第12课

主题:话题:指针电影,指针操作;指针内存图,指针基本知识;动态指针数组,指针的使用,递归数组,递归结构等。

[第13课] 抽象编程第13课

主题:话题:链表编码;打印列表;运用递归算法打印列;观察指针——前置功能,传递指针,数组与链表等

[第14课] 抽象编程第14课

主题:话题:算法分析,性能评估,分析代码:声明计数,比较算法,大O符号,大O预测的执行时间,最佳/最差/平均情况下,递归算法的分析,另一个例子:汉诺塔,经济增长方式,算法分析中的应用排序,选择排序,选择排序代码制表。

[第15课] 抽象编程第15课

主题:本次课程主要讲了三种排序算法:选择排序,插入排序和归并排序。阐述了各种排序算法的原理,演示demo,以及三种算法的优缺点,时间复杂度,并借助具体的实例,对比三种算法的运行时间。最后,简单提到下周五将要讲到的快速排序算法。

[第16课] 抽象编程第16课

主题:主题:划分为快速排序,快速排序代码工作/执行,快速排序的代码,现场演示:运行快速排序和归并排序,坏分割为例,最坏情况下分割,什么输入的快速排序的最坏案例,现场演示:运行快速排序和归并排序;不同的输入方案,策略,以避免最坏情况的分割,执行时间制表,建立通用功能:交换,函数模板,例如实时代码,模板实例化的错误,分类模板,客户分类模板的使用等

[第17课] 抽象编程第17课

主题:主题:与回调排序的模板,提供的回调函数,默认回调函数,面向对象编程,科类,对象类的文件,存储接口,访问一个类。实现会员功能,保持对象的一致性,构造一类,一类的析构函数,对象设计,内部与外部表征的基本思路。

[第18课] 抽象编程第18课

主题:主题:抽象数据类型,抽象的长城,为什么ADT的,实时编码范例:创建Vector类,私有数据成员,成长动态:在运行时的空间,插入和删除功能等。

[第19课] 抽象编程第19课

主题:主题:模板的实施细则,解释工作,InsertAt功能,Stack类的连续内存的后果,该成员函数的定义。

[第20课] 抽象编程第20课

主题:即时编码:重温栈,与堆栈列表实现基于矢量的实施,住编码:链表实现的栈,分析PUSH/POP功能,执行队列,现场编码:队列的实现,另一种实现,文字编辑器为例,缓冲类的接口和缓冲器分层矢量,现场编码:文本编辑器,评价向量的缓冲区,缓冲区分层栈,现场演示,缓冲区链表。

[第21课] 抽象编程第21课

主题:缓冲器:媒介与堆栈,缓冲区链表,指针设计,使用假人细胞,链表插入/删除链表的光标移动,双向链表等。

[第22课] 抽象编程第22课

主题:地图为载体,不同的策略:二元搜寻树,一般为数字的二进制搜索树等等。

[第23课] 抽象编程第23课

主题:探路者演示,范例,图表解释,实施策略,在C++中进行图形表示,C++中的节点和弧线的算法,DFS(深度优先搜索)。

[第24课] 抽象编程第24课

主题:比较Map实现,Hashtable的理念,哈希函数,哈希冲突,现场演示:散列,住编码:散列,散列理念:在现实世界中的例子,哈希表的性能,比较Map实现,散列通用类型。

[第25课] 抽象编程第25课

主题:词典案例研究,作为排序向量的词汇,赋予词汇哈希值,总结;注意到词汇模式与重复,儿童的动态阵列,利用前缀和后缀等等。

[第26课] 抽象编程第26课

主题:思考关于设计,运行时性能,使用的内存,代码的复杂性,使权衡,数组与向量,堆栈/队列与媒介等。

[第27课] 抽象编程第27课

主题:这堂课对于对C++语言有兴趣或者想在编程上更进一步的人来说很有用,它总结了C++语言中常用的头文件、数组、容器和编程方法,并对该语言的优缺点进行了剖析。

斯坦福大学公开课:抽象编程

学校: 斯坦福大学

讲师: Julie Zelenski

集数: 27

授课语言: 英文

类型: 国际名校公开课 计算机

课程简介: 本课程是衔接编程方法论课程,并展示高级编程主题,如递归、算法分析、C++编程语言的数据抽象化,C++类似于C和JAVA语言。如果已经通过电脑科学AP测试并获得高分(4或5分),或者是在大学课程中取得高分,就可以从抽象化编程开始。 抽象化编程假定你已熟悉良好的编程风和软件工程内容(编程方法学的程度)。并能以编程和数据抽象化作为基础来掌握新主题。主题:抽象和编程的关系。 数据的软件工程原则的抽象和模块化。 面向对象编程,基本数据结构,如堆栈(队列,集)和数据导向设计。 递归和递归数据结构(链表,树,图)。 引入时间和空间复杂度分析。基础要求:编程方法学基础、以面向高级编程主题。同程度的编程课程(包括高职的AP课程)可以取代我们的编程方法学课程。