CSI 3334: Data structures, Fall 2004
Announcements
- Tuesday, 12/14/2004
- That's all, folks! The finals have been graded, and
your raw scores have been entered on Blackboard. I am submitting the official
grades today. Here is the breakdown of the final exam (for those who took
the exam):
- maximum points: 260
- point average: 200.2
- point standard deviation: 37.19
Good job to all who finished! Merry Christmas and have a restful break.
- Thursday, 12/9/2004
- Project 4 is now complete... relax! Just the final left. Your grades
(not including the final, obviously) are now entered on Blackboard, for you to look at. If I had
known earlier this semester that I could make your grades available there,
I would have done so.
If you want, you can leave anonymous feedback on my teaching or this course here: ratemyprofessors.com. Or, you could just tell me if you have any feedback.
Please see also the older announcements.
Objectives
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:
- 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. My best advice is 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 part of the course.
My office is in the Rogers Engineering and Computer Science building. My office hours are M-F, 1:30-3 PM, and by appointment. I am glad to talk to students during and outside of office hours. The TA for the course is Nina Yao.
Schedule
Here is a schedule of the material we will cover:
Week | Dates | New topics | Chapters | Monday | Wednesday | Friday |
---|---|---|---|---|---|---|
1 | Aug 23-27 | Overview, C++, ADTs | 1 | Notes | Notes | Notes, Project 1 assigned |
2 | Aug 30-Sep 3 | Lists | 3 | Notes, Homework 1 assigned | Notes | Notes |
3 | Sep 6-10 | Stacks, queues | Notes, Homework 1 due, answer key | Notes | Notes, Project 1 due, feedback | |
4 | Sep 13-17 | Analysis | 2 | Notes, Homework 2 assigned | Notes, Project 2 assigned | Notes, Drop deadline |
5 | Sep 20-24 | Trees | 4 | Notes | Notes | Notes, Homework 2 due, answer key |
6 | Sep 27-Oct 1 | Trees | Notes | Notes | Notes | |
7 | Oct 4-8 | Trees | Notes | Notes, Project 2 due | Notes | |
8 | Oct 11-15 | Review, midterm | Midterm review | Midterm exam | Fall break | |
9 | Oct 18-22 | Heaps | 6 | Notes | Notes, Project 3 assigned | Notes |
10 | Oct 25-29 | Hashing | 5 | Notes | Notes, Homework 3 assigned | Notes |
11 | Nov 1-5 | Sorting | 7 | Notes | Notes, Homework 3 due, answer key | Notes |
12 | Nov 8-12 | Sorting | Notes, Project 3 due | Notes | Notes, Project 4 assigned | |
13 | Nov 15-19 | Graphs | 9 | Notes, Homework 4 assigned | Notes | Notes |
14 | Nov 22-26 | Graphs | Notes, Homework 4 due, answer key | Thanksgiving break | Thanksgiving break | |
15 | Nov 29-Dec 3 | Special topics | 8, 10, 12 | Notes | Notes | Notes, Project 4 due |
16 | Dec 6-10 | Review | Notes, Last lecture | Finals | Finals |
The final exam is on Tuesday, December 14, 2004 between 9-11 AM.
Textbooks & resources
Required text: we will be using Mark Weiss' textbook Data Structures and Algorithm Analysis in C++ (2nd Edition). 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:
- 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: 30%
- projects: 30%
- homework: 15%
A: 90-100, B+: 88-89, B: 80-87, C+: 78-79, C: 70-77, D: 60-69, F: 0-59
Some homeworks and projects may be worth more than others. Exams 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. Due dates are firm; no late submissions are permitted. 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 until the deadline. 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), you will receive no credit for the project.
If your program is submitted by the deadline, and it compiles and produces identical output to my solution, then your grade will be based on two things:
- Implementation: you must use data structures in an appropriate manner for the project. In addition, your program should not leak any memory. I will test your code for leaks using valgrind.
- Style: adhering to the code style guidelines.
Because the programming projects will be difficult, it is imperative that you start working on them as soon as they are assigned.
Policies
- Check this website every day for updates and announcements. We only meet three times a week, but I may post updates 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 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. If a student attends less than 75% of the classes, he or she will automatically fail the course.
- In order to facilitate keeping attendance, on the second class meeting I will ask you to choose a seat for the rest of the course. Please sit in your chosen seat for the remainder 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 my attention within 2 weeks of receiving the grade or before the end of the semester, whichever comes first. After that, I will not adjust your grade. If you find any mistake in grading, please let me know.
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 © 2004 Greg Hamerly, with some content
taken from a syllabus by Jeff Donahoo.
Computer Science Department
Baylor University