CS201 Data Structures and Algorithms


Printable Version


John C. Lusth office: 3427 SEC
phone: 205-348-1618 email: lusth@cs.ua.edu
home page: http://beastie.cs.ua.edu/cs201 office hours: sign-up sheet is on my office door

Catalog Statement

Provides an introduction to formal techniques for analyzing the complexity of algorithms. The course surveys important classes of algorithms used in computer science and engineering.

Data structures including balanced search trees, heaps, hash tables, and graphs. Algorithm design techniques including divide-and-conquer, greedy method, and dynamic programming. Emphasis on problem solving, design, analysis, and reasoning about data structures and algorithms.

Implementing the Catalog Statement

You will be required to demonstrate your proficiency with implementing algorithms through programming assignments. The C programming language will be the language used for the projects.

You will also be tested on your knowledge of algorithms through two concept exams and a final exam.


CS 101, MATH 301, MATH 302 (with concurrency)
There will be an exam on prerequisite material.


Introduction to Algorithms, Third Edition
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
ISBN-13: 978-0-262-033848
ISBN-10: 0-262-033844


The reading schedule can be found at:

Make sure you read the assigned material, work any exercises, and explore answering any questions prior to class.


Grades will be determined by the following percentages:
10% Prereq Exam (click here for a practice exam)
20% (15%) First Concept Exam
20% (15%) Second Concept Exam
20% (30%) Final Exam
30% Four programming assignments

Grading Methodology

For programming assignments, you must pass all tests. If you fail even one test, you will have to resubmit. You are allowed resubmissions, with each resubmission resulting in a 10 point deduction. If you cannot pass all tests your last resubmission, you will receive a score of 25% if you pass a majority of tests and a zero otherwise. You are guaranteed at least four resubmissions.

Submissions have initial due dates, as specified in the schedule. Missing a submisison or resubmission date is the same as failing all tests. Resubmissions are due the Friday after the previous submission date, unless otherwise specified in the forum (see below). There may be a small window in which you can submit after the due date cutoff time as assignments will be accepted up to the time grading actually commences.

For programming assignments, you will recieve a bonus based upon how successful your initial submission was. The formula for the bonus is the percentage of tests passed divided by twenty. For example, suppose you passed 80% of the tests with your original submission and you passed all tests on your second resubmission. In this case, your score for the assignment would be 100 - 10 - 10 + 80 20 or 84 out of 100. Passing all tests with the original submission will yield a score of 105 out of 100.

These are the kinds of things for which I won't regrade an assignment submission:
Otherwise, these are the kinds of things for which I may/will perform a regrade:
To request a regrade, send me an email with the subject:
replacing the assignment number as appropriate. Give the reason for the request in the body of the email. Requests with other subject lines will be ignored.

For each programming assignment, you must follow the programming guidelines specified in http://beastie.cs.ua.edu/cs201/cstyle.html, unless otherwise specified. These guidelines also apply to tests, as well.

Grading for the class is straight scale with the following cut-offs: 90% and above is an A, 80% and above is a B, 70% and above is a C, 60% and above is a D, and anything lower than 60% is an F. These cut-offs are strict. For example, 79.99999% is a C. The delta for plus-minus is two points. For example, 90..92 will be an A-, while 98..100 will be an A+. You will receive the higher of the two ways of scoring the exams.

Other Details

The following conventions will be followed in CS201. Please make sure that you fully understand each of the items listed below.