CS 361: Software Engineering I

Winter 2007

 

 

Class meetings: Dearborne 118, TR 9:30-10:50

Instructor: Carlos Jensen

Office: KEC 3061

Email: cjensen [at] eecs

Office Hours: TR 12pm-3:30pm in my office, or by appointment

My door is always closed, that does not mean I’m not there, or that I don’t have time to see you (though sometimes I don’t), it’s just a very busy hallway. Knock.

Teaching Assistant: Yunrim Park (parkyu [at] eecs) MW 1-3pm KEC1130

Class website: http://classes.engr.oregonstate.edu/eecs/winter2007/cs361/

 

Course Description

This class is (in theory) the first class of the pro-program, and the first of two required Software Engineering classes you will take here. The goal of the class is to give you hands-on introduction to what software engineering is, what the software engineering process is, and how to work effectively as a team. This is not a programming class, and you are not required to do any development work as part of your coursework. That said, you should be very familiar with programming concepts and practices, including Object-Oriented Programming, basic testing and debugging methodologies, and basic code documentation practices. This is a writing intensive class with a major project component.

 

Course Objectives

The purpose of this course is to teach you the basic software engineering methods, focusing especially on the first half of the software engineering lifecycle. After completion of this course you should be able to:

  1. Describe process models of software life cycle and discuss their phases, advantages and disadvantages.
  2. Synthesize requirements for a realistic software system by interacting with a user or user group, and write a requirements specification document
  3. Model system requirements using one or more semi-formal notations such as UML, dataflow diagrams, entity-relationships diagrams, state diagrams.
  4. Design software systems at architectural level, and at lower levels, using one or more techniques such as object-oriented design or structured design. Express designs in design specification documents.
  5. Validate requirements and designs by reviewing specification with user or user group; adjust the specification or design as necessary.
  6. Describe several methods of estimating the cost and developing a schedule for a programming project.
  7. Participate effectively in a team environment.
  8. Produce professional-quality software related documents.

 

Because this is a course in the CS pro-program, we make certain assumptions about you, and your abilities to work independently. I expect you to be responsible and keep up with the reading and complete your assigned work on time. Lectures will not necessarily cover the material assigned in the reading. Given limited lecture-time I will focus class-time on explaining material which is particularly difficult, or which is not well-explained in the book, etc. If something is explained well in the book, I may not spend time on it in class. You are still responsible for said material for exams and your work.

 

 

Textbook

  • Software Engineering by Sommerville [Required]
  • Waltzing with Bears by Tom DeMarco & Timothy Lister [Required]

 

Additional Resources

  • The Cathedral & The Bazaar
  • Open Sources 2.0

 

 

Course Assignments and Grading

This class is meant to be a writing-intensive and hand-on course. This means that you will be required to work on group projects and class-work (in addition to doing readings) outside of class time. This class will also be very interactive. Participation will count towards your final grade, and I want a healthy discussion in each class session.

 

You will form 3-4 -person teams. Written work produced by the teams will indicate which team member wrote each section. Each team member will periodically, and anonymously, evaluate the other team members. The team assignments will receive an overall grade, which will then be distributed according to the teams internal evaluation, adjusted by the instructor. In extreme cases, a team can decide to fire a team member with just cause at week four. To do this, the team members must contact the instructor and make their case for why the team member should be fired.

 

Participation                               15%

Midterm 1                                  15%

Midterm 2                                  15%

Final exam                                  20 %

Project                                        35%

            Requirements     25%

            Design Doc        25%

            Project Plan        20%

            User Manual       20%

            Presentation       10%

 

 

Academic Dishonesty

The rules regarding Academic Dishonesty will be strictly enforced. Note that the penalties are quite severe and that the instructor has no discretion once a case of cheating is detected. Please see the OSU web-page for more details.

 

 

Schedule

 

Tue

Thu

Week 1

1/9 & 1/11

Introduction

Slides

Ethical and Legal considerations

Sommerville Ch 1 & Ch 2

Slides

Week 2

1/16 & 1/18

Software life cycle

Sommerville Ch 4

Class canceled, freezing rain

Slides

Software life cycle (catch-up)

Requirements

Sommerville Ch 6 &7

Week 3

1/23 & 1/25

Requirements (2)

Sommerville Ch 8

Slides

Midterm 1

 

Week 4

1/30 & 2/1

Library Fieldwork

 

Library Observations Due

Agile and Extreme Programming

Sommerville Ch 17

Slides

Week 5

2/6 & 2/8

Project Management

Sommerville Ch 5

Slides

Cost Estimation

Sommerville Ch 26, ½ of Waltzing

Project Proposals Due

slides

Week 6

2/13 & 2/15

Risk Management

2/2 of Waltzing

slides

Review

Project Plan Due Sunday

Slides

Week 7

2/20 & 2/22

Midterm 2

Class Canceled

Week 8

2/27 & 3/1

Formal Specifications Sommerville Ch 10

http://www.info.ucl.ac.be/Research/Publication/2001/RE01.pdf

slides

UML & specifications

slides

Week 9

3/6 & 3/8

Open Source development

The Cathedral and the Bazaar

CASE tools & documentation

slides

Week 10

3/13 & 3/15

Project presentations

Final projects due

Final review session

 

Final exam: 3/20/2007, 12 noon.