CSCI 2300 Object Oriented Software Design
This section of the course (Fall 2017) meets Monday, Wednesday, and Friday from 12:00-12:50PM in Ritter Hall 115.
In this course you will continue learning how to design, write, and test computer software, in particular, object-oriented software in the Java programming language. I view this course as a bridge between the introductory programming courses CSCI 1300/2100 and the more sophisticated techniques that make up Software Engineering (which many of you will take next Spring).
The course prerequisite is a C- or better in CSCI 2100 (Data Structures).
- Java Crash Course
- The Object-Oriented Design Process
- Event-driven programming, GUIs
- Documenting Designs: UML Diagrams, etc.
- Design of Classes, Libraries, and APIs
- Test-driven development
- Interfaces and polymorphism
- Design Patterns I: Observer, Strategy, Composite
- Design Patterns II: Decorator, Template, Adapter
- Advanced Java Topics
Student Learning Outcomes
After successfully completing this course, students will be able to:
- understand the language of object-oriented design patterns, and recognize situations where they are (or are not) appropriate to use
- employ abstraction mechanisms to support the creation of reusable software components
- evaluate competing software designs based on key design principles and concepts, including efficiency, scalability, extensibility, and reusability
- work effectively with a team to gather requirements for a medium-to-large scale software application, and design, implement, and test that system
- implement a non-trivial application with an event-driven GUI, adhering to sound HCI principles
- implement an application using advanced object-oriented techniques such as inheritance, polymorphism, and generics.
- explain the primary differences between the object models in C++ and Java and how these differences affect design in the two languages
- understand key concepts in the design of large-scale object-oriented libraries, through exposure to existing standard libraries for C++ or Java
For those of you who choose to use the lab computers, please read the department and university policies on appropriate use of computer systems.
Various readings, exercises, and small programming problems will be assigned throughout the semester. Although these are not to be turned in for a grade, it is critical that you complete all of the assignments if you hope to master the course material. I will check that you understand the lectures, homework, and reading by means of two in-class hour exams, scheduled for Friday, October 6th, and Friday, November 17th; each is worth 15% of your final grade.
You will also turn in two programming assignments for a grade; each of these is worth 10% of your final grade.
Each student will work with a group (two or more) on a semester project. This will be a medium-to-large scale project, implemented in Java, and artfully designed according to the principles we'll learn about in the course. Other groups of students in the course will act as "customers", from whom you will need to gather requirements. The project makes up 25% of your final grade.
The final exam is scheduled for Wednesday, December 13th from noon to 1:50PM; it is comprehensive and is worth 25% of your final grade.
Letter grades will be based on each student's overall percentage of awarded points according to the following formula.
- Student percentage above 90% will result in a grade of A or better.
- Student percentage above 87% will result in a grade of A- or better.
- Student percentage above 83% will result in a grade of B+ or better.
- Student percentage above 80% will result in a grade of B or better.
- Student percentage above 77% will result in a grade of B- or better.
- Student percentage above 73% will result in a grade of C+ or better.
- Student percentage above 70% will result in a grade of C or better.
- Student percentage above 67% will result in a grade of C- or better.
- Student percentage above 60% will result in a grade of D or better.
- Student percentage below 60% will result in a grade of F.
Academic Integrity Statement
Academic integrity is honest, truthful and responsible conduct in all academic endeavors. The mission of Saint Louis University is "the pursuit of truth for the greater glory of God and for the service of humanity." Accordingly, all acts of falsehood demean and compromise the corporate endeavors of teaching, research, health care, and community service via which SLU embodies its mission. The University strives to prepare students for lives of personal and professional integrity, and therefore regards all breaches of academic integrity as matters of serious concern. The governing University-level Academic Integrity Policy was adopted in Spring 2015, and can be accessed on the Provost's Office website. Additionally, each SLU College, School, and Center has adopted its own academic integrity policies, available on their respective websites. All SLU students are expected to know and abide by these policies, which detail definitions of violations, processes for reporting violations, sanctions, and appeals. Please direct questions about any facet of academic integrity to your faculty, the chair of the department of your academic program, or the Dean/Director of the College, School or Center in which your program is housed.
Title IX Statement
Saint Louis University and its faculty are committed to supporting our students and seeking an environment that is free of bias, discrimination, and harassment. If you have encountered any form of sexual misconduct (e.g. sexual assault, sexual harassment, stalking, domestic or dating violence), we encourage you to report this to the University. If you speak with a faculty member about an incident of misconduct, that faculty member must notify SLU’s Title IX coordinator and share the basic fact of your experience. The Title IX coordinator will then be available to assist you in understanding all of your options and in connecting you with all possible resources on and off campus. If you wish to speak with a confidential source, you may contact the counselors at the University Counseling Center at 314-977-TALK. To view SLU’s sexual misconduct policy and for resources, please visit this web address.
Student Success Center
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. The Student Success Center, a one-stop shop, which assists students with academic and career related services, is located in the Busch Student Center (Suite, 331) and the School of Nursing (Suite, 114). Students who think they might benefit from these resources can find out more about (1) Course-level support (e.g., faculty member, departmental resources, etc.) by asking your course instructor, and (2) University-level support (e.g., tutoring services, university writing services, disability services, academic coaching, career services, and/or facets of curriculum planning) by visiting the Student Success Center or by going here.
Disability Services Academic Accommodations
Students with a documented disability who wish to request academic accommodations are encouraged to contact Disability Services to discuss accommodation requests and eligibility requirements. Please contact Disability Services, located within the Student Success Center, at <Disability_services@slu.edu> or 314-977-3484 to schedule an appointment. Confidentiality will be observed in all inquiries. Once approved, information about academic accommodations will be shared with course instructors via email from Disability Services and viewed within Banner via the instructor’s course roster.