YSC2229: Introductory Data Structures and Algorithms
  • 1. Software Prerequisites
  • 2. OCaml Style Guide
  • 3. Policies
  • 4. Midterm Project: Memory Allocation and Reclamation
  • 5. Final Project: Vroomba Programming
  • 1. Chapter 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. Chapter 02: Working with Arrays
  • 3. Chapter 03: Complexity of Algorithms and Order Notation
  • 4. Chapter 04: Divide-and-Conquer Algorithms
  • 5. Chapter 05: Binary Heaps and Priority Queues
  • 6. Chapter 06: Abstract Data Types
  • 7. Chapter 07: Hashing-Based Data Structures
  • 8. Chapter 08: Searching in Strings
  • 9. Chapter 09: Backtracking and Dynamic Programming
  • 10. Chapter 10: Data Encoding and Compression
  • 11. Chapter 11: Binary Search Trees
  • 12. Chapter 12: Graph Algorithms
  • 13. Chapter 13: Elements of Computational Geometry
YSC2229: Introductory Data Structures and Algorithms
  • »
  • 1. Chapter 01: Introduction

1. Chapter 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
Previous Next

© Copyright 2021, Ilya Sergey.

Built with Sphinx using a theme provided by Read the Docs.