STATE UNIVERSITY OF NEW YORK AT OSWEGO
                 Computer Science Department


    I.  COURSE NUMBER AND CREDIT:

        CSC 480 - 3 S.H.

   II.  COURSE TITLE:

        Software Design

  III.  COURSE DESCRIPTION:

        This course extends and integrates design techniques
        commonly encountered in core CSC courses and
        electives, while also focusing on the engineering
        challenges of constructing complex software systems
        that graduates are likely to encounter in practice.

   IV.  PREREQUISITES:

        CSC 344, CSC 380

    V.  JUSTIFICATION:

        A substantial group-based semester project is an
        integral part of this course.  It allows students to
        bridge abstract design principles with the realities
        of contemporary software development.  Approximately
        one-third of class time should be devoted to
        background tutorials, design presentations and
        reviews, and group discussions relevant to the
        construction of assigned projects.

        This course will be offered at least once every two
        years to Classes of size thirty-two. This course is
        an elective course for CS majors.

   VI.  COURSE OBJECTIVES:

        As a result of this course, students will be able to:
        1.  Understand and apply best-known software design
            methods.
        2.  Understand and apply best-known software
            development practices.
        3.  Implement and evaluate designs.
        4.  Work with others in developing large systems.

  VII.  COURSE OUTLINE:

        A.  Review
            1.  Software development practices
            2.  Characteristics of application systems
            3.  Programming in-the-small

        B.  Specification and Modeling
            1.  Overview of methods and paradigms
            2.  Decomposition and classification
            3.  Static models
            4.  Dynamic models
            5.  Examples and case studies

        C.  Computational Design
            1.  Correctness, testability
            2.  Design patterns and architectures
            3.  Building software components
            4.  Design criteria and evaluation
            5.  Software reuse and evolution

        D.  Physical System Design
            1.  Distribution
            2.  Resource management
            3.  Performance
            4.  Reliability

        E.  Implementing Designs
            1.  Using software tools, services, and
            2   languages
            3.  Testing and monitoring
            4.  Managing the development process

 VIII.  METHODS OF INSTRUCTION:

        1.  Lectures
        2.  Semester project

   IX.  COURSE REQUIREMENTS:

        1.  Readings from a main text and current and
            classical papers
        2.  Design and programming exercises
        3.  Semester project, including class
            presentations

    X.  MEANS OF EVALUATION:

        1.  Assignments
        2.  Examinations
        3.  Project participation

   XI.  RESOURCES:

        No additional resources are required.


  XII.  BIBLIOGRAPHY:

        Booch, G. (1990). Object Oriented Design with
           Applications. Benjamin/Cummings.

        DeChampeaux, D., Lea, D., & Faure, P. (1993).
           Object Oriented System Development, Addison-
           Wesley.

        Rumbaugh, J., Blaha, M., Premerlani, W., Eddy, F.,
           & Lorensen, W. (1991). Object Oriented
           Modeling and Design.  Prentice Hall.

        Ward, P. T. & Mellor, S. (1985). Structured
           Development for Real-Time Systems.  Prentice
           Hall.


Document:
URL:
Last Update: