YSC2229: Introductory Data Structures and Algorithms
1. Course Syllabus
2. Software Prerequisites
3. OCaml Style Guide
1. Week 01: Introduction
1.1. Introduction
1.2. Testing OCaml Code
1.3. Correctness of Recursive Algorithms
1.4. From Recursion to Imperative Loops
1.5. Sorting Lists via Insertion Sort
1.6. Exercises
2. Week 02: Working with Arrays
3. Week 03: Complexity of Algorithms and Order Notation
4. Week 04: Divide-and-Conquer Algorithms
5. Week 05: Binary Heaps and Priority Queues
6. Week 06: Abstract Data Types
7. Midterm Project: Memory Allocation and Reclamation
8. Week 07: Hashing-Based Data Structures
9. Week 08: Searching in Strings
10. Week 09: Backtracking and Dynamic Programming
11. Week 10: Data Encoding and Compression
12. Week 11: Binary Search Trees
13. Week 12: Graph Algorithms
14. Week 13: Elements of Computational Geometry
15. Final Project: Vroomba Programming
YSC2229: Introductory Data Structures and Algorithms
Docs
»
1. Week 01: Introduction
1. Week 01: Introduction
ΒΆ
1.1. Introduction
1.1.1. About this course
1.1.2. What problems are solved by algorithms?
1.1.3. Data structures
1.1.4. What is analysis of algorithms?
1.2. Testing OCaml Code
1.3. Correctness of Recursive Algorithms
1.3.1. Warm-up: finding a minimum in a list of integers
1.3.2. Reasoning about termination
1.3.3. Reasoning about correctness
1.4. From Recursion to Imperative Loops
1.4.1. Loop variants
1.4.2. Loop invariants
1.5. Sorting Lists via Insertion Sort
1.5.1. Insertion sort implementation
1.5.2. Correctness of sorting
1.5.3. Sorting invariants
1.6. Exercises
1.6.1. Exercise 1
1.6.2. Exercise 2
1.6.3. Exercise 3
1.6.4. Exercise 4
1.6.5. Exercise 5
1.6.6. Exercise 6
1.6.7. Exercise 7
1.6.8. Exercise 8