CSI 3334: Data structures, Spring 2006


Mon May 8 10:23:34 CDT 2006
All projects must be completed by Wednesday, May 10, 11:59:59 PM. I am in my office this week if you want to talk or need help; I am also available via email.
Mon Mar 27 17:19:34 CST 2006
Please note that the hashtable question for homework 3 has been updated, see the homework web page for an explanation.
Wed Mar 22 10:23:58 CST 2006
We will not hold class on April 10th or 12th due to the ICPC in San Antonio.
Mon Jan 9 08:09:22 CST 2006
Welcome to data structures! Project 0 has been posted, and is due this Friday, so get started!

Please see also the older announcements.


This is a course in data structures, which are at the heart of computer science. Data structures and the algorithms that operate on them are the keys to making efficient software. They are also very interesting. This course will allow you to practice your problem solving skills using the material learned in the class. These are the skills you will need to be a successful scientist or engineer.

This course covers:

This is a difficult course. Be prepared to invest the time necessary to understand the concepts, and to do the programming projects. My best advice is to attend the lectures, ask questions, and start projects early.

Practical information

Lectures are from 9:00 AM to 9:50 AM in Rogers 104 on Mondays, Wednesdays, and Fridays. For this course you can use the lab in Rogers 112, though there is no lab component of the course.

My office is in the Rogers Engineering and Computer Science building. My office hours are listed on my home page. I am glad to talk to students during and outside of office hours. If you can't come to my office hour, please email me to make an appointment at another time.

The TA for this course is Josh Johnston.


Here is a schedule of the material we will cover:

Week Dates New topics Reading Lecture notes Monday Wednesday Friday
1 Jan 9-13 Overview, C++, ADTs 1.1-1.6 Notes Project 0 assigned Quiz #1, Project 1 assigned
2 Jan 16-20 Intro to analysis, stacks 2.1-2.2, 3.1, 3.3 Notes MLK holiday Homework 1 assigned Quiz #2
3 Jan 23-27 Lists, Queues 3.2, 3.4 Notes Quiz #3
4 Jan 30-Feb 3 Analysis 2 Notes Homework 2 assigned Project 2 assigned
5 Feb 6-10 Trees 4 Notes Quiz #4
6 Feb 13-17 Trees Notes Quiz #5
7 Feb 20-24 Heaps 6 Notes Quiz #6
8 Feb 27-Mar 3 Heaps Notes Project 3 assigned
9 Mar 6-10 Hashing, midterm 5 Notes Midterm review Midterm exam
Mar 13-17 Spring break
10 Mar 20-24 Hashing Notes Homework 3 assigned Quiz #7
11 Mar 27-31 Sorting 7 Notes Quiz #8
12 Apr 3-7 Sorting, Graphs 9 Project 4 assigned, Quiz #9
13 Apr 10-14 Notes ICPC ICPC Easter holiday
14 Apr 17-21 Graphs Easter holiday Homework 4 assigned
15 Apr 24-28 Graphs Notes Quiz #10
16 May 1-5 Review Last lecture Study day

The final exam date will be Monday, May 8th between 2:00 and 4:00 PM. The latest university finals information is available here.

Textbooks & resources

Required text: we will be using Mark Weiss' textbook Data Structures and Algorithm Analysis in C++ (2nd Edition). There is a newer edition, but we are continuing to use edition 2. You can purchase this book from the Baylor bookstore or amazon, among other places.

Optional text: I also highly recommend the book Introduction to algorithms, by Thomas Cormen, Charles Leiserson, Ronald Rivest, and Clifford Stein. This is in my opinion the best general-purpose book on algorithms, period. It is well worth buying and keeping. You can purchase it at many places, including amazon.

Further online resources:


Grades will be assigned based on this breakdown:

Final letter grades will be assigned at the discretion of the instructor, but this is a minimum guideline for letter grades:
A: 90-100, B+: 88-89, B: 80-87, C+: 78-79, C: 70-77, D: 60-69, F: 0-59

Important: All projects must be completed to obtain a passing grade. If you do not finish some project by the time grades are due, you will not pass this course.

Some homeworks and projects may be worth more than others. Exams and quizzes are closed-book. The final will be comprehensive.

There will be several homework assignments. Homeworks are due at the beginning of class on the due dates for full credit. Homeworks turned in after I have collected them but before the end of class will receive a 20% penalty. No homeworks will be accepted after class on the due date.

Project grading

There will be several programming projects. Please see the project submission guidelines for specific information on how to submit your projects.

You will submit your solutions electronically, and you may submit them as many times as you like. Only the last submission you make will be graded. When you submit your solution, the submission system will test it on my hidden test cases, to which you will not have access. You will receive a response about whether your program's output matched the output of my solution on the hidden inputs. If your program does not produce identical output to my solution on the test cases (character for character), or if you do not follow the style guidelines, or I judge that your project has some flaw that was not discovered by the testing system, then your project does not yet pass or receive credit.

In addition, your program should not leak any memory. I will test your code for leaks using valgrind.

Because the programming projects will be difficult, it is imperative that you start working on them as soon as they are assigned.


Academic honesty

I take academic honesty very seriously.

Many studies, including one by Sheilah Maramark and Mindi Barth Maline have suggested that "some students cheat because of ignorance, uncertainty, or confusion regarding what behaviors constitute dishonesty" (Maramark and Maline, Issues in Education: Academic Dishonesty Among College Students, U.S. Department of Education, Office of Research, August 1993, page 5). In an effort to reduce misunderstandings in this course, a minimal list of activities that will be considered cheating have been listed below.

Copyright © 2006 Greg Hamerly, with some content taken from a syllabus by Jeff Donahoo.
Computer Science Department
Baylor University

valid html and css