CSC500 MSCS
Advanced Algorithms


Description:

In this class we will cover a number of ideas and techniques useful for designing and analyzing data structures and algorithms. In particular, we will introduce mathematical techniques for analyzing upper bounds for graphs, dynamic programming, combinatorial algorithms, computational geometry, encryption, parallel models, and NP-Completeness. Algorithm design techniques include brute force, divide-and-conquer, decrease-and-conquer, transform-and-conquer, greedy, and dynamic programming. Use of time and space complexity is used in evaluating algorithm efficiency and asymptotic performance. We will also review a variety of composite data types including arrays, records, strings, and sets.

Prerequisites

Computer Science 310, Math 241, or consent of instructor

Meetings

Tuesday, 6:00-9:30 PM, Room D8

Syllabus



Lecture notes:
Week 1:Course/topic introduction:
Lecture 1-A
Lecture 1-B
Week 2:Course/topic introduction:
Lecture 2-A
Lecture 2-B
Problem Set 1
Problem Set 1 Solutions
Week 3:Course/topic introduction:
Lecture 3-A
Lecture 3-B
Problem Set 2
Problem Set 2 Solutions
Recurrence Equations
Week 4:Course/topic introduction:
Lecture 4-A
Lecture 4-B
Business by numbers
Week 5:Course/topic introduction:
Lecture 5-A
Problem Set 3
Practice Quiz 1
Practice Quiz 1 Solutions
Week 6:Course/topic introduction:
Lecture 5-B
Problem Set 4
Week 7:Course/topic introduction:
Lecture 6-A
Lecture 6-B
Lecture 7-A
Problem Set 5
Week 8:Course/topic introduction:
Lecture 7-B
Lecture 8-A
Lecture 8-B
Problem Set 6
Week 9:Course/topic introduction:
Quiz 2
Week 10:Course/topic introduction:
Lecture 9-A
Lecture 9-B
Lecture 10
Problem Set 7
Week 11:Review for Exam
Take-Home Final Exam
Return Exam by 5:00 PM on November 12