Syllabus
CS 529 Advanced Algorithms for Scientific Computing
Winter 2015
Meeting
Times 
Lect:
1:00  1:50 M, Tu, Wed, HB 219A Lab:
1:00 – 1:50 Th, HB 204 
Instructor 
Dr.
Razvan Andonie, HB 219B, Office hours 
Textbooks 
Introduction to Algorithms,
3^{ rd} Edition, by Thomas Cormen, Charles
Leiserson, Ronald Rivest, and Clifford Stein, 
Scientific computing uses specific
interdisciplinary methods. This course focuses on general algorithms with
direct applications in mathematics, physics, biology, geology, and chemistry.
Other domain specific computational methods will be presented in the
interdisciplinary elective courses. The course presents algorithms and data
structures for scientific computing and it is a continuation of CS528. It
introduces the techniques and models used in interdisciplinary computational
applications. Together with CS530, it constitutes the CS backbone of scientific
computing.
Topics
·
Advanced
data structures: RedBlack Trees, Btrees, Fibonacci heaps, van Emde Boas
trees.
·
Multithreaded
algorithms.
·
Polynomials
and the FFT
·
Numbertheoretic
algorithms: the Chinese remainder theorem, the RSA publickey cryptosystem,
primality testing, integer factorization.
·
MapReduce
and Pagerank
·
String
matching: RabinKarp, KnuthMorrisPratt.
·
Computational
geometry: convex hull.
·
Approximation
algorithms: the vertexcover problem, the travelingsalesman problem, the
setcovering problem, randomization and linear programming, the subsetsum
problem.
Presentations and class participation
50%
Programming projects
50%
95  100 A
90  94 A
87  89 B+
83  86 B
80  82 B
77  79 C+
73  76 C
70  72 C
67  69 D+
63  66 D
60  62 D
0  59 F
Late
submission of assignments is generally not accepted. No partial credit for late
assignments will be offered.
Some
excellent
video lectures following this textbook are available from MIT's Open Courseware,
along with assignments, readings, solutions, and so forth. The same videos are
also available for download through iTunes University in iPod/iPhoneready
formats. MIT
OpenCourseWare (MIT OCW) is an initiative of the Massachusetts Institute of
Technology (MIT) to put all of
the educational materials from its undergraduate and graduatelevel courses
online. The lectures of many courses are available in video format, freely
downloadable.
Very interesting are
also the MIT Open Courseware on the mathematics of computational
science. We are not going to focus on these topics, since they will
be subject of other courses.
The
Laboratory serves as a first introduction to computer programming of scientific
applications, using the highlevel Python language. The applications are taken
from mathematics, numerical calculus, statistics, physics, biology, and
finance. By blending programming, mathematics and scientific applications, the
laboratory projects lay a solid foundation for practicing computational
science.
Date 
Topic 
Readings Textbook:
Leiserson 
Assignments 
1/6 
Introduction 
Syllabus 
Find applications for RedBlack Trees 
1/7 
RedBlack Trees 
Ch. 13 
Find applications for Btrees 
1/8 
Btrees 
Ch. 18 

1/9 
Lab Day 

Introduce Project 1: kNearest Neighbor Search (graded) 
1/13 
Nearest neighbor search with KDtrees 


1/14 
Fibonacci heaps 
Ch. 19 

1/15 
Multithreaded Algorithms 
Ch. 27 

1/16 
Lab Day 


1/20 
Martin Luther King Jr. Day (no classes) 


1/21 
Multithreaded Algorithms 
Ch. 27 

1/22 
van Emde Boas trees 
Ch. 20 

1/23 
Lab Day 

Project 1 due Introduce Project 2: Multithreaded
Mergesort (graded) 
1/27 
Skip lists 


1/28 
The Google Pagerank Algorithm 


1/29 
Faculty Development Day (no classes) 


1/30 
Lab Day 


2/3 
Polynomials and the FFT 
Ch. 30 

2/4 
Fourier Transform and Applications 


2/5 
Sparse FFT 


2/6 
Lab Day 
Project 2 due Introduce Project 3: Multithreaded MapReduce (graded) 

2/10 
NumberTheoretic Algorithms: Chinese Remainder Theorem 
Ch. 31 

2/11 
NumberTheoretic Algorithms: RSA publickey cryptosystem 
Ch. 31 

2/12 
NumberTheoretic Algorithms: Primality testing, integer factorization 
Ch. 31 

2/13 
Lab Day 
Project 3 due Introduce Project 4: Cryptography (graded) 

2/17 
President's Day (no classes) 


2/18 
String Matching 
Ch. 32 

2/19 
String Matching 
Ch. 32 

2/20 
Lab Day 

2/24 
String Matching Applications and Implementations 


2/25 
Computational Geometry 
Ch. 33 

2/26 
Computational Geometry Applications 


2/27 
Lab Day 
Project 4 due Introduce Project 5: String Matching (graded) 

3/3 
NPCompleteness 
Ch. 34 

3/4 
NPCompleteness 
Ch. 34 

3/5 
NPCompleteness 
Ch. 34 

3/6 
Lab Day 


3/10 
Approximation Algorithms 
Ch. 35 

3/11 
Approximation Algorithms 
Ch. 35 

3/12 
Approximation Algorithms 
Ch. 35 

3/13 
Lab Day 

Project 5 due 