- This course will introduce and familiarize the students with data structures and algorithms
for solving real problems that arise frequently in a variety of practical applications.
- Principles and techniques of computational complexity.
- Design and analyze new algorithms, via dynamic programming, greedy strategy, approximation methods
Knowledge of C++ programming and CPE 360
an equivalent undergraduate-level course of data structures and algorithms
Introduction to Algorithms, 2nd Edition. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein, MIT Press.
Data Structures, Algorithms, and Applications in C++, 2nd Edition, Sartaj Sahni, Silicon Press.
- Methods for expressing and comparing complexity of algorithms: worst and average cases lower bounds on algorithm classes, verification
- Application of such analysis to sorting: heap sort, merge sort, bubble sort, quick sort, shell sort, insertion sort, radix sorting
- Elementary data structures: arrays, stacks, queues, linked lists, heaps, trees, hashing
- Advanced data structures: binary search trees, B-trees, AVL trees, binomial heaps, Fibonacci heaps
- Graph algorithms: breadth-first search, depth-first search, minimum spanning trees, single-source shortest paths
- NP-complete and NP-hard problems
- Algorithm design: greedy algorithms, dynamic programming, divide and conquer, approximation algorithms.
Homework(5 homeworks, 10% each): (50%) There will be regular homework assignments including theory problems and programming assignments.
Midterm: (20%) There will be one midterm exam.
Final Exam: (25%) There will be a final exam. The final exam is comprehensive.
Class Attendance: (5%) It is important to attend lectures and provide course evaluation at the end.
All exams are close book and close notes.
Students are expected to attend all lectures and perform all reading assignments in the course notes and textbook.
Students will be evaluated according to their performance on class attendance, homework, midterm and final exam.
Working Together and Academic Honesty
Cheating on homework and exams will not be tolerated. We want to protect the fairness and integrity of the class.
The students can discuss about the course materials and homework problems together.
But each student needs to write his/her own solutions so that to make sure everyone fully understand the concepts introduced in this course.