The design, implementation, and use of data structures. Principles of abstraction, encapsulation, and modularity to guide in the creation of robust, adaptable, reusable and efficient structures. Specific data types to include stacks, queues, dictionaries, trees, and graphs.
A "C-" or better in CSCI 1300; passing grade or concurrent enrollment in MATH 1660.
This course is a follow-up to introductory programming, where the focus is primarily on learning how to solve a problem using an object oriented framework. However, in this course, we focus on the fact that there are often multiple ways to solve a problem, with tradeoffs in the approaches that are possible. The goal of this course is to learn the various types of data structures which are commonly used throughout computer science, as these are the building blocks of most larger projects.
In particular, we will discuss tradeoffs between various operations, as many data structures will be faster at some operations only at the cost of other ones. In addition, space is a factor, since some algorithms require more space on the computer than others, which can be a huge factor with large data sets.
There is no required textbook for this course.
Note that there is a recommended textbook for this course, but it is not required. I have found that most students like having the textbook for reference or in case they miss class (to review the material in more depth), but many online resources are also available. My presentation is based on the textbook but is not identical, so I leave it up to you if you would like to purchase the book. The recommended textbook for this course is Data Structures and Algorithms in C++, by Michael Goodrich, Roberto Tamassia, and David Mount.
Email contact with the course instructor is a necessity in this class, since homework will all submitted via email. I will check email several times throughout the work day, and will also check email once per evening to answer questions and resolve issues. Email contact over the weekend may be more sporadic, although I will be sure to check at least once.
We will use a git system this year to submit both labs and homeworks. Stay tuned for more details, which will be posted on the announcement page and discussed in class.
Computers will be an integral part of this course, both inside and outside of class. However, out of courtesy to both the instructor and other students, please do not use the lab computers for non-class related activity. In particular, you do not need to be using a computer unless an exercise or in class activity requiring them is in progress.
You are unlikely to need cell phones during the course of lecture. Please ensure that your cell phone is set to vibrate or silent during lecture, and do not send text messages of any kind.
Most Tuesdays will be devoted to a hands-on problem. Although we hope to have students complete it in class, we will allow each to be submitted anytime by 11:59pm on the following Friday. Each lab will also have a pre-lab associated with it which will be due before class on the day of the lab (via email).
These problems will be essentially graded on a pass/fail scale. More formally, each will be worth up to 3 points. The pre-lab is worth 1 point. The remaining two points are awarded for a successful completion of the lab work. One point will be awarded for a sincere but unsuccessful attempt, even if it does not work at all. At the end of the semester, we will ignore your lowest of the lab grades, with the remaining scores contributing equally to this portion of the grade.
We expect about 12-13 assignments through the course of the semester. Some will be due via email submission (usually due by 11:59pm in these cases), while others may be done on paper and due at the start of class. Please read the academic integrity section of this document carefully, since I expect students to work on their own material and hold to high standards of behavior on all assignments.
For programming assignments, late submissions will be accepted with a penalty of 10% per hour the assignment is late. For example, for a program due at 11:59pm, anything submitted between midnight and 12:59am will be worth at most 90% of full credit; anything submitted between 6am and 6:59am will be worth at most 30% of the full credit.
On certain assignments, you will be required to work individually; on others you will be allowed to work in pairs. Early in the course you will have approximately one week for each assignment; later in the course you will often have two weeks.
Students will also be able to drop their lowest programming assignment score at the end of the semester.
Letter grades will be based on each students overall percentage of awarded points according to the following formula.
The programming and homework assignments provided will be challenging enough for most students, so I would like for students to focus on the assignments provided.
Upon occasion (and solely at the instructor's discretion), some small extra credit activities may be included, either by announcement in class or as part of an assignment. Please keep in mind that the extra credit is unlikely to significantly affect your grade; if you are concerned about your final grade, it is much better to focus your energy on the regular assignment. Extra credit is solely designed to provide an opportunity to students who wish to explore the topics further.
Late homework or programming assignments will suffer a penalty of 10% for every hour they are late. For example, homework which is submitted between midnight and 12:59am will be worth at most 90%o of the total credit; anything submitted between 6am and 6:59am will be worth at most 30% of the full credit.
In unusual circumstances, such as extreme illness or injury (documented by a doctor's note), family emergencies, etc., please contact the instructor as early as possible to arrange accomidations.
I am happy to regrade any assignments, programs, quizzes or exam problems which you think were unfair or incorrect. Please bring me the original assignment, plus a written explanation of your question or complaint, within two weeks of the time the paper in question is graded and returned to you.
In the context of this course, I encourage students to discuss general course material, which includes studying for exams, sharing notes if a student must miss class, and working on any practice problems which are assigned. We will also have occasional programming assignments that will be completed in pairs. However, unless clearly stated otherwise in the assignment description, any work which will be submitted for a grade must be completed by individuals. In addition, the only acceptable sources of information are the course textbook, the instructor, official university tutors, or other sources which are explicitly mentioned in an assignment. Students may not use other sources, including (but not limited to) websites other than the official course website or those explicitly listed in course materials, textbooks other than those officially listed below, or students (either past or present).
Students who violate academic integrity policies will be reported to the department. First time offenses on homework will result in a minimum of a failing grade on the assignment in question, with egregious or repeated offenses resulting in failure in the course. In addition, students may be referred to the College of Arts and Sciences for further disciplinary action.
The following is a statement of minimum standards for student academic integrity at Saint Louis University; I expect full compliance with the policies described.
The University is a community of learning, whose effectiveness requires an environment of mutual trust and integrity, such as would be expected at a Jesuit, Catholic institution. As members of this community, students, faculty, and staff members share the responsibility to maintain this environment. Academic dishonesty violates it. Although not all forms of academic dishonesty can be listed here, it can be said in general that soliciting, receiving, or providing any unauthorized assistance in the completion of any work submitted toward academic credit is dishonest. It not only violates the mutual trust necessary between faculty and students, but also undermines the validity of the Universityï¿½s evaluation of students and takes unfair advantage of fellow students.
Further, it is the responsibility of any student who observes such dishonest conduct to call it to the attention of a faculty member or administrator.
Examples of academic dishonesty would be copying from another student, copying from a book or class notes during a closed-book exam, submitting materials authored by or editorially revised by another person but presented as the studentï¿½s own work, copying a passage or text directly from a published source without appropriately citing or recognizing that source, taking a test or doing an assignment or other academic work for another student, tampering with another studentï¿½s work, securing or supplying in advance a copy of an examination without the knowledge or consent of the instructor, and colluding with another student or students to engage in an act of academic dishonesty.
Where there is clear indication of such dishonesty, a faculty member or administrator has the responsibility to apply appropriate sanctions. Investigations of violations will be conducted in accord with standards and procedures of the school or college through which the course or research is offered. Recommendations of sanctions to be imposed will be made to the dean of the school or college in which the student is enrolled. Possible sanctions for a violation of academic integrity include, but are not limited to, disciplinary probation, suspension, and dismissal from the University.
In recognition that people learn in a variety of ways and that learning is influenced by multiple factors (e.g., prior experience, study skills, learning disability), resources to support student success are available on campus. Students who think they might benefit from these resources can find out more about:
Students who believe that, due to a disability, they could benefit from academic accommodations are encouraged to contact Disability Services at 314-977-8885 or visit the Student Success Center. Confidentiality will be observed in all inquiries.
Course instructors support student accommodation requests when an approved letter from Disability Services has been received and when students discuss these accommodations with the instructor after receipt of the approved letter.
Our department employees many junior/senior computer science majors to help out in our department labs. Those students are also available to provide assistance with course materials at such times.
Our department web page maintains a current list of the available times and locations.
As stated in the Academic Integrity policy, these workers are an acceptable resource for help, yet you should still document both the source of the help as well as the extent, if significant.