课程内容
-
第 1 次课. Welcome
tl;dr: 介绍课程相关内容,开发环境,编程语言等——为什么学习计算机编程?
[录播(公开)] [讲义] [代码]
推荐阅读:
- Textbook, Ch 1.1~1.3
- CS Minor, Stanford University
- TIOBE Index, TIOBE
- CMake: Introduction to the basics
-
第 2 次课. Variables, Expression and Graphics
tl;dr: 介绍 C++ 变量、表达式等——计算机是如何存储信息的?
[录播(公开)] [讲义] [代码]
推荐阅读:
- Textbook, Ch 1.4~1.6
- CMake: FetchContent (CMake 3.11+)
-
第 3 次课. Control Structures
tl;dr: 介绍 C++ 控制结构——计算机是如何做选择的?
[录播(公开)] [讲义] [代码]
推荐阅读:
- Textbook, Ch 1.7
- Linux 内核升级 C 语言标准, OSCHINA
- Cognitive strategies and looping constructs: an empirical study, Elliot Soloway, Jeffrey Bonar, Kate Ehrlich
-
第 4 次课. Functions and Libraries
tl;dr: 介绍 C++ 函数以及接口的实现——计算机是如何实现抽象的?
[录播(公开)] [讲义] [代码]
推荐阅读:
- Textbook, Ch 2 & Ch 7.2
- Stepwise Refinement, LearnLearn
- CMake: Creating a C++ library with CMake, Declaration of VAR
-
第 5 次课. Strings and Streams
tl;dr: 介绍 C++ 字符串处理接口以及文件流等 I/O 概念——计算机是如何处理文本信息的?
[录播(公开)] [讲义] [代码]
推荐阅读:
- Textbook, Ch 3 & Ch 4.3 & Ch 7.4
- Panama Palindromes, English for Students
- CMake: Testing
-
第 6 次课. Vector, Grid, Stack and Queue
tl;dr: 介绍抽象数据类型以及课本上提供的一些容器的使用——计算机是如何对实际问题进行建模的?
[录播] [讲义]
推荐阅读:
- Textbook, Ch 5.1~5.3
- Stack and Queue Animation, Illinois CS277
-
第 7 次课. Map, Set and Lexicon
tl;dr: 介绍抽象数据类型以及课本上提供的一些容器的使用——计算机是如何对实际问题进行建模的?
[录播] [讲义]
推荐阅读:
- Textbook, Ch 5.4~5.6
- Word Ladder, Keith Schwarz
- Word Unscrambler, unscramble.org
-
第 8 次课. Recursion and Similarity
tl;dr: 介绍递归思想,基本的递归编程范式,以及递归分形问题——如何使用递归思维进行问题求解?
[录播] [讲义]
推荐阅读:
- Textbook, Ch 7 & Ch 8.4
- Recursive Drawing, recursivedrawing.com
-
第 13 次课. Pointers, Arrays and Structs
tl;dr: 介绍针对内存的几种抽象概念,了解数据在内存中表示的机制
[录播] [讲义]
推荐阅读:
- Textbook, Ch 11
- Pointers vs References in C++
-
第 16 次课. Dynamic Array
tl;dr: 介绍动态数组,对比链表分别实现 Stack、Queue、Vector 等线性容器类
[录播] [讲义]
推荐阅读:
- Textbook, Ch 12.4~12.5, 14
- Implementing the Vector Class, Steven J. Zeil
-
第 17 次课. Binary Heap
tl;dr: 基于动态数组介绍二叉堆,实现 PriorityQueue 类
[录播] [讲义]
推荐阅读:
- Textbook, Ch 16.5
- Heap Visualization
-
第 18 次课. BST Tree
tl;dr: 基于链表介绍二叉搜索树,实现 Map 和 Set 类
[录播] [讲义]
推荐阅读:
- Textbook, Ch 16.1~16.2
- AVL Tree Visualization
-
第 19 次课. Huffman Coding
tl;dr: 综合二叉搜索树和递归等技术实现哈夫曼编码压缩算法
[录播] [讲义]
推荐阅读:
- Textbook, Ch 16.1~16.2
- Huffman Coding Visualization, Maoyuan Sun