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

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

  1. 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.
  2. Students gain experience working in groups to develop a reasonably complex software system.
  3. Students learn object-oriented analysis and design principles and techniques.
  4. 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

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:

Schedule of Lecture Topics
(and required reading - from Larman text unless otherwise noted)

Notes