CSI 3334: Data structures, Fall 2006
Announcements
- Thu Nov 30 19:40:22 CST 2006
- IMPORTANT: The time for the final exam has been moved to Saturday, December 9th at 11:30 AM in Rogers 104 (our regular classroom).
Please see also the older announcements.
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 practice your problem solving skills while learning about data structures. These problem-solving skills are what you will need to be a successful scientist or engineer.
This course covers:
- fundamental data structures such as arrays, lists, queues, stacks, heaps, trees, and graphs
- standard algorithms to operate on these data structures, including searching and sorting
- separation of interface and implementation using abstract data types
- use of C++ for implementation of the concepts presented in class
- analysis of algorithms for time and space complexity
- appropriateness of different data structures for different tasks
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.
Practical information
Lectures are from 11:00 AM to 11: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 email me to make an appointment at another time, or stop by if I am in my office.
The TA for this course is Joel Anderson.
Schedule
Here is a schedule of the material we will cover:
Week | Dates | New topics | Reading | Monday | Wednesday | Friday |
---|---|---|---|---|---|---|
1 | Aug 21-25 | Overview, C++ review | 1.1-1.6 | Project 0 assigned | Project 1 assigned | |
2 | Aug 28-Sep 1 | Intro to algorithm analysis | 2 | Homework 1 assigned | ||
3 | Sep 4-8 | Algorithm analysis | Labor day | Project 2 assigned | ||
4 | Sep 11-15 | Queues, lists, vectors | 3.1-3.3, 3.6, 3.7 | Homework 2 assigned | ||
5 | Sep 18-22 | Trees | 4 | |||
6 | Sep 25-29 | Trees | ||||
7 | Oct 2-6 | Heaps | 6 | Project 3 assigned | ||
8 | Oct 9-13 | Heaps | Fall break | |||
9 | Oct 16-20 | Hashing, midterm | 5 | Midterm review | Midterm exam | |
10 | Oct 23-27 | Hashing, sorting | 7 (skip 7.4) | Project 4 assigned | ||
11 | Oct 30-Nov 3 | Sorting | ||||
12 | Nov 6-10 | Sorting, Graphs | 9.1-9.5 | Homework 3 assigned | ||
13 | Nov 13-17 | Graphs | Project 5 assigned | |||
14 | Nov 20-24 | Graphs | Thanksgiving holiday | |||
15 | Nov 27-Dec 1 | Algorithm design | 10 | Homework 4 assigned | ||
16 | Dec 4-8 | Algorithm design | Final exams |
The final exam date will be Saturday, December 9th between 11:30 AM and 1:30 PM. NOTE: this is different than the regularly scheduled final time. 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:
- We will use Blackboard as a class discussion board. Feel free to post questions and responses there which do not violate the collaboration agreement.
- Bruce Eckel, Thinking in C++ (2nd edition)
- the Standard Template Library (STL) reference
Grading
Grades will be assigned based on this breakdown:
- midterm exam: 25%
- final exam: 25%
- projects: 25% (including 1% for milestones)
- homework: 25%
Important: All projects must be completed to obtain a passing grade. 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 and are all required, 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
- Check this website every day for updates and announcements. We only meet three times a week, but updates may be posted at any time. It is your responsibility to follow these updates by reading this website.
- All work in this course is strictly individual, unless the instructor explicitly states otherwise. While discussion of course material is encouraged, collaboration on any work for the course is not allowed. Collaboration includes (but is not limited to) discussing with anyone other than the professor any material that is specific to completing an assignment. You are not to work with anyone else on any project or assignment unless your professor expressly permits it. You are encouraged to discuss the course material with the professor, preferably in office hours, and also by email.
- Baylor policy requires 75% class attendance from each student. Even "excused" absences are included in the overall absent count.
- In order to facilitate keeping attendance, please choose a seat on the second class meeting that you will use for the rest of the course.
- Projects and homeworks which are late are not accepted. Exams are the only things which may be made up with prior arrangement (made at least one class before to the exam) or due to illness, with a note from a health care professional.
- Bring any grading correction requests to your professor's attention within 2 weeks of receiving the grade or before the end of the semester, whichever comes first.
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.
- Copying another student's work. Simply looking over someone else's source code is copying.
- Providing your work for another student to copy.
- Collaboration on any assignment, unless the work is explicitly given as collaborative work.
- Using notes or books during any exam.
- Giving another student answers during an exam.
- Reviewing a stolen copy of an exam.
- Plagiarism.
- Studying tests or using assignments from previous semesters.
- Providing someone with tests or assignments from previous semesters.
- Taking an exam for someone else.
- Turning in someone else's work as your own work.
- Studying a copy of an exam prior to taking a make-up exam.
- Providing a copy of an exam to someone who is going to take a make-up exam.
- Giving test questions to students in another class.
- Reviewing previous copies of the instructor's tests without permission from the instructor.
Copyright © 2006 Greg Hamerly, with some content
taken from a syllabus by Jeff Donahoo.
Computer Science Department
Baylor University