Updated: 12 August 2002
| CSC 202J Software Design
and Programming II |
4 cr. DII |
|
[formerly CSC 202 Algorithm Design & Implememntation II] |
|
Catalog description:
This course extends the treatment of object-oriented methodologies,
languages and tools begun in CSC201J. The emphasis is on the analysis of complex problems,
particularly those involving multiple design alternatives, and the use of class libraries.
Specific topics include inheritance, polymorphism, recursion, stream and file I/O, exceptions,
and graphical interface programming. Style, documentation, solution robustness,
and conformance with specifications are emphasized throughout. Three lecture
hours and three hours of scheduled laboratory per week plus extensive programming work
outside of class.
Prerequisite: CSC201J with a grade of C+ or higher.
Goals:
The purpose of this course is to enhance and extend students' understanding
of tools and techniques for object-oriented software development. Upon completion of
the course, a student should be able to do the following:
- CG1: analyze a problem statement for completeness and clarity;
- CG2: use the methodology of object-oriented designb to develop class diagrams
(data descriptions and methods) for a problem solution;
- CG3: convert this solution into source code in the designated high-level programming
language in accordance with a well-defined set o standards;
- CG4: debug and test the program;
- CG5: provide clear documentation for the result.
Objectives:
- CO1: Students will gain a deeper understanding of object-oriented design methodology.
- CO2: Students will learn to recognize situations in which multiple design alternatives are possible.
- CO3: Students will learn to recognize and apply design patterns.
- CO4: Students will gain experience in judging the effectiveness and cost of a software design.
- CO5: Students will gain experience in choosing among competing design alternatives.
- CO6: Students will gain experience in the use of the UML modeling language.
- CO7: Students will extend their knowledge of an object-oriented programming language,
including graphical user interfaces, event-driven programs, file-based
input/output and the use of libraries.
- CO8: Students will produce full documentation for several completed projects, including
formal class diagrams.
Topics (using Java and UML):
- review of:
- basic design concepts
- Java syntax
- UML
- the concept of incremental development
- designing for reuse
- discovering and applying design patterns
- subclasses and inheritance
- file-based input and output
- exceptions and exception-handling
- polymorphism
- data organization and retrieval
- sorting algorithms
- searching algorithms
- performance analysis
- testing and validation
- interfaces
- recursion
- survey of class libraries
- programmer-developed windows and frames
- applets
- multidimensional arrays
Programming assignments: Approximately
six programming assignments are given. One or more of these may be group
projects. Each programming assignment involves the design, writing, testing
and debugging of a program and the submission of an appropriate laboratory report.
Each assignment has a specific due date, with a short grace period during which
the assignment may be submitted for reduced credit. When the grace period has
expired, the assignment will no longer be accepted.
All programs must be coded in the programming language
currently used for instruction in the CSC201J/202J sequence no
exceptions will be allowed. The version of the language being used will be the
currently accepted standard version: any extensions or variations in student-owned
compilers must be approved in advance by the instructor, who may choose to forbid their use.
Laboratory Exercises: There will be
short programming exercises to be completed during regularly scheduled laboratory
sessions. Each exercise focuses on a specific language feature or programming
technique presented in recent lectures. Performance on these exercises will be
incorporated into the course grade.
Exams: There will be a midterm
examination and a comprehensive written two-hour final examination.
Final grades will be determined on the basis of the
following approximate weights: examinations - 40%, programming
assignments and lab exercises - 60%.
Bibliography:
- Adams, Joel; Nyhoff, Larry; Nyhoff, Jeffrey. Java: An Introduction to Computing.
Prentice Hall, 2001.
- Bloch, Joshua. Effective Java. Programming Language Guide. Third Printing.
Addison-Wesley, 2001.
- Cornelius, Barry. Understanding Java. Addison-Wesley, 2001.
- Dale, Nell; Weems, Chip; Headington, Mark. Introduction to Java and Software Design.
Jones and Bartlett, 2001.
- Flanagan, David. Java Foundation Classes in a Nutshell. A Desktop Quick Reference.
O'Reilly, 1999.
- Flanagan, David. Java in a Nutshell. A Desktop Quick Reference. Third Edition.
O'Reilly, 1999.
- Fowler, Martin; Scott, Jendall. UML Distilled. A Brief Guide to the Standard
Object Modeling Language. Second Edition. Addison-Wesley, 2000.
- Harold, Elliotte Rusty. Java I/O. O'Reilly, 1999.
- Horstmann, Cay. Big Java. John Wiley, 2002.
- Horstmann, Cay; Cornell, Gary. Core Java 2. Volume I - Fundamentals.
Sun Microsystems/Prentice Hall, 2001.
- Horstmann, Cay; Cornell, Gary. Core Java 2. Volume II - Advanced Features.
Sun Microsystems/Prentice Hall, 2001.
- Hosch, Frederick A.; Nino, Jaime. An Introduction to Programming and
Object-Oriented Design Using Java. Wiley, 2001.
- Lewis, John; Loftus, William. Java Software Solutions: Foundations of Program Design.
Second Edition. Addison-Wesley, 2001.
- Overland, Brian; Morrison, Michael. Java 2 in Plain English.
M&T Books, 2001.
- Riley, David D. The Object of Java. Introduction to Programming Using Software
Engineering Principles. Addison-Wesley, 2002.
- Schildt, Herbert. Java2: A Beginner's Guide. Osborne/McGraw-Hill, 2001.
- Schildt, Herbert. Java2: The Complete Reference. Fourth Edition.
Osborne/McGraw-Hill, 2001.
- Walrath, Kathy; Campione, Mary. The JFC Swing Tutorial. A Guide to Constructing GUIs.
Addison-Wesley, 1999.
Salem State College Home Page •
Computer Science Department Home Page
|