Syllabus
CS 528 Advanced Data Structures and Algorithms
Fall 2015
Meeting
Times 
Lect:
12:00  12:50 M, Tu, Wed, HB 112 Lab:
12:00 – 12:50 Th, HB 204 
Instructor 
Dr.
Razvan Andonie, HB 214E, Office hours 
TA 
Joseph
Lemley, lemleyj@cwu.edu 
Textbooks 
Introduction to Algorithms,
3^{ rd} Edition, by Thomas Cormen, Charles
Leiserson, Ronald Rivest, and Clifford Stein. A Primer on Scientific
Programming with Python, 4^{th} Edition, by Hans Petter Langtangen,
Springer, 2014. 
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
40%
Projects
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.
We use Python. To install Python,
use the WinPython installation package. Use the
included Spyder scientific development environment.
You may install the 32 or 64 bit version, but it is better to install Python 2
(not 3). This software is available in the lab. Scientific
computing with Python still goes mostly with version 2. A widely used strategy
for software developers who want to write Python code that works with both
versions, is to develop for version 2.7, which is very close to what is found
version 3.4, and then use the translation tool 2to3 to automatically translate from Python 2 to Python
3. A good link for
scientific programming in Python is Numeric
& Scientific Computation with Python. Here are some excellent
Python Scientific lecture notes.
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, source code and slides by email.
Date 
Topic 
Readings Textbook:
Leiserson 
Assignments 
9/23 
Introduction 
Syllabus 

9/28 
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) 
9/29 
Correctness of
algorithms. correctness of insertion sort and bubble sort 
Ch. 2 

9/30 
Growth of functions 
Ch. 3 
Ex. 3.14, 3.15, 33, due next class (not graded) 
10/5 
Growth of functions,
divide and conquer 
Ch. 3 & 4 

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

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


10/14 
Mathematical analysis of recursive algorithms 


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

10/20 
Probabilistic analysis and of randomized algorithms:
indicator random variables 
Ch. 5 (5.1 – 5.3) 
Ex. 5.25, due next class (not graded) 
10/21 
Heapsort 
Ch. 6 

10/26 
Test (not graded) 


10/27 
Quicksort 
Ch.7 

10/28 
Lineartime sorting: lower bounds, counting sort, Radix
sort 
Ch. 8 
Problem 34 (a – f), due next class (graded) 
11/2 
Lineartime Sorting: Bucket sort 
Ch. 8 
Problem 41 (a – g), due next class (graded) 
11/3 
Order statistics, median 
Ch. 9 

11/4 
Elementary data structures 
Ch. 10 

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

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

11/11 
Veterans Day 


11/16 
Binary search trees 
Ch. 12 

11/17 
Dynamic programming: matrixchain multiplication, elements
of dynamic programming 
Ch. 15 (15.1 – 15.3) 
Ex. 15.21, due next class (graded) 
11/18 
Dynamic programming: longest common subsequence, edit
distance, Viterbi algorithm 
Ch. 15 (15.4) Ex. 15.36, Problems 155, 157 & 1510 discussed in
class 
Ex. 15.36 
11/23 
Greedy algorithms: elements of greedy strategy, the
activityselection problem, Huffman codes 
Ch. 16 (16. 1 – 16.3) 

11/24 
Greedy algorithms: matroids, taskscheduling 
Ch. 16 (16.4 – 16.5) 

11/25 
Thanksgiving 


11/30 
Amortized analysis 
Ch. 17 Problems 173, 174 & 175 discussed in class 

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

12/2 
Final Project presentations 

Final Project due 
Date 
Topic 
Readings Textbook:
Langtangen 
Assignments 
9/24 
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/1 
Introduce Project 1 (graded): Exercises 2.20, , 3.13, 3.15,
3.18 
Ch. 34 
Project 0 due 
10/8 
Introduce Project 2 (graded): Exercises 5.31 & 5.38. 
Ch. 5 
Project 1 due 
10/15 
Project 2 


10/22 
Introduce Project 3 (graded): Exercises 8.18 & 8.24. 
Ch. 8 
Project 2 due 
10/29 
Project 3 


11/5 
Introduce Project 4 (graded): Exercises A.16 & A.24. 
Appendix A 
Project 3 due 
11/12 
Introduce Final Project (graded). Choose one of the
following exercises: 8.36 or 8.40. 

Project 4 due 
11/19 
Final Project 


11/26 
Thanksgiving 
No classes 
No classes 
12/3 
Final Project presentations 

Final Project due 