State University of New York at Oswego

  1. COURSE NUMBER AND CREDIT

    CSC 380 - 3 Semester Hours

  2. COURSE TITLE

    Software Engineering

  3. COURSE DESCRIPTION

    Techniques for developing large software systems are presented. Formal and semi-formal languages for specification and design of software, verification, and configuration management techniques are discussed.

  4. PREREQUISITES

    CSC 241

  5. COURSE JUSTIFICATION

    This course is intended to provide students with an engineering perspective to software design.

  6. COURSE OBJECTIVES

    Upon successful completion of this course, students will be able to:

    1. Develop a software application based upon a set of requirements.
    2. Manage and/or work within a group development effort
    3. Verify and validate software components
    4. Create and communicate designs using formal and semi-formal notations
    5. Use software development tools to enhance design, testing, and configuration.
    6. Communicate and critique designs among peers
    7. Apply programming and analytic techniques from core computer science and math courses in the service of constructing useful software

  7. COURSE OUTLINE

    1. Software Developemnt Process
      1. Classic and Agile approaches
      2. Managing group development
      3. Theory and practice of versioning, configuration, and build tools
      4. Schedule estimation and monitoring
    2. Requirements
      1. Use Cases and related techniques
      2. Working with clients and users
      3. Features and non-functional requirements
    3. Design
      1. UML and related design and specification notations
      2. Quality and metrics: modularity, abstraction, complexity
      3. Common Design Patterns
    4. Quality Assurance
      1. Developing and monitoring quality objectives
      2. Design and code reviews
      3. Functionality and correctness testing
      4. Unit, integration, and regression testing
      5. Test coverage and test plans
      6. Using test tools and frameworks
      7. Performance, reliability, security, and safety testing
      8. Human factors evaluation
      9. Formal and semi-formal analytic verification
      10. Test automation and bug detection tools

  8. METHODS OF INSTRUCTION

    1. Lectures
    2. Discussion
    3. In-class reviews
    4. Projects

  9. COURSE REQUIREMENTS

    1. One or more projects covering all aspects of software development.
    2. Class presentations

  10. MEANS OF EVALUATION

    1. Project participation and milestones, and associated presentations.
    2. Oral or written evaluations or exams assessing proficiency in underlying concepts.

  11. RESOURCES

    No additional resources are needed.

  12. BIBLIOGRAPHY R. Pressman, Software Engineering: A practitioner's approach, McGraw Hill, 2005.

    I Sommerville, Software Engineering, Addison-Wesley, 2004.

    E. Stiller and C. Leblanc, Project-based software engineering, Addison-Wesley, 2002.

    M. Fowler UML Distilled, Addison-Wesley, 2003.


Document:
URL:
Last Update: