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 219-B, Office hours

Textbooks

Introduction to Algorithms, 3 rd Edition, by Thomas Cormen, Charles Leiserson, Ronald Rivest, and Clifford Stein,

 

Objectives

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: Red-Black Trees, B-trees, Fibonacci heaps, van Emde Boas trees.

·         Multithreaded algorithms.

·         Polynomials and the FFT

·         Number-theoretic algorithms: the Chinese remainder theorem, the RSA public-key cryptosystem, primality testing, integer factorization.

·         MapReduce and Pagerank

·         String matching: Rabin-Karp, Knuth-Morris-Pratt.

·         Computational geometry: convex hull.

·         Approximation algorithms: the vertex-cover problem, the traveling-salesman problem, the set-covering problem, randomization and linear programming, the subset-sum problem.

Grading

Presentations and class participation

50%

Programming projects

50%

Grade Distribution:

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.

Lecture Resources

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/iPhone-ready 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 graduate-level 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.

Laboratory & Software

The Laboratory serves as a first introduction to computer programming of scientific applications, using the high-level 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), because the examples in the textbook are in Python 2. This software is available in the lab. A good link for scientific programming in Python is Numeric & Scientific Computation with Python. Here are some excellent Python Scientific lecture notes.

Other Python Resources: Python high-performance container datatypes, Problem Solving with Algorithms and Data Structures using Python

Course Schedule

Date

Topic

Readings

Textbook: Leiserson

Assignments

1/6

Introduction

Syllabus

Find applications for Red-Black Trees

1/7

Red-Black Trees

Ch. 13

Video Lecture 10

Find applications for B-trees

1/8

B-trees

Ch. 18

 

1/9

Lab Day

 

Introduce Project 1: k-Nearest Neighbor Search (graded)

1/13

Nearest neighbor search with KD-trees

 

1/14

Fibonacci heaps

Ch. 19

 

1/15

Multi-threaded Algorithms

Ch. 27

Video Lecture 22

 

1/16

Lab Day

 

 

1/20

Martin Luther King Jr. Day (no classes)

 

 

1/21

Multi-threaded Algorithms

Ch. 27

Video Lecture 23

 

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

Video Lecture 12

 

1/28

The Google Pagerank Algorithm

Read: Notes by Ian Rogers and Brin&Page’s original paper

 

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

http://groups.csail.mit.edu/netmit/sFFT/

 

2/6

Lab Day

Project 2 due

Introduce Project 3: Multithreaded MapReduce (graded)

2/10

Number-Theoretic Algorithms:

Chinese Remainder Theorem

Ch. 31

https://files.nyu.edu/jl860/public/crt.htm

 

2/11

Number-Theoretic Algorithms:

RSA public-key cryptosystem

Ch. 31

 

2/12

Number-Theoretic 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

NP-Completeness

Ch. 34

 

3/4

NP-Completeness

Ch. 34

 

3/5

NP-Completeness

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

 

Honor Code: All work turned in for credit, including exams and all components of the project, are to be the work of the student whose name is on the exam or project. For all project components, the student can receive assistance from individuals other than the instructor only to ascertain the cause of errors. Thus you can get help if you need it to figure out why something doesn't work. You just can't get help from anyone, other than the instructor or TA, to figure out how to make something work. All solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. Help each other understand and debug the programming assignments. However, you should write the code for your programs yourself. Writing it yourself is the only way you will learn. Since everyone is writing their own code, no two programs should be the same or so similar that I could convert one to the other by a simple mechanical transformation (e.g. changing variable names and comments). I consider this plagiarism and a violation of academic code. The following text should appear on all assignments: “I pledge that I have neither given nor received help from anyone other than the instructor for all program components included here.

First violation: Students must meet with the instructor. In most cases, the grade will be split between the authors of the copied programs. Second violation: Students will receive no credit for the assignment, an incident letter will be placed on file in the Computer Science Department, and the matter referred to the Computer Science Department Chair.

Class Attendance: Class attendance is expected and recorded.

ADA Statement: Students with disabilities who wish to set up academic adjustment in this class should give me a copy of their "Confirmation of Eligibility for Academic Adjustment" from the Disability Support Services Office as soon as possible so we can discuss how the approved adjustment will be implemented in this class. Students without this form should contact the Disability Support Services Office, Buillon 205 or dssrecept@cwu.edu or 963-2171.

Caveat: The schedule and procedures for this course are subject to change. It is the student's responsibility to learn of and adjust to changes.