COS 420 - Introduction to Software Engineering

Spring, 2008.
Course Description:
A broad view of software engineering which introduces a variety of software engineering techniques which can be applied to practical software projects. Topics include process models, human factors, software specification, software design, programming techniques and tools, and software verification and validation.
Place and Time:
Tuesday/Thursday, 2:00-3:15, Room 100 Neville Hall.
Instructor:
Larry Latour, Assoc. Prof., Dept. of Computer Science
Office: 222 Neville Hall
Tel: 581-3523
Email: Firstclass (Larry Latour) or larry_latour@umit.maine.edu
Textbook:
Fundamentals of Software Engineering, Second Edition. Carlo Ghezzi, Mehdi Jazayeri, and Dino Mandrioli, Prentice-Hall, 2003.

Course Outline:

The course outline draws liberally from the required text
1. Software Engineering: A preview - Text, Chapter 1
History of SE, role of the software engineer, the software life cycle, relationship of SE to programming languages, operating systems, data bases, artificial intelligence, and theory of computer science.
2. The Software Production Process - Text, Chapter 7
Software production process models, waterfall model, evolutionary model, transformation model, spiral model, model assessment, case studies, organizing the process.
3. Software: It's Nature and Qualities - Text, Chapter 2
Classification of software qualities, quality requirements in different application areas, measurement of quality.
4. Software Engineering Principles - Text, chapter 3
Rigor and formality, separation of concerns, modularity, abstraction, anticipation of change, generality, incrementability.
5. Software Design - Text, Chapter 4
Software design activity and objectives, modularization techniques, object-oriented design, handling anomolies, a design case study, concurrent software.
6. Software Specification - Text, Chapter 5
Specification usage and qualities, specification styles, specification verification, operation vs. descriptive specifications, specification in practice.
7. Software Verification - Text, Chapter 6
Goals and requirements, approaches, testing, analysis, symbolic execution, debugging, verifying other software properties.
8. Management of Software Engineering - Text, Chapter 8
Management functions, project planning, project control, organization, risk management.
9. Software Engineering Tools and Environments - Text, Chapter 9
Historical evolutiom, classification, representative tools,role of programming languages, sample tools and environments, future scenario.

Grading:

Grades will be based on the following work:

Program implementation portions of each homework packet may be done in any language the student prefers, but the student must be ready to demo any programs in my office or it's vicinity.

Students need to complete the two preliminary exams, the final exam, the 6 homework packages, and the semester project in order to be eligible for a passing grade of D or better. No makeup quizes/exams are given unless the circumstances warrant. Work will only be accepted if reasonable care and effort on the part of the student is evident.

Important: All homework and project work (1) must be complete, (2) must be type-written, (3) must have a cover page containing the student's name, class, homework number, and list of problems, and (4) must be stapled in the upper left-hand corner. No hand-written work or fancy covers are accepted.


Group Semester Project/Paper:

Your group task is to design and implement the Trivicalc spreadsheet application in a way that reflects the topics studied during the semester. That is, enough time must be spent on the requirements, design, specification, and verification, and validation of the system to "prove" that the system works the way it should.


Last updated: 1/13/08