Software Engineering with
   predicate-based, test-driven development and
   mechanized logic

Engineering Correct Software. Engineering, according to dictionaries, is the applying principles of science and mathematics to the design of useful things. Software engineering isn't. A primary goal of this project is to develop educational materials that present software engineering within an engineering framework.

Projects for learning to engineer software may be found here: 20projects/

A one-page description of three courses that have emerged from this process so far may be viewed here:
A short paper on the courses may be viewed here:
   slides from presentation
A short presentation on applied logic may be viewed here:
Materials for a course on applied logic (paper and pencil, not mechanized) may be found under "Related Materials" here:
  Course materials for discrete math and applied logic

Links to specific materials on the subject appear below.

Teaching Software Correctness Workshop, May 13-15, 2008

Publications on the use of mechanized logic and predicate-based testing in software engineering:

Lecture Notes - Mechanized logic
    zipped PDF
    zipped PPT

Lecture Notes - Processes
    zipped PDF
    zipped PPT

    Project write-ups (zipped HTML, two project sequences for SE-I: 1A, 1B)
    Software supplied with projects (zipped Lisp)

Syllabus, texbooks, lesson plan, ... (SE-I)