University of California, Santa Cruz
T Th, 8:00-9:45AM
Porter College 144
Lab: Jack Baskin, 213
|Teaching assistant:||Donna Stidolph|
|Office:||123 Baskin Engineering|
|Office Hours:||Tuesdays 10:00-12:00pm
and by appointment
|Text:||Software Engineering: A Practitioner's Approach, 5th Edition,
Roger S. Pressman, McGraw-Hill, 2000
The goal of this course is to provide a theoretical and applied introduction to Software Engineering, defined by Boehm as, "the application of science and mathematics by which the capabilities of computer equipment are made useful to man via computer programs, procedures, and associated documentation." Unlike previous courses you have taken which focus on specific domains of interest (e.g., operating systems, programming languages, algorithms), this course focuses on the processes used to specify, design, develop, and test large software systems of all types. As a result, instead of coding, it is the other activities of Software Engineering that are the focus of this course.
The theoretical background of Software Engineering is provided via readings in the textbook, and by class lectures on the material. These readings are designed for a broad introduction to Software Engineering. This theoretical knowledge is applied in the context of a quarter-long project. Techniques for requirements, prototyping, design, testing, and inspections are among the skills emphasized during the project. While a completed program is a project deliverable, coding is only a fraction of the effort involved in the project. The project's emphasis is clearly on the process used, and the intermediate documents developed on the path to writing the code.
Readings are listed on the course syllabus, and come from the class text. Readings have been designed to require approximately 2-3 hours per assignment.
Brief, in-class quizzes will be given in class following each reading assignment, as a verification that reading was performed. Quizzes will begin immediately at the start of class, and will last exactly 8 minutes. At the end of the quiz, you will hand your paper to a neighbor, the answers will be given in class, and you will correct you neighbor's paper, to the best of your ability. The TA will then collect quizzes, and the lecture will commence.
For the term project, you will participate as part of a 3-4 person team to develop a computer game of your choice. Game ideas include developing a board manager for a game such as Othello, Chess, Checkers, Bridge, Poker, Backgammon, Go, or a game of your own invention. Text-based adventure games are also a possibility, such as the famous Adventure, Zork, or other Infocom-style game. A simple video game where the computer is an opponent may also be used. Note that it is in your best interest to choose a simple game over a more complex game, since increased complexity will increase the work involved at each stage of the project, including but not limited to coding. Tic-Tac-Toe is too simple however, and is not allowed.
You may choose any platform for your project, with the constraint that you must be able to demonstrate your project in lab at the end of the quarter. All project documentation developed during the project MUST be in your group's project notebook.
The following are project milestones, due in the last lab of the week (or in-class, where indicated). Milestones are weighted unevenly, with the percentage of the total project score indicated next to each milestone:
In addition, there will are mandatory in-class code inspections, held immediately after initial coding is completed.
In an ideal world, every team memeber will contribute equally towards each project milestone. However, life is often not so simple, and sometimes team members contribute unevenly to a project, placing a larger burden on some team members. If you feel this is happening to your team, and you are unhappy about this, you have the option, after each milestone, of submitting a secret email ballot to the instructor and the TA, where you rate each team member's contributions. To do this, take 100 points, representing the total effort on this milestone, and divide it up among the team members on your project (including yourself). Email the instructor and the TA this point distribution, which will remain secret from all other members of the class, including your group. At the discretion of the instructor and the TA, this secret email ballot information may be used to affect grades awarded.
There will be three midterm exams, designed to reinforce important concepts from the reading and class lectures. Each exam is worth one-third of your total exam score. If a student takes the final exam, then each in-class exam is worth one-sixth of the total exam score, and the final exam is worth one-half of the total exam score.
Students with an 80% or better score at the end of the quarter are allowed to not take the final exam. However, all students MAY take the final exam, if they desire.
Your grade and evaluation is based on the following factors:
In addition, a minimum of 50% in the group project, software inspection, and exams categories are a necessary, but not sufficient condition for passing this class.
Finally, at the discretion of the instructor, up to an additional 10% may be assigned for unusually complex or ambitious projects.
I would like to thank Linda Werner, whose CMPS 115 notes and organization influenced, and were reused, in this course.