CSI 3334: Data structures, Fall 2020
Data structures and the algorithms that operate on them are the keys to making efficient software. They are also very interesting. This course will cover data structures in a way that exercises your problem-solving skills. These problem-solving skills are what you will need to be a successful programmer, scientist, engineer, or mathematician.
This course covers:
- fundamental data structures: arrays, lists, queues, stacks, heaps, trees, and graphs
- appropriateness of different data structures for different tasks
- standard algorithms to operate on data structures, including searching and sorting
- analysis of algorithms for time and space complexity
- data abstraction (separation of interface and implementation)
- C++ implementation
This is a difficult course. My recommendation is to attend lectures, study hard, start projects early, and seek help from the professor when you need it.
For the Fall 2020 semester, this class is online, meaning that we will use the scheduled class times for virtual meetings on Zoom, as necessary.
We will use Canvas to organize our course material. There you will find links to lectures, all the work we will do in the course, as well as discussions.
We will use the scheduled class meeting times to meet online for (mandatory) question-and-answer sessions. Before each meeting, you should have viewed the lectures for the week, and come prepared to discuss the material, driven by your questions.
This course benefits from the TA help of Jingya Wang. While TAs assist in grading assignments, for this course they do not assist in lecturing, helping students with assignments, or helping students with projects. Please talk with Dr. Hamerly for any assistance in the course.
The course activity is organized by week on Canvas.
The latest university finals information is available at the registrar web page for final exam scheduling.
Textbooks & resources
Required text: we will be using Mark Weiss' textbook Data Structures and Algorithm Analysis in C++ (4th Edition). An older edition might be okay, 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 Canvas for keeping organizing much of the course material and keeping grades.
- Project submission guidelines for this course.
- Using the command-line shell for testing in this course.
- Coding style guidelines for this course.
- Here is a sample vimrc file containing many of the settings I use in the VIM editor.
- The C++ language and standard library reference.
- Bruce Eckel, Thinking in C++ (2nd edition).
Grades will be assigned based on this breakdown:
- projects: 35% (including 5% for milestones)
- homework: 30%
- midterm exam: 15%
- final exam: 20%
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 did not complete two of the projects, then your letter grade will be a 'D'.
Different projects and assignments will have different point values. Points are not comparable across assignments; each graded homework/project/exam/etc. will have an associated weight which determines how it factors into your grade.
In-class exams are closed-book. The final will be comprehensive.
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:
F < 60 ≤ D- < 62 ≤ D < 67 ≤ D+ < 70 ≤ C- < 72 ≤ C < 78 ≤ C+ < 80 ≤ B- < 82 ≤ B < 88 ≤ B+ < 90 ≤ A- < 92 ≤ A
- This website contains the official course information. Please check it regularly for updates.
- All work in this course is strictly individual, unless the instructor explicitly states otherwise. While discussion of course material is encouraged, collaboration on assignments is not allowed. Collaboration includes (but is not limited to) discussing with anyone (other than the professor) anything 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.
- Exams 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.
- Class should be a place you are glad to go. After all, you signed up for the class, and we get to talk about data structures!
- In order to facilitate keeping attendance, please choose a seat that you will use for the rest of the course.
Plagiarism or any form of cheating involves a breach of student-teacher trust. This means that any work submitted under your name is expected to be your own, neither composed by anyone else as a whole or in part, nor handed over to another person for complete or partial revision. Be sure to document all ideas that are not your own. Instances of plagiarism or any other act of academic dishonesty will be reported to the Honor Council and may result in failure of the course. Not understanding plagiarism is not an excuse. I expect you as a Baylor student to be intimately familiar with all aspects of the Honor Code.
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.
- Using a source other than the course textbook, the course website, or your professor to obtain credit for any assignment, project, or exam.
- 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. Any discussion of an assignment or project is considered collaboration.
- Using notes or books during any exam.
- Giving another student answers during an exam.
- Reviewing a stolen copy of an exam.
- 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.
Title IX Office
Baylor University does not discriminate on the basis of sex or gender in any of its education or employment programs and activities, and it does not tolerate discrimination or harassment on the basis of sex or gender. This policy prohibits sexual and gender-based harassment, sexual assault, sexual exploitation, stalking, intimate partner violence, and retaliation (collectively referred to as prohibited conduct). For more information on how to report, or to learn more about our policy and process, please visit www.baylor.edu/titleix. You may also contact the Title IX office directly by phone, (254) 710-8454, or email, TitleIX_Coordinator@baylor.edu.
Copyright © 2020 Greg Hamerly, with some content
taken from a syllabus by Jeff Donahoo.
Computer Science Department
This page was last updated January 19, 2023 at 14:22 (America/Chicago)