Introduction to CS/SWE 332 Paul Ammann Fall 2018
Outline of Presentation Syllabus Software Engineering ACS degree Software Engineering Minor Rationale for ACS, Minor Topics in Course What’s new in 2018: Edition 3 of Bloch
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