Motivation:
It is an established paradigm in computer science to express real-life problems in terms of graphs, with the solution taking the form of a graph computation. In turn, due to their wide spectrum of applications, graph problems require fast solutions. In many contexts, inefficient solutions to graph problems are the bottleneck hampering any increase in computational power from translating into increased performance of the same order of magnitude. The main goal of this course is to equip the students with the grath-thoeretical tools needed in various problem-solving environments.
Course Description:
The purpose of this course is to investigate a variety of graph algorithms, both sequential and parallel, known to have applications to such areas as scheduling, robotics, computational geometry, VLSI design, and pattern recognition. The students will learn graph algorithms both sequential and parallel in a hybrid enviornment: the course contains formal lectures along with team-projects. Each team-project provides the complete solution to a significant problem originating in computer science or computer engineering and presents the results to the class in both oral and written form.
Course Contents:
[1.] Review of Graph-Theoretic Concepts; [2.] Using Graphs as Models for Real-life Phenomema; [3.] Graph Traversal Algorithms; [4.] Expected Performance of Graph Algorithms; [5.] Using Interval Graphs as Descriptors of Linear Phenomena; [6.] Using Chordal Graphs to Model Tree-Related Computations; [7.] Parallel Graph Algorithms; [8.] Search Algorithms for Discrete Optimization Problems; [9.] Project.
Prerequisites: CS483 or equivalent