【stanford C++】C++课程学习

C++课程网站:

  • http://www.stanford.edu/class/cs106b/ (或)http://cs106b.stanford.edu
  • http://www.stanford.edu/class/cs106l/

 

CS106B主要讲述的是C++的一些基本的编程概念,但是没有进行深入的介绍,其中使用了很多自己的定制库来取代C++的标准库,因此没有对C++中的细节部分进行探索。

CS106L是对CS106B课程的补充,介绍了C++更加强大的功能。

 

所用课本:

是Eric Robert编写的《Programmin Abstractions in C++》

 

课程任务:

有7个编程任务,各个任务会逐渐的变难,逐渐需要更多的时间来完成。

 

教学大纲:

天数 

主题(Topics)

阅读

任务

第1天

为什么继续学习编程?

课程概述

C++编程语言

第1章  
第2天

如何定义函数?

C++中的函数

递归函数

第2章和第7章 任务1开始
第3天

如何递归的处理文本?

串的递归

第3章    
第4天

计算机如何分析表达式?

栈(Stack)

Shunting-Yard算法

第5章的5.1~5.3    
第5天

如何存储集合的数据?

C++流(Stream)

Vector

第4章    
第6天

如何对关联数据进行处理?

Map, Set和Lexicon

foreach

第6章

任务1完成

任务2开始

第7天

如何安全的存储密码?

Queue

密码管理(Password Management)

第5章的5.4~5.6节  
第8天

在问题解决中递归的作用

递归的思想

第7章和第8章  
第9天

什么是分形(fractal)?

图示递归

穷举搜索(一)

第9章  
第10天

如何找到一个问题的所有解?

穷举搜索(二)

回溯搜索(一)

 

任务2完成

任务3开始

第11天

如何探索一个大的搜索空间?

回溯搜索(二)

   
第12天

为什么有些算法比其他的快?

算法效率

Big-O标记法

第10章10.1~10.2节  
第13天

计算如何排序数据?

排序算法(第一部分)

第10章10.3~10.5节  
第14天

排序理论如何匹配实践?

排序算法(第二部分)

   
第15天

如何定义自己的容器类(collection class)?

设计抽象

指针

第11章

任务3完成

任务4开始

第16天

动态数组是如何实现的?

动态分配

实现栈(Stack)

第12章  
第17天

数据表示方式如何影响效率?

优化栈(Optimizing Stack)

   
第18天

对于存储线性数据,数组是必需的吗?

链表(一)

第13章  
第19天

栈和队列是如何实现的?

链表(二)

实现栈(Stack)和队列(Queue)

第14章

任务4完成

任务5开始

第20天

如何迅速的存储和查询数值?

哈希表(Hash Table)

实现Map

第15章  
第21天

如何有效的存储文本数据?

Tries

实现Lexicon

   
第22天

如何有效的以排序的顺序进行数据存储?

二叉搜索树

实现Set

第16章  
第23天

如何探索网络结果?

图(Graphs)

图搜索(Graphs Searches)

第19章19.1~19.4节  
第24天

如何最小化trip时间和wiring成本?

图表示(Graph Representations)

图算法(Graph Algorithm)

第19章19.5~19.7节

任务5完成

任务6开始

第25天

如何存储大的文件到一个小的文件中

Huffman编码

贪婪算法

   
第26天

计算机如何识别数据组?

树状图(Dendrograms)

分层聚类(Hierarchical Clustering)

   
第27天 有趣和令人兴奋的附加话题        
第28天 学完C++后,后续如何走?     
第29天 其他       

 

你可能感兴趣的:(【stanford C++】C++课程学习)