CS 410 Section 01 - Applied Algorithms Syllabus
Course Coordinator
Cindy Brown

Course Instructor
Tim Sheard

Current Catalog Description
Application of algorithms to solving a variety of problems. Factors influencing choice of algorithms for a given problem. Students will work in groups and individually to solve problems in and outside of class.

Prerequisite by Topic
CS 350, Algorithms and Analysis.

Course Goals
Know and have programmed a variety of algorithms Be able to choose an appropriate algorithm to solve a problem.

Upon the successful completion of this course students will be able to:

  1. Solve at least half of typical programming contest problems within three hours, working in teams. Solve at least one fourth within six hours, working alone.
  2. Apply a repertoire of algorithms and approaches to solving problems, in at least four distinct areas (such as combinatorics, computational geometry, cyphers, balanced tree structures).
  3. Develop alternate approaches to solving a problem and evaluate them for speed, space consumption, and difficulty.
  4. Find relevant information for solving a problem in standard references on algorithms and on the web.
  5. Describe an algorithm both orally and in writing.
  6. Do back-of-the-envelope calculations to estimate time for various algorithms that might be used to solve a problem.

"Programming Challenges," by Skiena and Revilla.

Course References
Introduction to Algorithms, by Cormen et al, and "Programming Pearls," second edition, by Bentley.

Major Topics Covered in the Course
Graph Algorithms, including various searches, spanning trees, and path algorithms. Backtracking and Dynamic Programming. Combinatorics.

Laboratory Projects
There will be a variety of problems presented for solution each week.

Estimated CAC Category Content
Core Advanced
Data Structures 1 1
Algorithms 1 1
Software Design
Computer Organization and Architecture
Concepts of Programming Languages

Theoretical Content
Algorithm analysis, problem abstraction, definition of invariants.

Problem Analysis
Students will analyze programming problems and puzzles, and devise approaches to solving them. The class will work on problems in groups and individually.

Solution Design
Students will design and implement solutions to a variety of programming problems and puzzles. This will be done both in groups and individually, and with problems at a variety of challenge levels.