CSC 205
Software Engineering I
Winter 2005

Professor Daniel Stearns
Office 14-222
Office Hours Posted on office door and on Web page
email address dstearns@csc.calpoly.edu
Web URL http://www.csc.calpoly.edu/~dstearns


Course Objective:
To learn skills required to produce and maintain a software product on time and within budget.

Prerequisites:
CSC 103 is prerequisite for this course; it will be checked and you will be dropped from CSC 205 if you have not completed CSC 103.

Required Course Books (none are textbooks)
If you decide to order your books from Amazon, please follow the links below to do so; it will benefit the computer science department scholarship fund.

Software Project Survival Guide by McConnell (Required)

Software Requirements (2nd Edition) by Wiegers (Required)

Gold Fibre Design: Project Planner Notebook No. 20-817 to be used for your status reports.

Course Description
This course covers the design and engineering of computer software systems. As a student you have done many computing assignments that were small problems or single programs. You have probably never had to face the problems encountered in designing and implementing a larger system. The problems of large software systems are much different than the problems of small systems. Management of the effort and communication becomes more difficult than the programming. Documentation grows exponentially with the size of the project. Configuration and version control arise as major project problems.

The result is a whole new set of problems that run in parallel with the technical effort; CSC 205/CSC 206 are about that new set of problems. To help solve those problems, software projects are divided into steps called a software life cycle.

Requirements Engineering (CSC 205)
In this phase, you come to understand the problem and write a software requirements specification that explains WHAT needs to be accomplished. The key word WHAT says everything; requirements engineers discuss WHAT you will do but refrain from describing HOW you will do it.


User Interface Design (CSC 205)
This is where you design the user interface by describing the inputs and outputs to the proposed system. A UI design can be shown in three possible ways:

  1. By implementing a prototype. Typically you would use a tool designed to create prototypes rapidly.
  2. By drawing the user interface on paper. Each screen, switch, keyboard, button etc. is depicted exactly as the user would see it. This type of activity is known as storyboarding.
  3. By writing a reference manual for the system. This is most appropriate when it is not possible to build a prototype.
Software Design (CSC 205/206)
In this phase you define the software architecture, modules and interfaces and represent those decisions in some formal way. (UML in this course)

Implementation (CSC 206)
You write and debug the code in this phase.

Pervasive Phases
Pervasive phases are continually active throughout the software development cycle; they start when a project begins and end when the project ends.

Course Tools
The software engineering profession is rife with tools; there are literally thousands of tools available to [supposedly] help software development. In CSC 205, the focus is placed on process - not tools. The tools we use include:

Team Project
Most of the work in CSC205 is connected to one large project. You will work in a team to carry out each phase of the project. You will only be required to implement a small portion of the code.

Reading Motivators
There is much to read in CSC 205. Your instructor believes he must provide strong motivation to do the course readings.

Accordingly, each of you must choose one method of reading motivation as follows:

  1. Reading questions
    Each week, questions on the reading will be posted; you answer the reading questions in your notebook.
    The answers must be done in a satisfactory matter to avoid grade dings.
    Answer the questions in your own words; quotes drawn from the reading are not acceptable.

  2. Oral questions in lecture
    During each lecture, students will be selected randomly to answer questions on or discuss the readings for that week.

Two Minute Talks
Each student is required to give two 2-minute talks in class during the quarter. Each talk must discuss something related to CSC 205. Talks will be scheduled on a first-come first-serve basis. You must stand and speak without notes or slides. Current events discussions are particularly encouraged.

Note that you can avoid the written answers to reading questions if you are willing to give additional extemporaneous two minute talks on the course readings. In this case, you will be asked to answer, without prior notice, questions about the course readings for the week; there is no limit to the number of talks if you choose this option. You can expect to be called on several times during the quarter.

Homework
You will be given two or three homework assignments during the quarter.
Homework assignments may be assigned to an individual or team. In either case, homeworks must be completed successfully to pass CSC 205.

Individual Notebook
Each individual is required to keep a course notebook and bring the notebook to every class meeting. Every entry in the notebook must be dated and clearly labeled. The major objective of the notebook is writing practice; write every entry in your own words.
Notes are collected sporadically - be sure you always have it with you.

The notebook must contain, at a minimum:


