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
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
10.1. File Input and Output in OCaml
10.2. Binary Encoding of Data
10.3. Run-Length Encoding
10.4. Huffman Encoding
10.5. Installing GraphViz
11. Chapter 11: Binary Search Trees
12. Chapter 12: Graph Algorithms
13. Chapter 13: Elements of Computational Geometry
YSC2229: Introductory Data Structures and Algorithms
»
10.
Chapter 10: Data Encoding and Compression
10.
Chapter 10: Data Encoding and Compression
10.1. File Input and Output in OCaml
10.1.1. Reading and Writing with Channels
10.1.2. Copying Files
10.1.3. Representing Strings
10.2. Binary Encoding of Data
10.2.1. Writing and Reading Binary Files
10.2.2. Writing and Reading OCaml Strings
10.2.3. Compressing DNA Sequences
10.3. Run-Length Encoding
10.3.1. Design Considerations
10.3.2. Implementation
10.4. Huffman Encoding
10.4.1. Assigning Codes via Character Trees
10.4.2. Serializing Huffman Trees
10.4.3. Constructing Huffman tree from Frequencies
10.4.4. Computing Relative Frequencies
10.4.5. Encoding and Writing the Compressed Text
10.4.6. Decompression
10.4.7. Testing and Running Huffman Compression
10.5. Installing GraphViz
10.5.1. Microsoft Windows 10
10.5.2. Linux
10.5.3. Mac OS X