Syllabus
CS 529 Advanced Algorithms for Scientific Computing
Winter 2015
Meeting
Times 
Lect: 1:00  1:50
M, Tu, Wed,
HB 112 Lab:
1:00 – 1:50 Th 
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 
Lab Day 

Introduce Project 1: kNearest Neighbor Search (graded) 
1/12 
Btrees 
Ch. 18 

1/13 
Nearest neighbor search with KDtrees 


1/14 
Fibonacci heaps 
Ch. 19 

1/15 
Lab Day 


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


1/20 
Multithreaded Algorithms 
Ch. 27 

1/21 
Multithreaded Algorithms 
Ch. 27 

1/22 
Lab Day 

Project 1 due Introduce Project 2: Multithreaded Mergesort (graded) 
1/26 
van Emde Boas trees 
Ch. 20 

1/27 
Skip lists 


1/28 
Faculty Development Day 


1/29 
Lab Day 


2/2 
The Google Pagerank Algorithm 


2/3 
Polynomials and the FFT 
Ch. 30 

2/4 
Fourier Transform and Applications 


2/5 
Lab Day 

Project 2 due Introduce Project 3: Multithreaded MapReduce
(graded) 
2/9 
Sparse FFT 


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

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

2/12 
Lab Day 

Project 3 due Introduce Project 4: Cryptography (graded) 
2/16 
President's Day (no classes) 


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

2/18 
String Matching 
Ch. 32 

2/19 
Lab Day 


2/23 
String Matching 
Ch. 32 

2/24 
String Matching Applications and Implementations 


2/25 
Computational Geometry 
Ch. 33 

2/26 
Lab Day 

Project 4 due Introduce Project 5: String Matching (graded) 
3/2 
Computational Geometry Applications 


3/3 
NPCompleteness 
Ch. 34 

3/4 
NPCompleteness 
Ch. 34 

3/5 
Lab Day 


3/9 
NPCompleteness 
Ch. 34 

3/10 
Approximation Algorithms 
Ch. 35 

3/11 
Approximation Algorithms 
Ch. 35 

3/12 
Lab Day 

Project 5 due 