"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, lists, priority queues, dictionaries, trees and graphs."
The official prerequisite is one of CSCI 146 or CSCI 150 as well as concurrent enrollment in MATH 135.
This is an undergraduate course that is a follow-up to an introductory programming course. The goal of that first course can be viewed as gaining the ability to write computer programs for accomplishing tasks. The key in that course was that programs must work correctly for the task at hand. In this course, we will focus on the fact that there are actually many different ways to correctly solve a particular problem and that these different methods may vary greatly in efficiency and adaptability.
What we will find is that writing a "good" program is not as simple as starting with a correct program and then improving it. Instead, the quality of a program is most determined by key thoughts and decisions that take place long before the first line of code might be written. Relevant issues include the choice of data structures that are used to organize all of the information within a program, and the structure and level of generality which allow components of a program to be better maintained, reused, and adapted.
In hand with this emphasis on writing good programs and designing useful data structures, the course will reinforce aspects of object-oriented programming using the C++ programming language. Since the majority of students will enter this course having used Python in CS 150, we do not assume any familiarity with C++ at the onset of this course. In the early parts of the course, we will draw comparisons between these two languages to help in the transition.
We will be using a new version of the course textbook this semester. The first few chapters will be passed out in class, and the text itself will be available starting in February for purchase. Stay tuned for more details.
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.
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.
We expect there to be a total of about 6 written homework assignments during the course. At the end of the semester, we will ignore your lowest of the homework grades, with the remaining homeworks contributing equally to this portion of the grade.
Homeworks will generally be due at the beginning of class on the assigned due date. Late homeworks will not be accepted without previously given instructor approval! The problems will consist of short questions reinforcing the material in the lectures, readings and programs. Each homework will contain one or more practice problems that are not to be turned in and which can be discussed freely between classmates. The problems that are to be submitted for a grade, however, must be done entirely individually. A more complete explanation of our policy towards Academic Integrity is given below.
As discussed below, students are expected to complete assignments individually and using only approved course materials.
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 6-8 programming assignments through the course of the semester. 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.