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.
Computer Science 310, Math 241, or consent of instructor
Tuesday, 6:00-9:30 PM, Room D8
| 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 | ||