This course introduces the fundamentals of
software engineering for both conventional and
embedded/real-time software.
These theoretical
foundations are followed by hands-on practice in employing these advanced
techniques to build, verify, and maintain
these software systems
in multi-person team projects.
Specification and verification tools such as Statechart, Modechart,
and model checkers
will be described.
It is very important that the fundamental principles
must be studied before any project work starts,
because once you start on the project, your attention
and time will usually be devoted to the project details,
preventing you from absorbing the general and
basic principles being taught.
Course outline:
Introduction to SE
Software design issues
SE principles
Software architecture
Specification
Testing
Verification
SE of embedded software
Software production
Management of SE
Maintenance of software and tools
Recommended prerequisite:
Data Structures
Course requirements and grading:
team programming project with several modules (50%) and three
open-book short
tests
(end of February, beginning of April, and last day of class)
but
no final exam (50%).