Weekly lessons
1.1 Introduction: background to C
1.2 Compiling and program structure
1.3 Data types and variables
1.4 Operations and expressions
1.5 Flow controls
1.6 Functions
Lesson 2. C Features - Pointers and Arrays
2.1 Pointers
2.2 Arrays
2.3 Multi-dimensional arrays
2.4 Array data structures for applications
3.1 Strings
3.2 Extended data types built by struct, union, and enum
3.3 File I/O
Lesson 4. Introduction to Data Structure and Algorithm Designs
4.1 Introduction to proof by induction
4.2 Big-O notations
4.3 Principles of data structure design
4.4 Introduction to algorithm design and analysis
4.5 Examples of data structures and algorithms
Lesson 5. Linked Lists
5.1 Introduction to linked lists
5.2 Singly linked lists
5.3 Other linked lists
Lesson 6. Queues and Stacks
6.1 Queues
6.2 Stacks
6.3 Infix and postfix expressions
6.4 Function call stack and recursive functions
Lesson 7. Trees
7.1 Concepts of trees
7.2 Tree operations
7.3 Application trees
Lesson 8. Binary Search Trees
8.1 Concepts of binary search trees
8.2 AVL trees
8.3 Red black trees
8.4 Splay trees
8.5 Multi-way search trees
Lesson 9. Hash Tables
9.1 Concepts of hash tables
9.2 Hash table operations and collision handling
9.3 More hash function and collision handling methods
Lesson 10. Heaps
10.1 Concept of heaps
10.2 Binary heaps
10.3 Binomial heaps
10.4 Fibonacci heaps
Lesson 11. Graphs
11.1 Concepts of graphs
11.2 Graph representations
11.3 Graph operations
Lesson 12. Graph Problems and Algorithms
12.1 Minimum spanning tree problem and Kruskal’s algorithm
12.2 Prim’s algorithm for MST problem
12.3 Shortest path problems and Dijkstra’s algorithm