The course will focus on software design (practice) and software testing
(research). The major practice topic will be
design patterns, although I hope to get to other design issues
such as software frameworks (think Java Swing) and software
architecture. General ideas covered:
- Design patterns.
(See Gang of Four (online) for
background reading that supplements your textbook.)
- XP and refactoring. How patterns fit in with a larger software engineering methodology.
- Software frameworks. Will look at a client-server framework as an example.
For the research topic, we will look at a form of testing called
formal verification. In particular, we will look at a technique
called model checking. General ideas covered:
- Concurrency and its associated bugs.
- Labeled Transition systems (as a modeling tool).
- Open research questions with model checking systems.