Syllabus

COMPSCI 169A — Introduction to Software Engineering, Fall 2026

Table of contents

  1. Course Description
  2. Prerequisites
  3. Course Objectives
  4. Course Communication
    1. Office Hours and Review Sessions
    2. Ed Discussion Forum
  5. Course Materials
    1. Textbook (required)
    2. Videos
    3. Programming Environment
  6. Learning Activities
    1. Orientation and Academic Integrity
    2. Reading Assignments
    3. Self-Checks (on Gradescope)
    4. Programming Assignments (CHIPS)
    5. Final Project
    6. Module Quizzes
    7. Final Exam
  7. Grading
  8. Course Policies
    1. Quizzes and Exams
    2. Automatic Extension Policy for CHIPS
    3. Team Policy
    4. Honor Code
    5. Collaboration and Independence
    6. Cheating
    7. Plagiarism
    8. Academic Integrity and Ethics
    9. Incomplete Course Grade
    10. Students with Disabilities
    11. Participation
  9. Course Evaluation

Course Description

This course presents ideas and techniques for designing, developing, and modifying large software systems using Agile techniques and tools. Topics include: function-oriented and object-oriented modular design techniques, designing for re-use and maintainability including proper use of design patterns, behavior-driven design, test-driven development, user stories for requirements elicitation & documentation, verification and validation, cost and quality metrics and estimation, project team organization and management, and analyzing and refactoring legacy code.

Prerequisites

UC Berkeley CS 61A & CS 61B, or equivalent knowledge: maturity in at least one imperative object-oriented language (Python, Java, etc.), familiarity with both the theoretical underpinnings and implementation of basic data structures (lists, hashes, queues, etc.), and understanding of the basics of functional programming and higher-order functions.

Course Objectives

After successfully completing this course, you will be able to:

  • Articulate the primary differences between Agile and Plan-and-Document methodologies
  • Apply the key ideas of learning a new language in order to construct programs in Ruby
  • Summarize the key architectural elements of RESTful SaaS applications and microservices
  • Apply the key ideas of learning a new framework to construct and deploy simple Rails applications
  • Apply behavior-driven development (BDD) to elicit customer needs and express them as user stories that will drive development
  • Construct unit- and module-level tests and measure their coverage
  • Apply BDD & TDD to identify the main parts of a legacy code base, measure code quality, and refactor code to improve its quality
  • Exercise best practices in planning, effort estimation, and coordination of the efforts of small software teams, using appropriate tools to support those practices
  • Recognize when an appropriate Design Pattern may improve code quality, and refactor code to apply those Design Patterns
  • Identify and repair potential app-level security and performance problems

Course Communication

The instructors will oversee all activities and grading, as well as being available to resolve any issues that may arise. Both the instructors and GSIs will interact with the whole class and serve as points of contact. The teaching staff will assist you directly with your questions about assignments and course requirements, along with facilitating ongoing discussion and interaction on the major topics in each module.

Office Hours and Review Sessions

The teaching staff will offer live and/or Zoom office hours. You can find the times and locations on the Calendar. All these course events are opportunities for you to interact with your instructors and fellow students.

Ed Discussion Forum

Ed will be used both as a discussion forum and for messages from the instructional staff. You are welcome to post questions regarding any aspect of the course. Course staff will use Ed to post announcements.

Ed posts are split into two categories: Logistical and Community. Logistical posts are announcements directly from staff, where you are encouraged to ask clarifying logistical questions. Community posts are created alongside the release of new assignments; there we encourage collaboration between students, but course staff will refrain from participating. Sharing code solutions is forbidden, but helping other students through problems by teaching concepts and approaches is encouraged.

Posting answers to quizzes, or the quiz questions themselves, on Ed is forbidden. This could give other students an unfair advantage since people start at different times within the quiz window.

Please don’t use the bCourses “Messaging” feature, as your instructors may not be notified in a timely manner. The Ed forums and office hours are the most direct ways to contact us.

Course Materials

Textbook (required)

Armando Fox and David Patterson, Engineering Software as a Service: An Agile Approach Using Cloud Computing, 2nd ed. (version 2.0 or later), 2020.

Download the PDF for free from saasbook.info, or purchase Kindle or hardcopy from Amazon. Each course module corresponds to one chapter of the textbook.

Videos

Each module includes professionally recorded lecture videos, broken into short sections that parallel the textbook. The videos are embedded in the module pages. Recorded lectures support your readings and assignments but also contain additional material that may be included in the exams. You are expected to take notes while viewing the lectures as you would in a regular classroom.

Programming Environment

CHIPS programming assignments are distributed via GitHub (you will receive an invitation to the course GitHub organization) and submitted to Gradescope for autograding. Setup instructions for your development environment are provided with the first CHIPS assignment.

Learning Activities

