RAIK 283 - Data Structures and Algorithms

Fall 2009

TTh 1:30-3:30pm, Kauffman 112

Instructor: Vinod Variyam

262 Avery Hall, 472-5002
Office hours: 12:20pm-1:20pm TuTh
vinod@cse.unl.edu

Course Summary

An algorithm is a set of instructions that, when followed, solve a specific problem. Programs are implementations of algorithms that are executed by computers. A data structure is a way of storing data in a computer so that it can be retrived efficiently when required. Algorithms for problems such as sorting and graph reachability are at the heart of many real-life computer applications. The efficiency/correctness of these algorithms directly influence the efficiency/corretness of the applications. Often a well-designed data structure is critical for designing ultra-fast algorithms. The goals of this course are to study classic data structures and algorithms that solve common problems and to learn standard approaches to solving new problems. A rigorous approach to the analysis and comparison of algorithms will be followed that includes asymptotic notation and proofs of correctness. Discrete mathematics, which forms the foundation for rigorous analysis, will be covered as needed. The course will involve substantial programming and written assignments. A broader set of objectives for this course is to teach critical thinking, how to learn, and how to communicate technical concepts. These objectives will be met through lectures, challenging assignments, regular quizzes, a midterm, and a final examination. The following topics will be covered:
If time permits, we will also try to cover some advanced topics including networks flows and linear programming.

Course Materials and Links

Topics covered so far
Homework 1 (pdf)