ECS 160: Software Engineering

Subject
ECS 160
Title
Software Engineering
Status
Active
Units
4.0
Effective Term
2022 Winter Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Description
Requirements, specification, design, implementation, testing, and verification of large software systems. Study and use of software engineering methodologies. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 140A; extensive programming experience recommended.
Enrollment Restrictions
Pass One open to Computer Science and Computer Science Engineering Majors only.

Summary of Course Content

  1. Introduction to Software Engineering
    1. History & Failures
    2. Codes of Ethics and Professional Practice
    3. Team Programming
    4. Process Models
  2. Object-Oriented Programming
    1. Basic Concepts: Inheritance, Encapsulation, Bounded polymorphism
    2. Creational Patterns: Singleton, Factory
    3. Structural Patterns: Adapter, Template Method, Bridge, Proxy
    4. Behavioral Patterns: State, Observer, Decorator, Visitor
    5. Inversion of Control
  3. Functional Programming
    1. Basic Concepts: Polymorphism, Laziness, Higher-order Functions
    2. Functional patterns
    3. Streams & Parallel Streams in Java
  4. Software Architecture
    1. Architectural Design Concepts
    2. Styles: Pipeline, Bulletin Board, Pub-Sub, Client-Server, Multi-tier, Containerized.
  5. Reflective Programming
    1. Compile Time Reflection
    2. Run Time Reflection
    3. Java Reflection.
    4. Dynamic Proxies in Java
  6. Quality Control
    1. Testing & Unit Testing
    2. Continuous Integration
    3. Fuzz Testing, AFL
  7. Software Licensing
    1. Patent vs. Copyright vs. License
    2. Royalty Based vs. Royalty Free
    3. Copyright and Copyleft
    4. Ethics of IP Protection

Illustrative Reading
Instructor notes on materials Design Patterns, Anti-Patterns, etc.
Much of the material may be found in books such as Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Professional, ISBN-13: 978-0201633610
and
Laplante, Phillip A.; Neill, Colin J. (2005). Antipatterns: Identification, Refactoring and Management. Auerbach Publications. ISBN 0-8493-2994-9

Potential Course Overlap
There is some overlap of coverage of codes of ethics and professional practice with course 188. ECS 188 is primarily focused on ethics and will cover the topic in much greater detail than ECS 160.

Course Category