Orientation and Academic Integrity

You must read the page How to Have a Bad Experience in This Course and take the subsequent Orientation Quiz to test your understanding. As part of the Orientation Quiz, you will be required to write, sign, and upload a pledge to academic integrity.

Reading Assignments

Each module includes assigned readings from the textbook relevant to each topic covered in that module. Each chapter covers one course module.

Self-Checks (on Gradescope)

Each module has a self-check on Gradescope with one or two questions per lecture video to sanity-check your understanding of the material. These “micro-quizzes” do count towards your grade. To get credit you have to get every question correct, but you have an unlimited number of attempts to do so.

Programming Assignments (CHIPS)

A series of hands-on programming assignments — also known as CHIPS (Coding/Hands-on Integrated ProjectS) — will cement your knowledge of each module’s topics. In addition, some assignments involve code reading/code comprehension and questions to check your understanding. There are eleven CHIPS in total (not including CHIP 10.5, “The Project”). Each CHIPS has a one-page introduction on this site describing its goals and logistics.

Collaboration with your team of four is allowed on these assignments. We recommend collaborating on high-level approaches, writing up solutions separately, then teaching each other if either party gets stuck. If you do end up referencing one of your group member’s code, it is your responsibility to understand their approach and type out your own solution (although your code may be similar). Collaboration other than sharing high-level approaches with students outside of your team is strictly forbidden and is considered academic misconduct.

Final Project

CHIP 10.5: Agile Iterations is a heavier programming assignment that is treated as the final project for this class. It is a group project, and project team formation will be facilitated early in the course, so you can also work with your team on the other CHIPS programming assignments and get used to working together.

Module Quizzes

Five quizzes (around two or three modules per quiz), consisting primarily of short-answer and coding-related questions based largely on the practices and concepts in the programming assignments, will be administered during the course. Quizzes are administered on campus in the Computer-Based Testing Facility (CBTF), and you will have a two-day window for each quiz in which you can schedule your time. We will drop your lowest quiz score (see Quizzes and Exams below).

If you have a Letter of Accommodation at UC Berkeley, confirm with your GSI that it has been received and accommodations have been made. When you start a quiz or exam, check the timer when you open it to confirm you have the correct time accommodation. This applies to all quizzes and exams in the course.

Final Exam

The final exam will be administered in the last week of the course. More details will be shared later in the course.

If you miss taking the final, or try to take it in a manner for which you have not received permission, you will fail this class automatically.

Grading

Your final course grade will be calculated by weighting categories of assignments:

Category Weight Notes
CHIPS (coding/hands-on integrated projects) 25%  
Module Quizzes 24% Lowest score dropped (see below)
Final Project (CHIP 10.5) 20% Team project, two Agile iterations
Final Exam 25% In person, CBTF
Self-Checks 6% On Gradescope, unlimited attempts

The course is not graded on a curve. Grade bins will be announced in the first couple of weeks of class.

P/NP: to pass you need 50% or more points across all CHIPS; 50% or more (including peer eval scores) on the final project — which should be easy to achieve as long as your peers do not say that you were basically absent and not contributing; and 30% or more, averaged across all quizzes + final.

Not all components are graded in one place, so no single tool will display your overall course grade at any given time. Your final letter grade will be released on CalCentral approximately a week after the end of the course.

Course Policies

Quizzes and Exams

We use the campus Computer-Based Testing Facility (CBTF). For each quiz you will sign up for a 1-hour slot of your preference during a 2-day window. Sign-ups (via PrairieTest) usually open one week before each quiz window. Quiz dates and sign-up dates are posted on the Schedule.

There are five module quizzes, each worth an equivalent weight in your grade. We will drop the lowest quiz score (so your best 4 scores count), but only if you show up for the mandatory orientation quiz.

The orientation quiz takes about 15 minutes; you will get every question correct, and it exists to make sure you know how the CBTF works.

Automatic Extension Policy for CHIPS

In the hopes of both giving you more flexibility on CHIPS deadlines and keeping the staff workload manageable, CHIPS deadlines are lenient. But be aware that CHIPS-related material will appear on quizzes and exams, so you should try to stay as up-to-date as possible.

  • Everyone automatically gets a 2-day extension on all CHIPS — no penalty, no need to ask permission. That is why each CHIPS shows an “open until” date that is 2 days later than its “due” date.
  • For a longer extension, fill out the extension request form for an active assignment (one that has been released and is due in the future). If you request an extension longer than 3 but less than 6 days, we will grant it with no penalty, but we will need to check in with you to make sure everything is OK: you will have to schedule a live or Zoom (not email or Ed) check-in with your regular section TA before your extension is granted.
  • If you submit the form multiple times for the same assignment, the extension is always the max of what you’ve requested, not additive.
  • Any extension you get is for that assignment only. You need to submit the form each time you request an extension.
  • The above constants will be adjusted automatically for DSP students.
  • Can I pre-request extensions on CHIPS that haven’t been released yet? No. If you think you need that, please reach out to an instructor directly to discuss your situation.
  • Does this apply to quizzes, exams, and the final project too? No — they remain scheduled at their usual time. This is only for CHIPS homework assignments up to, but not including, 10.5.

