Course Syllabus
CS 50, Winter 2010
Programming Project
Course Description
CS 50 is about "programming in the large" - how to design, implement, and test large programs.
The emphasis is on learning by doing, and students will spend most of their time
on problems related to their group projects (and less time on traditional homework assignments).
Along the way, CS 50 will teach
- the phases of a software project, and experience working in teams
- basics of object-oriented analysis and design, including design patterns
- user interface principles, and tips for satisfying clients
- automated system build and testing strategies, UML, version control and more ...
Pre-requisites and Enrollment Conditions
CS 10 and CS 20 are pre-requisites, and all students are expected to begin the quarter with a level
of competency in Java programming equal to that of students who have passed CS 20 at UCSB. CS 50 is
intended for Computer Science pre-majors. Other students may enroll only as space permits.
Course Goals
- Students gain personal experience with each of the typical
phases of a large-scale programming project, including requirements
and domain analysis, system design, implementation, and testing.
- Students gain experience working in groups to develop a
reasonably complex software system.
- Students learn object-oriented analysis and design principles
and techniques.
- Students learn to effectively implement and test
object-oriented software systems.
Instructor
Dr. C. Michael Costanzo, mikec@cs.ucsb.edu
Office hours: Monday and Wednesday 11-11:50, in Phelps 1409B (enter through 1413)
Teaching Assistants
Yi Gong, ygong@cs.ucsb.edu
Office hours: Wednesday 3:00-5:00, in CSIL
Jaideep Nijjar, jaideepnijjar@cs.ucsb.edu
Office hours: Tuesday 9:15-10:15 and Thursday 10:00-11:00, in Phelps 1413
Instruction Schedule
- Lectures - 3 per week - MWF 12-12:50 in Building 387, room 101
- Discussion/meeting with TA - 1 per week - F 9-9:50 or F 10-10:50 in
Phelps 1401, or as directed by TA
Required Text
Craig Larman, Applying UML and Patterns: An Introduction to
Object-Oriented Analysis and Design and Iterative Development, 3rd Ed.,
Prentice Hall PTR, 2005.
Grading Policy
Course grades will be curved on the basis of the following distribution of credit:
- 50 percent - Cumulative group project assignments
- 10 percent - Individual attendance and participation at formal group meetings
- 15 percent - Cumulative individual homework assignments
- 25 percent - Midterm exam - Wednesday, February 17 (unless announced otherwise)
Schedule of Lecture Topics
(and required reading - from Larman text unless otherwise noted)
- Development processes - chapters 1-4, and 40
- Requirements, and use cases - chapters 5-8, and 30
- Domain analysis - chapters 9-12, and 31-32
- System design - chapters 13-19, 24-29, and 33-36
- Implementation, testing, and special topics - chapters 20-21
- also read JUnit article online by Beck & Gamma,
and TBA
Notes
- The course's web pages (http://www.cs.ucsb.edu/~mikec/cs50)
are mandatory reading. Students
are responsible for monitoring them throughout the quarter.
- Make-up exams can only be arranged at least 48 hours prior to the
exam, and only in extraordinary circumstances (which do not include having
other exams that day).
- There will be no final exam for CS 50 this quarter.
- Be sure to read and understand all parts of the "Project Rules" web page (see link
at top of "Project" page), especially the part about individual accountability.