SE381-01 (Week 1, lecture 1)
Introduction
Logistics
Course objectives
Schedule
Currently two sections
Does it make sense to have one instead (n=21)?
Textbook
Grading
Web, list server, WebCT(?)
Quality assurance (questionnaires)
Research paper
Homework (lab)
Course topics
What do YOU think this course is about?
No idea
Analyzing industry methods for software design
Professional methods for creating/verifying software
Process of designing software
Specific way of structuring programs for correctness
Verify/validate an existing design
More
Using Z notation
Use stuff from discrete math (predicates, ...)
. . .
Introduction to formal methods
What do you think "formal" means?
Templated way to do things
Polished/structured
Z (pronounced "Zed") notation
Elements, structures, logic, schemas
Tool support: checking, proofs
Modeling and specification
Formal reasoning
Software design/implementation
Refinement
Program derivation/verification
Tools
Z/EVES - Z syntax checker and theorem prover
Uses old versions of Python and Tcl/Tk
MikTeX (tetex) - TeX/LaTeX text processing system
TeXnicCenter (Kile) - Graphical LaTeX editing environment
Two view of formal methods
View 1
Formal methods are normal
We use math all the time
UML notation helps to express design/architecture
View 2
Formal methods are weird
"Nobody I know uses them"
"I thought I was done with math"
"No time -- out of my way, I'm going coding . . ."
The bottom line
Make your own (informed) judgment
Questions/comments?
Prerequisite knowledge and skills
Ever hear of any of this? (MA-230?)
Formal logic
Set theory
Proof methods
Functions and relations
How much do you remember?
Prerequisite assessment exercise
Preferably, 2-person teams
May do it as an individual