the cycle of algorithms

Course Syllabus

CS 3530

Design and Analysis
of Algorithms

Spring Semester 2014

[ Basics | Goals | Requirements | Evaluation | Policies | Computing | Tentative Schedule ]


Instructor: Eugene Wallingford


Course Goals

The study of algorithms is one of the oldest and most important elements of computer science. An algorithm describes how to solve a problem. Computer scientists have discovered families of algorithms for solving common, challenging problems. If you understand these patterns in problem solving, and can use them to design solutions to the problems you encounter, then you will be a more effective designer and implementer of software.

This course aims to help you develop a deep, hands-on understanding of the essentials of algorithms and their design. It does so by confronting you with challenging problems and helping you to see patterns in the algorithms that solve them. We will first lay the foundation for the analysis of algorithms and then use those ideas to explore several families of common problems and the algorithms that solve them.

By the end of the semester, you should feel comfortable:

Note that this course is not about any particular programming language, or style of programming. ...

Course Requirements

Course Evaluation

You will earn your grade based on your performance on homework assignments, exams, and the final examination. I assign final grades using the following distribution:

Item Number Weight
Homework 6-12 25%
Exams 3-5 45%
Final exam 1 30%

Grades will be assigned using an absolute scale:

This means that there is no curve.

Course Policies

Computing Environment

We will use computing resources in this course for two purposes: to communicate with one another and to implement programs, in particular your compiler.

Communication will be done by e-mail and the web. I will post materials for the course to the CS 3530 web page, and we will make use of other web-based resources when appropriate. We also have a class-wide mailing lists,, by which we carry on discussion outside the confines of class meetings. Be sure that you remain current in your use of these resources!

You may write your programs in any language of your choice. In past semesters, students have written their programs in Java, C, Python, Scheme, Ruby, and Common Lisp. Each of these languages has specific advantages and disdvantages as the implementation language of a compiler. C and Java are relatively standard compiler-writing languages in the industry. Numerous language resources are available on the web, and implementations are available for all contemporary platforms, including Unix, Mac OS X, and Windows. I am open to implementations in other languages, including other scripting languages and system languages such as Ada.

My platforms for the course are Mac OS X 10.[5-6] and the CHAS Linux system for students. They provide Version 1.6.x of the Java Development Kit and standard gcc tools for working in C, as well as current versions of Python, Racket, Ruby, and many other languages.

You may develop in any environment you like, as long as I can compile and run your programs on these machines. I will be more or less helpful with programming issues depending on which language you choose, because I know some languages better than others.

Tentative Schedule

The following schedule gives a rough sketch of the topics we will cover and the distinguished dates this semester. The exam dates a very tentative. If I decide to re-schedule a exam, I will notify you at least one week prior to the scheduled date.

Week Dates Topics Special Events
1 Introduction to course .
2 Design of algorithms .
3 Fundamental data structures .
4 Analysis of algorithms .
5 Brute force; Divide and conquer Exam 1 (Tue)
6 Decrease by one .
7 Decrease by one .
8 Decrease in other ways .
9 Instant simplification Exam 2 (Tue)
. Spring Break .
10 Representation change .
11 Space-time trade-offs .
12 Dynamic programming .
13 P, NP, and NP-complete problems Exam 3 (Tue)
14 Greedy algorithms .
15 Miscellaneous topics; course wrap-up .

The FINAL EXAM is Thursday, May 8, from 3:00 PM - 4:50 PM.

Eugene Wallingford .... .... January 22, 2014