Foundations of Software Engineering is a course that presents an introduction to the field of software engineering. For the Spring 2009 semester, we will cover three main topics:
- a survey of modern software engineering concepts, terminology, and techniques
- an in-depth look at software engineering techniques for dealing with concurrency in software systems
- an in-depth look at software engineering techniques for dealing with abstractions, in particular how to design and analyze them
The first topic ensures that a student new to software engineering leaves the course with a grasp of the basic concepts and tenets of the field. The second and third topic, both examples of model-based software engineering, provides students with explicit examples of how software engineering techniques can be used to tackle complex problem domains.
We shall also spend some time looking at how software development is changing, particularly with respect to the new modes of development being enabled on the Web.
I welcome feedback and questions from students. See my home page for my contact information.