UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Course Syllabus Spring 2006 CS169: Software Engineering Kurt Keutzer Office: 566 Cory Hall Phone: 642-9267 Email: keutzer@eecs.berkeley.edu Personal Web Page: http://www-cad.eecs.berkeley.edu/~keutzer GSI: N. R. Satish (nrsatish@eecs.berkeley.edu Web Site: The web site for this course is at bspace.berkeley.edu. The web site contains syllabus and course information, calendar and assignment deadlines, instructions for software development tools required as part of the course, and other lecture information. Required Texts: Software Engineering: A Practitioner's Approach (Hardcover) by Roger S Pressman (6th ed). Recommended Texts: Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series) (Hardcover) by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Extreme Programming Explained: Embrace Change (2nd Edition) -- by Kent Beck, Cynthia Andres; Paperback (or any Wake's book on Extreme Programming). Overview: Strategically, the course content focuses on the technology and techniques for designing and implementing software within small teams. Topics include managing requirements, functional and design specifications, test plans, principles of design and software architecture, testing, debugging, static analysis, bug tracking and version control. Students gain hands-on experience through a large course project done in teams of 6-8 students. “Industrial strength” project documents are produced for the project. Tactically the course focuses on the three skills of the super-programmer: writing code that is computationally efficient, writing code that is robust and bug-free, and writing code in a productive manner. Techniques for improving these skills are distributed throughout the course. Grading: Student evaluations are based on both individual measurements and team grades: Individual performance on group project: Midterm exam: In-class participation/pop quizzes: Group project: 20% 20% 20% 40% Grading for the group project is composed of assignments throughout the course: Project web site: Requirements specification: Functional and design specification: Testing and implementation plan: Final documentation and demonstration: 10% 20% 10% 20% 40% As noted in the grading policy above, all teams will be required to provide an in-class demonstration of their project at the end of the course. Course Schedule and Outline The course is organized into lectures and discussion sections. Most discussion sections will introduce topics or materials not covered directly during lecture that, while optional, may be helpful during development of the group projects. The content of the course is very "frontloaded" to ensure exposure to all the key concepts before the project deliverables that use those concepts are required. In particular all of the key concepts of the course are presented before the Test Plan and Implementation Plan are due. Session Date Lecture 1 1/18 Lecture 2 1/23 Lecture 3 1/25 Software Process and Life Cycle - Ch3 Section Lecture 4 1/30 Accounts given out Teams Roles and Agile Development - Ch4 Lecture 5 2/1 Overview of Software Practice - Ch5 Section Lecture 6 Lecture 7 Lecture 8 Lecture 9 2/6 2/8 2/13 2/15 Introductory UML Requirements Engineering - Ch7 Requirements Analysis - Ch 8 More Requirements Analysis - Ch8 Architecture Design and Metaphors - Ch 10 No lecture Lecture 10 Section Lecture 11 Lecture 12 Section 2/20 2/22 Lecture 13 3/6 Lecture 14 3/8 2/27 3/1 Subject - Reading Assignment in Pressman Software Engineering introduction and course overview - Ch1 Software/product development processes Ch2 Milestones/Deliverables Find your fellow team members Team input - take Jung typology test at: www.humanetrics.com Team group assignments completed DUE: Team roles assigned, group project web sites DUE: Team roles assigned, group project web sites constructed, Initial Project Proposal DUE: Requirements Specification document President's Day Software Testing - Pt 1 - Ch 13 planning game Software Testing - Pt 2 - Ch 14 Architectures and Invariants Intermediate UML http://bdn.borland.com/article/0,1410,31863,00.html Model-View Controller and Design DUE: Design Patterns - (Design Patterns - Ch 1) Specification document Applying UML Project Scheduling - Ch24 Section Lecture 15 Lecture 16 3/13 3/15 Lecture 17 Lecture 18 3/20 3/22 Lecture 19 Section Lecture 20 Lecture 21 Lecture 22 4/3 4/5 4/10 4/12 Lecture 23 Section Lecture 24 Lecture 25 Section Lecture 26 4/17 Demos Demos 5/1 5/3 5/5 4/19 4/24 4/26 Development infrastructure / logistics Mid semester review Midterm Test Plan and Implementation Plan Due Midterm Metrics - Chapter 15 Spring Break 3/27 - 3/31 More design patterns - Gamma Managing software changes with CVS Review of integration and System Testing Patterns, testing, metrics - as needed Exam II - Architectures, Design Patterns, Invariants, System Testing Whatever we need Design antipatterns and refactoring Whatever we need How to give a demo Q&A, review Optional lecture: Careers & Entrepreneurial opportunities in software Presentation and Demos Presentation and Demos Final Report Due Sign-up for Project Review Implementation checkpoint - sign up for appointment DUE: Final project documentation