332 Overview Slides

Download Report

Transcript 332 Overview Slides

Introduction to CS/SWE 332
Paul Ammann
Fall 2015
Outline of Presentation
• Syllabus
• Software Engineering
–ACS degree
–Software Engineering Minor
–Rationale for ACS, Minor
• Topics in Course
2
Topics in SWE/CS 332
(ABET Course Outcomes)
• Demonstrate ability to specify and analyze
•
•
•
•
stand-alone procedures and OO classes.
Demonstrate ability to specify and analyze OO
inheritance decisions
Demonstrate ability to convert mutable data
types to immutable and vice versa
Demonstrate ability to correctly create and
destroy OO objects
Demonstrate understanding and competence in
generic programming
Demonstrate ability to specify and
analyze stand-alone procedures and
OO classes
• Core material for understanding OO
–Contracts (specify in comments or JavaDoc)
–Abstraction Functions – toString()
–Representation Invariants
–Method Verification
• How Do I know my method is “correct”?
• Contracts and Testing
–Test Driven Development with JUnit
Demonstrate ability to specify and
analyze OO inheritance decisions
• Core notion – Substitution Principle
• Interaction of Substitution Principle and
Common Contracts
–Example: equals() contract
• Symmetry, transitivity, substitution: Pick
any two!
• Mechanisms for extending classes
–Multiple inheritance
–Abstract classes
–Interfaces
• How, why, and when to disable inheritance
Demonstrate ability to convert
mutable data types to immutable and
vice versa
• Fundamental design decision
–Students typically biased towards mutable
designs
–Goals:
• Understand how to convert from one to the
other
• Understand design tradeoffs
• Class will practice in multiple languages
Demonstrate ability to correctly create
and destroy OO objects
• Object Creation/Destruction is Complex!
– Constructors
– Destructors
– clone()
– Serialization
• General notions such as
– Constructor “chaining”
– Undefined state
– Interaction with inheritance
Demonstrate understanding and
competence in generic programming
• Generics provide powerful facilities in Java
– Mechanism is very different from other languages
• Goal
–Understand use and power
• Also cover Bloch’s General Programming Items
–Key knowledge for industrial programming