Examinations
There are no examinations in CSC 205; but you must plan to attend the final examination period.
At your instructor's discretion, you may be asked to do an oral debriefing/exam during the final.
In addition, you are required to write a self-evaluation at the end of the quarter.

Grading
All grading in CSC 205 is done using the modified Writing Proficiency Exam Grading System .

The project is the cornerstone of this course and is the primary basis of your course grade. The project grade is assigned on an individual basis; each student will earn a project grade of A, B or F assigned subjectively. The best way to earn an A is to accept and complete action items on your team deliverables.
Coat-tail hanging or non-performance by an individual will result in a course grade of F. You are required to participate fully in your team project.

I expect each member of a well-run team to receive an A. You cannot receive a course grade until your portion of the project is completed satisfactorily.

The project evaluation is done as if you were a corporate employee. Each project deliverable must be completed in a professional way; when finished the deliverable will be assigned a grade of 4 or higher. Work will always be returned until it reaches an acceptable standard. If substandard work (< 4) is turned in toward the end of the quarter, all team members will earn a course grade of F.

Dings
A ding is a penalty for poor or late work. Its intent is to mimic most corporate supervisors who expect nothing less than professional work at all times.
One ding will cost lower your overall course grade by one grade (eg. A to A-)
Team leaders may, if they wish, be given the authority to assign dings; be sure you are clear if your team leader has such authority.
It is possible to acquire ding credits through extra work; such credits are negotiated on an individual or team-by-team basis.

Your course grade will also be affected by other course work as follows:

You will be assigned a required laboratory meeting each week; each missed laboratory, without prior notification, will cost you 3 dings. (e.g. A to B)

Late Work Policies
A software engineer has a responsibility to manage time effectively and turn in work on time. Most deadlines are rarely absolute; if you are having a problem, discuss it; this advice applies to the workplace as well as any college class.
For CSC 205, the following nominal late policies apply:

Plagiarism
All work submitted is to be your own. Cooperative study and mutual aid are healthy learning methods and are strongly encouraged. You are especially encouraged to work with other teams. It is cheating to copy someone's work or allow someone to copy your work. It is cheating to copy material from a publication without giving credit. Plagiarism will result in a course grade of F.

Communication
The best place to discuss the course is during class times or office hours. Email is a poor substitute for direct communication because it is a one-way channel.
It is much better to turn in a printed document.
Do not send attachments unless specifically directed to do so.

Send all email with CSC 205 in the subject line to receive priority reading.
All homework and project assignments will be placed on the Web and announced in lecture. Most class materials are available on the Web; be sure to check them regularly.


Course Rules
A large part of this course is learning how to work in teams. These rules are designed to help you work effectively in a team and to ensure that the project moves along during the quarter.
  1. Writing
    All writing, including documents, code, method names, specifications and comments must use active voice transitive verbs with direct objects.

  2. Job Assignments
    Each person must have an assigned job in each phase. See the job list to ensure that you meet this requirement.

  3. Team Name and Logo
    It is important for each team to have an identity; part of that identity is established by having a name and logo. Both must be clearly visible on everything handed in by the team.

  4. Deliverables
    Every deliverable must be professionally done; assume you are working for a corporation and are submitting a deliverable to your boss. Some specific requirements are:
    1. English structure, grammar and spelling must be of professional quality.
    2. The team logo, section # and current date must be on the front page.
    3. Write a credits page; who is responsible for each part of the deliverable?
    4. Pages must be numbered.
    5. Printing must be of high quality.

  5. Resubmissions
    All resubmitted work must be accompanied by any previous submission(s). The previous submission must be intact as it was returned.

  6. Status Reports
    Almost all managers require some kind of periodic status report. In this company, status reports are due, in your notebook, at your assigned laboratory meeting. Status reports will be primarily graded on the quality of the writing and adherence to format; the grade can drastically affect your course grade (see grading).

  7. Laboratory Meeting
    Your team will be assigned one laboratory period each week to meet with the boss. Attendance at this meeting is mandatory! Bring all current team work even if it is in draft form. In addition, each individual must bring her notebook to each laboratory period.

  8. Bad Words
    Don't use bad words in any context.

  9. Notebook Due Dates
    Notebook deliverables (e.g. status reports, readings) are due at the beginning of your team's first lab period after the assigned due date.

  10. No Whining
    Don't whine or complain about your colleagues. A team can only be effective if members constantly support each other.

Last updated on 1/2/05