Team Policy

CS 169A is a team-based class. Every student will be assigned to a group of 4 shortly after the add/drop deadline. If you plan on dropping, do so early and contact course staff so we can simplify the group matching process before the deadline. Everyone is required to submit the team matching form to be matched with a group (even if you have already found teammates). Submit it ASAP so you can start collaborating with your group!

You may collaborate and share code within your group when working on homework assignments. You may debate high-level approaches outside of your group, but you may not share code with other groups. If you do decide to share code within your group, every member is responsible for understanding the code. Teach each other and ask questions!

Honor Code

The student community at UC Berkeley has adopted the following Honor Code: “As a member of the UC Berkeley community, I act with honesty, integrity, and respect for others.” The expectation is that you will adhere to this code.

Collaboration and Independence

Reviewing lecture and reading materials and studying for exams can be enjoyable and enriching things to do with fellow students. This is recommended. However, unless otherwise instructed, quizzes and the final exam are to be completed independently. For materials submitted as homework such as CHIPS assignments, we encourage you to collaborate with your team of 4. Outside of your team, collaboration at the level of discussing general concepts and high-level approaches is acceptable. Sharing code directly is forbidden, unless you are collaborating with someone from within your team of 4. If you find yourself unsure whether a certain action is permissible, please refer to the Center for Student Conduct guidelines and don’t hesitate to ask the teaching staff.

See also the AI Policy for how these rules apply to AI programming assistants and chatbots.

Cheating

A good lifetime strategy is always to act in such a way that no one would ever imagine that you would even consider cheating. Anyone caught cheating on a quiz or exam in this course will receive a failing grade in the course and will also be reported to the University Center for Student Conduct. To provide fair warning: we have strategies in place to detect those who try to circumvent the permitted ways to complete the course.

Plagiarism

To copy text or ideas from another source without appropriate reference is plagiarism and will result in a failing grade for your assignment and usually further disciplinary action. For additional information on plagiarism and how to avoid it, see:

Academic Integrity and Ethics

Complex software is a team effort, and collaboration is welcome on programming assignments and team projects. But you may never take credit for the work of others. If you wholesale copy-paste code without understanding it, you’re taking credit for others’ work. If you copy answers on a quiz or exam, you’re taking credit for others’ work. If you copy-paste code from StackOverflow — or an AI assistant — without understanding it, you’re taking credit for others’ work. If you’re in doubt about whether a particular collaboration is OK, please ask the course staff directly.

If we discover that you’re not doing your own work, whether on a programming assignment, quiz, exam, or any other part of the course, you will fail the class, and if it’s not your first offense at the Student Conduct Office, the course instructors will personally argue for your suspension. We cannot say this strongly enough.

We all have lapses in judgment; if you do something you later decide is inappropriate, and you privately report it to the instructors within 24 hours, we can talk together about how you should best take responsibility for your actions.

Please don’t cheat. It’s beneath your stature as a Cal engineer, and it can give the whole practice of software a bad reputation. Software can change the world, but when the people writing it are ethically weak, it will change the world for the worse. Let’s each agree to take seriously our responsibility as software engineers by always acting honorably and in good faith.

Students are also encouraged to pledge adherence to the ACM Code of Ethics and Professional Conduct.

Incomplete Course Grade

Students who have substantially completed the course but, for serious extenuating circumstances, are unable to complete the final exam, may request an Incomplete grade. This request must be submitted in writing or by email to the teaching staff. You must provide verifiable documentation for the seriousness of the extenuating circumstances. According to university policy, Incomplete grades must be made up within the first three weeks of the next semester.

Students with Disabilities

If you require course accommodations due to a physical, emotional, or learning disability, contact UC Berkeley’s Disabled Students’ Program (DSP). Please notify the course staff of any accommodations as early as possible.

Participation

Being exceptionally helpful on course question boards and during online or in-person (section) discussions, whether with fellow students or with instructional staff, will earn you discretionary points that may be used to decide final grades in borderline cases.

Course Evaluation

Before the course ends, please take a few minutes to participate in the course evaluation to share your opinions about the course. The evaluation does not request any personal information, and your responses will remain strictly confidential.


Back to Top

Accessibility Nondiscrimination

Copyright ©2026, Regents of the University of California and respective authors.

This site is built following the Berkeley Class Site template, which is generously based on the Just the Class, and Just the Docs templates.

View all course offerings