Software Engineering

01:198:431

Fall 2006Spring 2006

Description

The course studies the problems, methods, processes and tools involved in the development of large software systems that are reliable and maintainable, and meet their users' needs. This is carried out in the context of a significant, term-long multi-person team project.

(In different semesters, this course would focus on either more
standard, centralized systems, or distributed systems. This would
effect, to some extent, the choice of topics to be taught (see below),
and especially the techniques and tools to be used.)

Credits: 4

Prerequisites: 01:198:115; 01:198:314 or 01:198:352 or 01:198:336 or 01:198:416 or 01:198:428.

(prior to 2008: 19:314; 198:344)

Please note that courses for which a student has received a grade of D cannot be used to satisfy prerequisite requirements.

Semesters Offered:

Spring and fall

Topics:

Software life cycle.  Requirements analysis and specification.
Software architectural design, and the design of its laws.
Specification of software components and their interaction.
Assertions, testing, and debugging.  Elementary project
planning and estimation.  Some state of the art material.

Specific techniques used in the above include software reuse through
libraries (e.g., Java Swing, data structure libraries), CASE tools
(e.g., Eclipse), notations (e.g., UML), access-control techniques for
distributed systems (LGI).

Expected Work:

The team project includes demonstrations of protoype and findal code, plus documents for specification, architectural design, detailed design, and test plan.

Exams:

Possibly a take-home exam/assignments, concerning material covered in lectures.

† - Can be taken for graduate credit.

Select A Course