CS 160 - Software Engineering

Cay S. Horstmann

Fall 2006

Course Policies

Schedule: A schedule, which is updated frequently, is posted here. You are responsible for checking it before every class.

Textbook: Instead of a traditional textbook, you will subscribe to a SafariU bookshelf ($39.99 for 120 days) that is populated with 9 books. If you do not purchase the subscription, you will need to get access to the books in some other way (e.g. the library). The books are:

  1. Rational Unified Process Made Easy: A Practitioner's Guide to the RUP, Per Kroll and Philippe Kruchten
  2. Patterns for Effective Use Cases, Steve Adolph, Paul Bramble, Alistair Cockburn and Andy Pols
  3. Applied Software Project Management, Jennifer Greene and Andrew Stellman
  4. Patterns of Enterprise Application Architecture, Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee and Randy Stafford
  5. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, Third Edition, Craig Larman
  6. Unit Test Frameworks, Paul Hamill
  7. Refactoring: Improving the Design of Existing Code, Martin Fowler, Kent Beck, John Brant, William Opdyke and Don Roberts
  8. Code Reading: The Open Source Perspective, Diomidis Spinellis
  9. Extreme Programming Explained: Embrace Change, Second Edition, Kent Beck

Don't worry; you won't need to read all nine books in their entirety. I will assign selected sections throughout the semester.

Prerequisites: Prerequisite: CS 146, CS 151 (with a grade of "C-" or better in each); CS 100W (with a grade of C or better) If you are registered for the class, you must email me your answers to the prerequisite quiz by 23:59 of the day indicated in the schedule, or I will drop you from the class for failure to fulfill the prerequisites.

Add Policy: To add the course, you must submit your solution to the prerequisite quiz, I will randomly choose among add requests that I receive up to the start of add request processing (see the calendar below), and in the order of receipt thereafter. If there is space, I will reply to your email with an add code. You must use your add code within 48 hours and email me to confirm that you added the class, or the add code will be reassigned to someone else.

Class Attendance: Class attendance is not optional. I expect each student to be present and punctual at every scheduled class. Be prepared to present the status of your project work every Monday. 

Issue Tracking System: You will need to sign up for an account with the Track+ issue tracking system. All class announcements (including homework and project descriptions) will be distributed through the issue tracking system. All issues of general interest to the students of this class (in particular, homework or project clarifications) must be submitted to me via the issue tracking system. Use email for personal and confidential issues only.

Homework: Check in your submissions to CVS, by 23:59 PST of the due date. Homework must be submitted on time. No extensions are granted under any circumstances. Schedule your time well to protect yourself against unexpected compatibility problems, hardware breakdown, network failures, etc.

Project: There will be a group project throughout the semester. Groups have 4 or 5 members. I will assign the groups.

Quick quiz: There will be a five minute online quiz at the beginning of every class. Quizzes will focus on reading assignments. Everyone will be able to see your quiz answers (but not your grade).

Publicly Viewable Work: Your class work (including homework, exam, and project work) may be viewable by other students of this course. Your grades will not be viewable by others.

Plagiarism: You may use code handed out by me, or code from the textbook, but you may not copy code from another student. Do not give your code to someone else. If discovered, neither the originator nor the copier of plagiarized code will receive credit, as the grader will not attempt to find out the true author. 

Be sure not to copy and paste materials that you find on the internet without attribution. If you are at all unsure about what constitutes plagiarism, you need to work through the tutorial at http://tutorials.sjlibrary.org/plagiarism/index.htm.

I report all incidents of plagiarism to the university.

Exams: There will be 2 exams, each one class period long, and a final. Exams cannot be made up, except for reasons of illness, as certified by a doctor, or documentable extreme emergency. Makeup exams may be oral.

Laptops: You will be required to bring a wireless laptop to all (!) classes and exams. You need to have the following tools installed on your laptop:

Grading Policy:

Quizzes and Exams:
25%
Homework Assignments
25%
Project:
25%
Final:
25%

In the event that the department does not provide a grader, I will grade homework assignments "holistically", by assigning a letter grade to each assignment, without computing individual scores. Letter grades will be:
A = all (or almost all) of the assignment solved and documented and packaged in a professional manner
B = most of the assignment solved, but at least one key issues missing, or significant issues with documentation or packaging
C = some of the assignment solved, with at least half of the key issues resolved, but at least two key issues missing
D = a solution has been attempted, with at least one but but less than half of the key issues resolved
F = no solution has been attempted, or the attempted solution did not resolve any of the key issues of the assignment

Copyright of Materials: All materials created by the instructor for this course, including lectures, handouts, homeworks, exams, solutions, projects, and so on, are copyrighted property of the instructor. You may transscribe or record lectures or copy course materials for the use of yourself and other students registered in this course. You may not sell or give transscriptions or recordings of lectures or copies of course materials to others without the prior written consent of the instructor.

For further greensheet information please see http://www.cs.sjsu.edu/greensheetinfo/index.html

Catalog Description

Software engineering principles, requirements elicitation and analysis, design, configuration management, quality control, project planning, social and ethical issues. Required team-based software development, including written requirements specification and design documentation, oral presentation, and tool use.

Course Goal

To educate students on the general concepts of software engineering and all the relevant subjects in the software development process through a hands-on team term project.

Course Objectives

Software Process:

Reason about and apply the entire process of software engineering. Be able to come up with a software project schedule and use software tools like Microsoft Project or similar for project scheduling purposes. Be able to use version control tools like CVS.

Requirement engineering:

Be able to solicit, elaborate, and validate specifications for given software projects.

Software Design:

Understand what software design architectures are suitable for various software projects. Apply appropriate software design to a group project. Be able to use appropriate software design tools.

Validation:

Understand the software validation process and be able to use issue tracking tools.

Student Learning Outcomes:

Upon successful completion of this course, a student is expected to have the following skills, in the context of projects of moderate size (<= 1 year of development time, involving <= 10 participants)