Course title:
Python programming implementation for important algorithms
(or, Programming Top Ten Important Algorithms in Python)

Intended Students:
CS students in their 2nd, 3rd, or 4th year

Objectives:
To teach students theory, algorithms, programming, and applications
of Top ten important algorithms by in-class hands-on programming in PYTHON.

Prerequisite:
Introduction to programming;
Bringing own NB to class

Reference:
Selected papers; Python Docs

Grading:
Student report after each topic's hands-on programming

Contents:

1. Sorting (Selection Sort, Bubble Sort, Merge Sort, Quick Sort, Heap Sort,
Radix Sort)
2. Simplex Method for Linear Programming (Optimization)
3. Graph search, Shortest Path, Minimum Spanning Tree, Max Network Flow,
Matching, Min-Cut
4. Fast Multipole Method (FMM) for N-body Simulation Problem
5. Dynamic Programming (Viterbi decoding for error correction,
Two-Dimensional DP)
6. Page-rank Algorithm (Web search)
7. Discrete Fourier Transform (DFT) and
Fast Fourier Transform (FFT) for Signal Processing
8. Compression (Lossless and Lossy Algorithms for Data, Image, Video)
9. TBD
10. TBD

** The order is tentative