CS201 Data Structures and Algorithms

Syllabus

## Instructor

 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.

## Prerequisites

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

## Textbook

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

## Topics

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% First Concept Exam 20% Second Concept Exam 20% Final Exam 30% Four programming assignments

For programming assignments, you must pass all tests. If you fail even one test, you will have to resubmit. You are allowed four resubmissions, with each resubmission resulting in a 10 point deduction. If you cannot pass all tests after your fourth resubmission, you will receive a score of 25% if you pass a majority of tests and a zero otherwise. 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.

Submissions and resubmissions have due dates, as specified in the schedule. Missing a submisison or resubmission date is the same as failing all tests. Generally, but not always, submission and resubmission dates are seven days apart. There may be a small window in which you can submit after the due date cutoff time, 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+\genfrac{}{}{0.1ex}{}{80}{20}$ or 84 out of 100. Passing all tests with the original submission will yield a score of 105 out of 100.

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+.

These are the kinds of things for which I won't regrade an assignment submission:
• something incorrect that was pointed out as incorrect in a previous submission
• something incorrect that was shown how to be made correct in a previous submission
• something incorrect that the test dropbox would have pointed out as incorrect
• something incorrect that was shown how to be made correct in a task description
• other things in a similar vein
Otherwise, these are the kinds of things for which I may perform a regrade:
• you accidentally left in some debug code
• other things in a similar vein
These are the kinds of things for which I will most assuredly perform a regrade:
• your reasonable interpretation of a task description differs from my interpretation
To request a regrade, send me an email with the subject:
```    CS201 REGRADE ASSIGN 0
```
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.

## Other Details

The following conventions will be followed in CS201. Please make sure that you fully understand each of the items listed below.
• Attendance is not required. However, I generally will not answer questions that I have already answered in class. Use the forum (see below) to ask questions about material you missed from being absent.

• There are no make-up exams (unless you have a written, university-authorized excuse). If you miss an exam, a zero will be recorded for your score. You have two weeks from the day a test is returned to contest its scoring.

• Please be in your seat by the beginning of class. There is to be no food or drink in the classroom. Sleep is allowed only in the event of a stultifyingly boring lecture.

• I will ignore all requests for extra credit or for individual treatment that would be unfair to other students.

• Signing up for and keeping current with the CS201 Forum at http://beastie.cs.ua.edu/mybb is mandatory. Schedule changes, assignment clarifications, and such will be announced via the forum. Registrations will not be allowed after the first week of class. If you don't register, you will be allowed to read the forum but you will not be able to post.

• Programming assignments are to be submitted electronically by 4:59:59 p.m. on the day they are due. For these projects, there is a grace period: late projects will be accepted up to 48 hours after the due date with no penalty. Please do not ask for an extension as I will most assuredly say no and then we'll both end up feeling bad.

• Each assignment is to be done individually. There can be no sharing of code or solutions.

• The University of Alabama Code of Academic Conduct will be rigorously enforced. Please review the code at http://www.studenthandbook.ua.edu/academicintegritypolicies.html and be sure to follow this Code in all activities associated with CS201. Any violations of this code will be handled as an Academic Misconduct case. The minimum punishment requested for plagiarism, or any other academic misconduct, is dismissal from the class with a failing grade. You are required to protect your work from plagiarism. If your work is plagiarized, it will be assumed that you were a willing participant in the plagiarism and you will receive the same punishment as the plagiarist, absent extraordinary evidence to the contrary.