Course Policies

Course Description

Introduction to the software lifecycle. Methods and tools for the analysis design, and specification of large, complex software systems. Project documentation, organization and control, communication, and time and cost estimates. Prerequisite: CSC345-Data Structures.

Course Objectives

After this course, you will be able to
  1. outline the approaches available to a group desiring to design a large software project,
  2. explain the advantages and disadvantages of each approach in relation to a particular project,
  3. apply a variety of methodologies to programming projects,
  4. explain the role of software quality assurance,
  5. explain the role of Software configuration management, and
  6. develop schedules and resource estimates for a software project.

Expectations

I have good news and bad news with respect to the course material. The good news is that there is nothing particularly difficult or hard to understand about the material we're going to cover.

The bad news is that there is a lot of straight-forward material to read and understand. This means that it is critical that you read the assigned material before coming to class. Our lecture time is spent discussing the material, not being exposed to it for the first time. If you don't read before coming to class, you will not be able to contribute to the class discussion, nor will you be able to learn much from it.

Support Material

I'm pleased to offer a variety of support material for this course. I divided these into the categories you see below.

Required Sources

  1. Brooks, Frederick P.(1982) The Mythical man-month. Addison-Wesley, Reading, MA.

    This book is a classic in the field of software engineering. Everyone has read it and talks about it. I've sequenced the essays in the book so that they relate to the topics we're discussing in class.

  2. Pressman, Roger S.(1992) Software engineering: A practitioner's approach. McGraw-Hill, New York.

    This book is our primary text. Expensive, but worth it. Besides, we use it for two courses (CSC440 and 441), so you'll end up reading virtually every word.

  3. Course Newsgroup poly.course.csc-440

    We use the newsgroup to keep in touch with one another throughout the course. Any questions you have concerning the course in general, what you're supposed to do for any particular assignment, et cetera, should be posted to the newsgroup. If you have personal questions (i.e. "what do you think of my hairstyle? When can I get an appointment to see you?"), then feel free to send me email. If you send a question to me through email, I may ask you to post it on the newsgroup. Don't take that as a rebuke, I simply mean that the question is sufficiently general for many people to be interested in the response.

    I encourage you to use the newsgroup to post references to items of interest to software engineers.

  4. Jones, Capers. (1995) What Are Function Points?

Helpful Books

  1. Humphrey, Watts S. (1990) Managing the software process. Addison-Wesley, Reading, MA.

  2. Paulk, Mark C., et al(1993) Capability Maturity Model for Software, Version 1.1, CMU/SEI-93-TR-24. URL: http://ricis.cl.uh.edu/CMM/TR24/tr24.html

  3. Paulk, Mark C. et al(1993) Key Practices of the Capability Maturity Model, Version 1.1, CMU/SEI-93-TR-25. URL: http://ricis.cl.uh.edu/CMM/TR25/tr25.html

  4. Software Engineering Institute. URL: http://www.sei.cmu.edu/.

Grading

I will assess your performance based on three components. Table 1 contains the specific point availability for each assignment.

Table 1. Scoring Summary
ComponentNumberPoints eachTotal Points
Journals3100 300
Labs4100 400
Participation2100 200
Total900

Journals

Before this quarter, I followed the traditional paradigmn of assessing student performance by using examinations. However, during Winter Quarter, 1996, I took a psychology class (PSY330) in which we sat for exams. Although the instructor used what I considered to be "good" exams (clear questions, followed the class discussion and reading, etc.), I felt dissatisfied with the experience. Consider this: when creating an exam, the instructor reviews all of the material to be tested and selects the portions he considers "important." If I happen to learn the answers to the questions he happens to ask, then I am thought to be "smart." If, on the other hand, I learn material that he just didn't happen to ask (but may be equally valid), then I am labelled "stupid," "lazy," or something.

A better way, I think, is for students to keep a journal. This permits each student to show me what they have learned. Additionally, it permits me to chat with each student personally to assess their learning. This permits students to tailor (somewhat) the class according to their individual interests. I've prepared a set of guidelines for the preparation of journals, please review them and refer to them often when writing in your journal.

It is your responsibility to schedule time with me to review your journals three times during the quarter. During this time, I'll read through your writings and ask you questions about them. For example, I may ask you to relate your writings to the topics covered in class or to software engineering. I may ask you to speculate about what the impact of the state of software engineering is everyone had similar thoughts.

Labs

The lab assignments will permit you to apply the concepts discussed in class to a programming situation in greater detail than the examination permits. You will produce most of the documentation required by each phase of the software development process. In addition, you'll have the opportunity to critically evaluate the work of your colleagues.

Participation

Your active participation is critical to the success of the class, in both the lecture and lab portions. In the past, I've tried numerous methods of encouraging and rewarding active participation. This quarter, I've decided to rely on internal motivation to produce discussions in thte lecture period. It works like this: When we get to class, I start asking questions. If no one seems interested in discussing the day's topic, I will assume that everyone has mastered the material and views the prospect of discussing it with boredom. Accordingly, I'll dismiss the class for the day and emphasize that material on the examination. On the other hand, if everyone has prepared for class be reading the material and thinking about it before class, we can have interesting discussions during the lecture period.

During the lab period, I'll grade you by observing your conduct when you are presenting your portions of the project and your conduct during reviews of your colleagues' portions of the project.

Bonuses

To help foster cooperation among the groups and to give you practice in reviewing the work of others, I've devised a bonus mechanism. Each of your lab groups will be paired with another. When it is time for a Formal Technical Review (FTR) of your lab assignments, your sister group will assist you in reviewing your assignment. The review group will get a bonus if the production group earns an A on their assignment. Thus, it is in everyone's best interest to follow the software engineering process closely and produce work of the highest quality.

Assignment Due Dates and Times

I assign only one due date and that is for the Contract Proposal. That assignment is due at the beginning of the class period on the assigned day. You and your lab groups will determine the schedule for the remaining deliverables using the techniques we'll cover in class. When I approve your proposal, the dates you've specified will become the real due dates.

Grade Computation

I will determine your grade by adding the points you earned on various assignments. I'll then divide by the total points possible and use the result as an index into Table 3. Note that this process establishes the minimum grade you may receive; I reserve the right to assess learning in a variety of circumstances and adjust grades accordingly. I will not, however, assign you a letter grade lower than that indicated by the quantitative method set forth above.
Table 3. Letter Grade Lookup Table
Numeric GradeLetter Grade
90--100A
80--89B
70--79C
60--69D
0--59F

Academic Integrity

Dishonesty is inconsistent with academic pursuits and professional work as an engineer. You are responsible for your own work. Examples of academic misconduct include, but is not limited to:

Anyone who commits any of these (or related) offenses will receive an F in this course and a referral to the Vice President for Student Affairs for further action.

If you have trouble determining whether your contemplated course of action is ethical, save yourself some trouble and consult the instructor before taking action.