CSI 3334: Data structures, Spring 2007

Announcements

Tue Feb 27 17:00:23 CST 2007
I will be out of town from Wednesday at noon through the weekend. I may or may not have email access during this time; please send email anyway if you have questions and I will try to get to an internet terminal.
Wed Jan 24 15:48:57 CST 2007
My office hour will be cancelled this Friday. If you need help that day, please come by after 3 PM.
Thu Jan 18 11:58:56 CST 2007
Homework 1 has been posted; please get started on it!
Wed Jan 17 09:33:53 CST 2007
Since the university cancelled class today, we will move today's milestone to be due Friday, but everything else remains the same. Therefore, you should turn in two milestones for project 1 on Friday.
Fri Jan 12 10:02:58 CST 2007
If you want to attend an extra lecture on C++ class inheritance, please send me an email. If there's interest I'll hold it next Wednesday immediately after class. It won't count for any grade or towards attendance; just if you're interested.
Wed Jan 3 09:19:59 CST 2007
Here are some notes on calculating logarithms in T(n) and O(f(n)) analysis, which we will need in a few weeks.
Wed Jan 3 09:14:45 CST 2007
Welcome to data structures! Please read this syllabus and the linked pages carefully. Project 0 has been posted, and is due this Friday. Quiz 1 is on blackboard.

Overview

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 learn about data structures in a setting that exercises your problem-solving skills. These problem-solving skills are what you will need to be a successful scientist, engineer, or mathematician.

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. It's in your best interest to attend the lectures, ask questions, and start projects early. It's also important that you seek help when needed from the professor.

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, and 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 make an appointment for another time, or just stop by.

The TA for this course is TBA.

Schedule

Here is a schedule of the material we will cover:

Week Dates New topics Reading Monday Wednesday Friday
1 Jan 8-12 Overview, C++ review 1.1-1.6 Project 0 assigned Project 1 assigned
2 Jan 15-19 Intro to algorithm analysis 2 MLK Jr. holiday Homework 1 assigned
3 Jan 22-26 Algorithm analysis Project 2 assigned
4 Jan 29-Feb 2 Queues, lists, vectors 3.1-3.3, 3.6, 3.7 Homework 2 assigned
5 Feb 5-9 Trees 4
6 Feb 12-16 Trees
7 Feb 19-23 Heaps 6 Project 3 assigned
8 Feb 26-Mar 2 Heaps Midterm review Midterm exam
9 Mar 5-9 Hashing, midterm 5
Mar 12-16 Spring break
10 Mar 19-23 Hashing, sorting 7 (skip 7.4) Project 4 assigned
11 Mar 26-30 Sorting
12 Apr 2-6 Sorting, Graphs 9.1-9.5 Homework 3 assigned Easter holiday
13 Apr 9-13 Graphs Easter holiday Project 5 assigned
14 Apr 16-20 Graphs
15 Apr 23-27 Algorithm design 10 Homework 4 assigned
16 Apr 30-May 4 Algorithm design Final exams

The final exam date will be Thursday, May 3rd between 9:00 AM and 11:00 AM. 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++ (3rd Edition). You can purchase an older edition, but you are responsible in case there are differences between the editions. You can purchase this book from the Baylor bookstore or amazon, among other places.

Further online resources:

Grading

Grades will be assigned based on this breakdown:

Important: Each project not completed by the end of the semester will result in a drop of one letter grade. For example, if you would have received a 'B', but you completed only 5 of the 6 projects, then your letter grade will be a 'C'. Please see the project submission guidelines for specific information on how to submit your projects, and the coding style guidelines for information on how to format your code. Because the programming projects can be difficult, it is imperative that you start working on them as soon as they are assigned.

Different projects and assignments may have different point values. In-class exams are closed-book. The final will be comprehensive.

You will have the opportunity to test yourself about the reading material with quizzes on Blackboard. You can also see your assignment scores on Blackboard.

Homework is due at the beginning of class; homework turned in after it has been collected but before the end of class will receive a 20% penalty. Homework will not be accepted after class on the due date.

Final letter grades will be assigned at the discretion of the instructor, but here 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

Policies

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, here is a minimal list of activities that will be considered cheating in this class:


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