CPSC 330 Object-oriented Analysis and Design
From MWCSWiki
Click here for an "easy to read" version
NEW COURSE PROPOSAL
CPSC 330 Object-oriented Analysis and Design
Course History
A. Has this course been taught as a "Topics" or Experimental Course"? If so, list previous title and number. (NOTE: Under current guidelines, courses do not have to be taught on an "experimental" basis before being approved.)
No, although some of the subject matter has been covered in other courses, namely CPSC 321 (Advanced Data Structures), which is offered every year, the special topics course CPSC 370C (Programming with Objects Using C++) which was offered in Spring of 1998 and 1999, and the special topics course CPSC 370J (Programming with Objects Using Java) which was offered in Fall of 2002. B. What were enrollments in all previous offerings? (Ernie? Marsha?) C. When was the course taught? N/A
Catalogue Description
Department/discipline and proposed number.
CPSC 330 (course number not yet approved)
Brief description of course content (include a syllabus).
Theory and practice of the object-oriented software development paradigm. Focus is on major design principles such as abstraction, encapsulation, inheritance, polymorphism, aggregation, and visibility. Modeling notations for capturing and critiquing designs. Introduction to the concept of design patterns, and coverage of a catalogue of common patterns. Students work in team projects to develop collaborative software solutions in an object-oriented language.
Prerequisites. CPSC 125, CPSC 230
Number of credits proposed. 3 Credits.
Relevance and Importance of the course
A. To department/discipline offerings.
What is the reason for this course proposal (i.e., how does it relate to other courses in the department's curriculum)?
Since the late 1980’s, the object-oriented software development methodology has been gaining acceptance, to the point where today it has almost completely supplanted the older, more traditional, “structured” or “procedural” methodology. Today, it is highly likely that any computer science graduate who attains a software development position in industry will immediately be involved in an object-oriented project that requires mastery of these skills, regardless of the particular domain. This is because they are broadly applicable to nearly every application area, from e-commerce to scientific computation to educational technologies to electronic medical records. Together with the knowledge acquired in CPSC 390 (Software Engineering), proficiency in the object-oriented paradigm is perhaps the key skill that computer science majors need to master in order to begin successful careers.
In addition, object-oriented design is a fruitful field of academic inquiry, presenting innumerable complex problems that require critical thinking, logical reasoning, and an artistic touch to properly solve. The topic brings to light many of the most important issues in computer science, including modeling (representing and simulating a portion of the real world in a computer program), abstraction (the selective reduction of detail in order to capture only what is relevant to solve a problem), modularity (creating a large solution by designing interacting subcomponents), and many others. Hence, it provides an excellent opportunity to illustrate and reinforce the main concepts we expect our students to learn, and the thought process we want them to acquire.
This course will tie together other parts of our curriculum in two important ways. First, it will integrate and expand upon the techniques covered in CPSC 220 and CPSC 230 (Computer Science I and II) by demonstrating them in their larger context and applying them to the more complex software elements of the object-oriented domain. Second, it provides solid groundwork for the upper end of our curriculum, which includes many courses (e.g., CPSC 390 – Software Engineering, CPSC 331 – Computer Graphics, CPSC 414 – Network Principles and Applications) that can use object-oriented techniques for specific applications.
Finally, the course lends itself to teamwork, which is something we want to give greater emphasis in our curriculum. Nearly all significant software projects in industry are designed and developed by teams, rather than individuals, and one deficiency many new college graduates have when they enter the workforce is a lack of familiarity with how to effectively collaborate. We want Mary Washington graduates to be better prepared than this. Object-oriented projects, by their very nature, emphasize the division of a large solution into cooperative, interdependent building blocks. This is a natural fit for team projects.
For all of these reasons, we believe that object-oriented analysis and design is a crucial course in our major sequence. Our intention, in fact, is to replace CPSC 321 (Advanced Data Structures), which is currently required for our major, with this new course. In light of the developments in our field, we feel that CPSC 321, while offering interesting material, is ultimately not as relevant to graduates, nor as immediately applicable to our junior and senior level courses. We intend to retain it in the catalog and offer it occasionally as an elective.
2. If this course is approved, which course(s), if any, would be deleted from your current offerings?
None, although if it is approved, CPSC 321 would be offered much less frequently. (See above.) 3. Will this course: a) Be required for the major? Yes, both the traditional Computer Science major and also the new concentration in Information Systems. b) Be an elective in the major? No. c) Not count in the major? No. B. To the Curriculum of the College: How is this course related to the courses in other departments? N/A Why is the proposing department the appropriate one to offer the course? The Computer Science department has the practical and academic background that is required to teach this course. Its subject matter is mainstream computer science, and hence should be offered by our department.
Resource Requirements
A. Does the library have the materials needed to support the course (provide a list of material needed for the course that the library does not have on hand)? Yes. B. Will this course require staff time from departments other than your own (Audio Visual, Library, etc.)? No. C. Does the College have the faculty to teach the course (who, and how will this affect their current teaching duties)? This will not significantly affect our current teaching duties, since this course will be offered on roughly the same schedule that CPSC 321 currently is. Any faculty capable of teaching CPSC 321 could teach CPSC 330 (and vice versa.) The only impact is that we would then be offering CPSC 321 on an occasional basis in addition to CPSC 330. This results in an additional 300-level elective offered every couple of years, which can be easily absorbed by the department’s current workload. D. Does the College have the equipment, facilities, etc., currently on hand, that will be needed to teach the course, and, if not, tell how and where you will obtain these resources)? Yes. V. Effective Date (What do you think?)
Each proposal must be signed by the department chair and dated.
NAME ____________________________________________ Signature___________________________________________ date___________________________
Syllabus
SAMPLE COURSE SYLLABUS CPSC 330: Object-oriented Analysis and Design
Week(s) Topics
1 Object-oriented concepts, contrasted with the procedural methodology
2-3 Identifying classes through responsibility-driven designUML notation
3 Encapsulation and visibility
4 The two kinds of inheritance: interface inheritance and implementation inheritance
5 Polymorphism and late bindingAbstract classes
6 Design organization through packagesModularity and reuse
7 Design pattern conceptsDesign patterns: Singleton pattern
8 Design patterns: Abstract Factory, Prototype, Factory Method
9 Design patterns: Template Method, Observer Pattern and MVC architectures
10 Design patterns: State, Strategy, Decorator, Visitor
11 Design patterns: Bridge, Adapter, Composite
12 OO in practice: graphical user interfaces
13 OO in practice: published APIs
14 OO in practice: server-side web architectures
Texts
· UML Distilled, Martin Fowler, Addison-Wesley, 3rd Edition.
· Design Patterns, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Addison-Wesley, 1st Edition.

