Note: Course web pages and resources are only available during quarters in which class is being taught
Course Description
CS 148 is about "programming in the large" - Students in the class study how to design, implement, and test complete, end-to-end applications and systems. The class instruction emphasizes learning by doing and independent innovation: Students spend most of their time on problems related to their group projects (and less time on traditional homework assignments). Moreover, student teams define their own projects (with help from the instructional staff to ensure success in the class time frame). Along the way, students learn the phases of a software project, how to work well within a team, and the basics of software analysis and design, including user interface principles, tips for satisfying clients, automated system build and testing strategies, UML, version control, and more.
- Key differences between CS148 and CS156. Undergraduate CS Requirements are one of these two options instead of both.
- CS148 recently changed its number/ID and became an upper division course (it has evolved over time to be more appropriate for upper division students). You will still see the names CS48 and CS148 intermixed in the web pages and search engines for awhile.
Pre-requisite
Computer Science 32 with a grade of C or better.
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.
Course Specifics
- Class/Section Times: TBD
- TAs/LAs/Readers: TBD
- Instructor:
- Chandra Krintz <ckrintz@ucsb.edu>
- Office: Department of Computer Science, Henley Hall 2009
- Office Hours: TBD
Schedule of Lecture Topics
- Software development processes
- Software requirements (user stories and use cases)
- Software design
- Implementation, testing, and SWE Ethics
Grading Policy
Course grades will be calculated according to the following distribution of credit:
- 75 percent - Group project, with major components contributing as follows:
- TA/LA Progress Evaluation (weekly) (10%)
- Draft Project (20%)
- Project Demonstration (20%)
- Final Project Turnin (writeup, draft project updates, retrospectives, stories, prototype implementation, extensiveness of testing) (30%)
- Peer evaluation (20%). This is computed as the average grade point value given by yourself and your teammates. The default (if none given) is 4.0 and the max is 4.0. The standard grade point scale that we use is
- A (or A+) 4.0
- A- 3.7
- B+ 3.3
- B 3.0
- B- 2.7
- C+ 2.3
- C 2.0
- C- 1.7
- D+ 1.3
- D 1.0
- D- 0.7
- F 0.0
- 25 percent - In class quizzes (dates listed on Schedule page) covering previous lecture topics and tutorial/reading assignments
Letter grades will be assigned as follows:
Score | Grade | Notes |
---|---|---|
≥ 93% | A | Exceptional scores may earn A+ |
90-92.9% | A- | Scores will be rounded to the nearest 0.1 percent |
87-89.9% | B+ | |
83-86.9% | B | |
80-82.9% | B- | |
77-79.9% | C+ | |
73-76.9% | C | |
70-72.9% | C- | |
67-69.9% | D+ | |
63-66.9% | D | |
< 63% | D- | Very poor scores may earn F |