Syllabus
CS 528 Advanced Data Structures and Algorithms
Fall 2014
Meeting
Times 
Lect: 11:00 
11:50 M, Tu, Wed,
HB 112 Lab:
11:00 – 11: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, for lectures. A Primer on Scientific
Programming with Python, 3^{rd} Edition, by Hans Petter
Langtangen, Springer, 2012. 
This course is a continuation of previous
undergraduate classes (programming, data structures, and algorithms) and has
the role of reviewing but also introducing more advanced topics. As a first
computer science course in the Computational Science Master’s Program, it will
bring students which may come with different computational background to the
same basic level. It focuses on the understanding and design of fundamental
algorithms, with a more thorough presentation of time and space complexity.
Topics
Growth of functions: asymptotic
notation.
Divideand conquer: the maximumsubarray problem, Strassen’s
algorithm for matrix multiplication, solving recurrences, the master theorem
for solving recurrences.
Probabilistic analysis
and randomized algorithms.
Sorting and order statistics: heapsort, quicksort, sorting in linear time, median and
order statistics
Data structures: stacks, queues,
linked lists, hash tables, binary search trees, redblack trees, augmented data
structures.
Dynamic programming: matrixchain
multiplication, longest common subsequence, optimal binary search trees.
Greedy algorithms: Huffman codes, matroids and greedy methods, taskscheduling as a matroid.
Homeworks and class participation
40%
Programming projects (3, 10% each)
30%
Final project
30%
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
If
you must miss an exam, contact your instructor prior to the
exam to schedule a time to make it up. 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.
The Final
Project should be submitted as a technical report and presented in class. It
will be graded as follows: 1/3 Python code, 1/3document,
and 1/3 presentation. The report document should contain: problem description,
benchmarking, figures, and discussion. Tables and a list of references are a
plus. Using LaTeX brings an extracredit of 10% to
the project’s grade. Guidelines can be found at here. The
presentation should be made with 1015 slides, in about 15 minutes, including
questions and answers. Presentation guidelines can be found here. Submit
the report by email and place your
source code and your executable version in a Final Project folder in your
account.
Date 
Topic 
Readings Textbook:
Leiserson 
Assignments 
9/25 
Introduction 
Syllabus 

9/30 
Getting started:
analyzing algorithms, insertion sort, mergesort 
Ch. 1 & 2 
Ex. 2.13, 2.32, 2.33, 2.34, 2.35, due
next class (not graded) 
10/1 
Correctness of
algorithms. correctness of insertion sort and bubble sort 
Ch. 2 

10/2 
Growth of functions 
Ch. 3 
Ex. 3.14, 3.15, 33, due next class (not graded) 
10/7 
Growth of functions,
divide and conquer 


10/8 
Divide and conquer 
Ch. 4 
Ex. 4.12, 4.15, 4.27, due next class Ex. 4.13, due next Lab. (not graded) 
10/9 
Divide and conquer 


10/14 
Mathematical analysis of recursive algorithms 
Solving Recurrence Equations review (on Neve) 
Homework 1 (on Neve), due next
class (not graded) 
10/15 
Mathematical analysis of recursive algorithms 


10/16 
Faculty Development Day (no classes) 


10/21 
Mathematical analysis of recursive algorithms 


10/22 
Randomized algorithms 
Ch. 5 (5.1 – 5.3)) 

10/23 
Probabilistic analysis and of randomized algorithms:
indicator random variables 

Ex. 5.25, due next class (not graded) 
10/28 
Heapsort 
Ch. 6 

10/29 
Test (not graded) 


10/30 
Quicksort 
Ch.7 

11/4 
Lineartime sorting: lower bounds, counting sort, Radix
sort 
Ch. 8 
Problem 34 (a – f), due next class (graded) 
11/5 
Lineartime Sorting: Bucket sort 

Problem 41 (a – g), due next class (graded) 
11/6 
Order statistics, median 
Ch. 9 

11/11 
Veterans Day 
No classes 

11/12 
Elementary data structures 
Ch. 10 

11/13 
Hashing 
Ch. 11 (11.1 – 11.3) 

11/18 
Hashing 
Ch. 11 (11.4 – 11.5) 

11/19 
Binary search trees 
Ch. 12 

11/20 
Dynamic programming: matrixchain multiplication, elements
of dynamic programming 
Ch. 15 (15.1 – 15.3) 
Ex. 15.21, due next class (graded) 
11/25 
Dynamic programming: longest common subsequence, edit
distance, Viterbi algorithm 
Ch. 15 (15.4) Ex. 15.36 Problems 155, 157 & 1510 

11/26 
Greedy algorithms: elements of greedy strategy, Huffman
codes 
Ch. 16 (16. 1 – 16.3) 

11/27 
Thanksgiving 
No classes 

12/2 
Greedy algorithms: matroids,
taskscheduling 
Ch. 16 (16.4 – 16.5) 

12/3 
Amortized analysis 
Ch. 17 Video Lecture 13
& Video Lecture 14 Problems 173, 174 & 175 

12/4 
Data structures for disjoint sets, 
Ch. 21 (21.1 – 21.3) 

Date 
Topic 
Readings Textbook:
Langtangen 
Assignments 
9/26 
Introduction to Python Introduce Project 0 (not graded): Exercises 1.1 – 1.4 
Ch. 12 Resources for "A Primer on Scientific
Programming with Python” 

10/3 
Introduce Project 1 (graded): Exercises 2.24, 3.16, 3.17 
Ch. 34 
Project 0 due 
10/10 
Introduce Project 2 (graded): Exercises 5.22 & 5.29. 
Ch. 5 
Project 1 due 
10/17 
Project 2 


10/24 
Introduce Project 3 (graded): Exercises 8.20 & 8.28. 
Ch. 8 
Project 2 due 
10/31 
Project 3 


11/7 
Introduce Project 4 (graded): Exercises A.20 & A.26. 
Appendix A 
Project 3 due 
11/14 
Introduce Final Project (graded). Choose one of the
following exercises: 8.41 or 8.45. 

Project 4 due 
11/21 
Final Project 


11/28 
Thanksgiving 
No classes 
No classes 
12/5 
Final Project presentation 

Final Project due 