Computer Science 290
If you wish, you may download a printable version of the original syllabus. However, all of that information is also on this web page and the web page will be updated as the course proceeds, whereas the printed syllabus will not.
"An implementation-based study of object-oriented software development. Teams will design and create medium-scale applications. Additional focus on the design and use of large object-oriented libraries, as well as social and professional issues."
The official prerequisite is a grade of C- or better in CSCI 180.
The primary focus of the course is the process of designing software using object-oriented principles. The goal is to provide knowledge and experience when decomposing a project into a cohesive set of software components. With good design, those components can readily be implemented, maintained, and reused. With experience, successful design patterns can be recognized and applied.
In our programming sequence at SLU, this course is somewhat of a bridge between the introductory courses CSCI 150 and CSCI 180, and more advanced courses such as Software Engineering. The earlier courses introduced object-oriented principles and mechanisms, but there was relatively little emphasis on the top-level design process. Small projects were typically completed with only a few necessary classes. With larger project the instructor typically prescribed the set of classes and interfaces while the student was responsible for the low-level implementation. In this course, students will focus more on design stages necessary for medium- or large-scale project.
Most aspects of object-oriented design are independent of a particular programming language. That said, we will want to see the high-level designs progress to a low-level implementation. We will rely upon the students' presumed familiarity with both Python and C++ from the prerequisite course sequence. Yet we are also choosing to introduce students to programming in Java, and will make an effort to highlight the similarities and differences between Python, C++, and Java in their support of object-orientation. Our exploration of Java and its remarkably large API will have a secondary benefit of providing concrete examples of large object-oriented hierarchies and common design patterns.
The material will be presented in two weekly meetings. Those meetings will be far more interactive than in the introductory courses. Much of our time together will be devoted to group discussions and design exercises. For this reason, attendance at every class is essential.
|Place:||Ritter Hall 121|
|Instructor:||Dr. Michael Goldwasser|
|Email:||goldwamh at our university domain|
|Office:||Ritter Hall 108|
The text should be available through the campus bookstore as well as various online book vendors.
With the exception of the first day's printed handouts, most of the information for this course will be distributed only by means of the course web page. This web site will contain all assignments, a schedule of topics, and links to other sources of documentation.
The web page contains some information (e.g. solutions, submitted assignments, individual grades) that is more sensitive and therefore which will be available to students in the class only after they have verified their identity. To gain access to these parts of the web page, a student must first complete the following online questionnaire, creating a unique identity and password.
All assignments for this course must be submitted electronically! The submission procedure will be done through the course web page, and allows students to submit from any computer connected to the Internet. Each student in this class will be selecting a unique username/password combination solely for use in identifying the student when using the course web page.
Details of the submission procedure are discussed on a separate web page.
Face-to-face contact in class and in office hours is most desirable. Yet email is a convenient form of communication as well. I try to respond to email promptly, including at least once each evening when possible.
If your question involves your progress on a current programming assignment, my response will be more informative if you can point out the specific problem you have encountered, and if I am able to see all of your source code. Therefore I strongly suggest that you either attach all relevant files to the email or submit preliminary versions of such files through our online system.
There will be a series of assignments covering various aspects of design and implementation. Many of these will involve group work. Details will be provide as the course progresses.
Letter grades will be based on each student's overall percentage of awarded points according to the following formula.
Students are expected to have read and abide by the University statement on Academic Integrity available on page 58 of the Saint Louis University's Undergraduate Catalog. A more detailed policy statement is given by the College of Arts & Science, also applying to this course.
In addition to those general statements, we wish to discuss our policy in the context of this course. When it comes to learning and understanding the general course material, you may certainly use other reference materials and you may have discussions with other students in this class or other people from outside of this class. This openness pertains to material from the text, practice problems, general syntax and use of a programming language or other computing tools.
However, when it comes to work that is submitted for this course, you are not to use or to search for any direct or indirect assistance from unauthorized sources, including but not limited to:
Acceptable sources of information include consultations with the instructor, teaching assistants, or members of organized tutoring centers on campus, as well as any materials explicitly authorized in an assignment. Even in these cases, if you receive significant help you should make sure to document both the source of the help as well as the extent.
For most of the assignments in this course, students will be encouraged to form groups. In this case, conversations between partners is both permissible and required, but conversations with members of other groups is still forbidden. Furthermore, all students within a group are expected to contribute significantly to the development of the submitted work. It is unethical to allow a partner to "sign on" to a submission if that partner did not significantly contribute to the work.
Any violations of these policies will be dealt with seriously. Penalties will apply as well to a student who is aiding another student. Any such violations will result in a minimum penalty of a zero on the given assignment that cannot be dropped, and severe or repeated violations will result in an immediate failing grade in the course. Furthermore all incidents will be reported in writing to the Department and/or the Dean, as per the College procedure.
All exams must be taken promptly at the required time. Requests for rescheduling an exam will only be considered if the request is made prior to the start of the exam, or else in an "emergency" situation with appropriate documentation.
For assignments, we wish to allow students to continue to work comfortably beyond the official deadline when a little more time will result in more progress, while at the same time discourage students from falling significantly behind pace and jeopardizing their success on future assignments. Our solution is the following exponentially decaying late formula (some have suggested that we should offer extra credit to anyone who fully understands this formula).
We will consider an assignment submission "complete"
when any part of the assignment is last submitted or
modified. Any assignment that is not complete promptly by
its due date and time will be assessed a penalty based on the
The above policies will be waived only in an "emergency" situation with appropriate documentation.
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
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 runs a computer server named turing that serves as the primary computing environment for this course. If you do not already have an account on this machine from a prerequisite course, please let us know and we will create a new one.
See further documentation regarding use of turing's facilities.
Please note: you are not explicitly required to use turing as your computing platform, it is simply the only platform what we will officially support. If you wish to use another platform that offers you sufficient support for completing your assignments, please feel free to do so.
For the general issue of design patterns, the classic resource is the so-called "gang of four" book,
You might also be interested in acquiring a language reference book for Java, although some prefer to rely on the wealth of online materials. If you do purchase a book, please make sure that it covers Java version 5 or later (the current version of Java is 7, and we will be relying predominantly on Java 6). Some recommended titles include: