Algorithms for GIS (cs3225): Schedule
Here is a detailed schedule of the class, to be updated as the semester progresses:
Week 1: Aug 31
- Topics: Introduction and setup. Limitations of the RAM model: the cache.
- Notes:
- Other useful materials:
Sept 5:
- Topics: GitHub setup. Limitation of the RAM model: the I/O.
- Notes:
- Other useful materials:
Sept 7:
- Topics: Memory-efficient algorithms (matrix multiplication, cache-aware and cache-oblivious).
- Notes:
- Assignments: project1-MatrixMultiplication | run.sh (Due Tue Sept 19)
- Other useful materials:
- YouTube demo: cache misses of standard mmult | cache misses of blocked mmult
- The paper that introduced cache-oblivious algorithms: Cache-Oblivious Algorithms, Matteo Frigo, Charles E. Leiserson, Harald Prokop, Sridhar Ramachandran, MIT, FOCS'99
- C. Leiserson, MIT: YouTube lecture on cache-efficient algorithms (part of MIT course Performance engineering of software systems)
- Udacity course on high-performance computing: 3 min video on cache-oblivious matrix multiply, great for getting the essential, but misses the subtleties of the analysis, like the necessity of the tall-cache assumption
- Paper: How to write fast numerical code: An introduction, by Chellappa, Franchetti and Puschel, CMU
- Anatomy of a high-performance matrix multiplication, K. Goto and R. geijn, UT Austin
Sept 12, 14:
- Topics: Matrix layouts and space-filling curves.
- Notes:
- Other useful materials:
Sept 19, 21:
- Topics: Data models in GIS: Networks and terrains.
- Notes:
- Assignments: project2-readgrid (due Thu Sept 28)
- Other useful materials:
Sept 16, 28, Oct 3:
- Topics: Visibility on terrains (basic algorithm; viewshed via radial sweep; a detour through augmenting red-black trees; visibility and horizons; viewshed via a concentric sweep)
- Notes:
- Assignments: project3-viewshed (due Thu Oct 12)
- Other useful materials:
Oct 13, 18, 20:
- Topics: Parallel programming with OpenMP.
- Notes:
- Assignments:
project4-totalviewshed (due Thu Oct 31)
- Other useful
materials:
- We'll use the OpenMP hands-on
tutorial by Tim Mattson from Intel, available on YouTube ( link).
You need to go through the first 10 videos (modules 1 through 5)
- 01: intro (4.5 min)
- 02: part 1 (8 min) Module 1
- 02: part 2 (7 min) Module 1
- 03: Module 2 (5 min) compiling
- 04: Discussion 1 (10 min)
- 05: Module 3 (11.5 min) creating threads
- 06: Discussion 2 (11 min) the simple PI program in parallel
- 07: Module 4 (8 min) synchronization
- 08: Discussion 3 (5 min) overhead and eliminating false sharing
- 09: part 1 Module 5 (10 min) parallel loops
- 09: part 2 Module 5 (7 min) parallel loops
- 10: Discussion 4 (6.5 min) parallel PI program wrap -up
- Other useful materials:
Oct 24, 26:
- Topics: Line simplification (Ramer-Douglas-Peucker algorithm); Surface simplification via incremental refinement.
- Notes:
- Assignments: [Work on project4:: You should be running experimenst on the grid and thinking of false sharing and asking lots of questions on piazza. Post your running times and speedup --- who has the fastest code on set1? Who has largest speedup?]
- Other useful materials:
Oct 31, Nov 2:
- Topics: LiDAR data in GIS.
- Notes: lidar.pdf
- Assignments: project5-lidar (due Tue Nov 21st)
- Other useful materials:
Nov 7, 9:
- Topics: Flow on terains: Computing flow direction and flow accumulation.
- Notes:
flow1.pdf | ex-flow1
- Assignments: [work on project 5]
- Other useful materials:
Nov 14, 16:
- Topics: Flow on terrains: river and watershed hierarchy.
- Notes: flow2.pdf | ex-flow2
- Assignments: [work on project 5]
- Other useful materials:
Nov 21:
- Topics: Project 5 demo.
- Notes:
- Assignments:
Nov 28, 30:
- Topics: Flooding terrains: the sink filling algorithm. Sea level rise flooding.
- Notes: sinkfilling.pdf
- Assignments: project6-slr
- Other useful materials:
Dec 2, 7:
- Topics: [projects]
- Notes:
- Assignments:
- Other useful materials:
Dec 15, 18: