Course Syllabus

COMPSCI 169A Software Engineering

  • Use the Syllabus Navigation menu above to navigate through this syllabus (upper-right or upper-left corner, depending on the size of your screen).
  • See the Modules left navigation for a chapter by chapter (module by module) outline of course content.
  • See the Course Summary below for a list of due dates (use the link at the top right of this page to "jump to today"). All times listed are Pacific Time—please make the appropriate adjustments for your time zone.
  • See the Course Calendar and Staff in the the left navigation for course calendar and class events including office hours.
  • Please join class Ed page here, also in the left navigation.
  • Summer 2025 Extensions Request Form

Table of Contents

  • Course Description
  • Prerequisites
  • Course Objectives
  • Instructor Information & Communication
  • Course Materials and Technical Requirements
  • Learning Activities
  • Grading
  • Course Policies
  • Course Evaluation
  • Course Summary

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, analyzing and refactoring legacy code.


Prerequisites

UC Berkeley CS61A & CS61B, 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.), 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, activities, interaction with staff

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 will serve as points of contact. The teaching staff will also be responsible for assisting you directly with your questions about assignments and course requirements, along with facilitating ongoing discussion and interaction with you on the major topics in each module.

Course Activities, Office Hours and Review Sessions

The teaching staff will offer live and/or Zoom office hours via Zoom. You can find the times and links under Course Calendar in the left-hand course navigation. All these course events are opportunities for you to interact with your instructors and fellow students.

EdStem Discussion Forum

Ed will be used both as a discussion forum and for messages from the instructional staff. You are welcome to post your questions regarding any aspect of the course on this forum, as well. You can access the Ed forum within bCourses by clicking on the "Ed" link in the left-hand course navigation and choose to be alerted via email of new postings. Course staff will only use Ed to post announcements. Do not rely on course staff to answer questions about course content of homework assignments on Ed. If you have questions like above, we encourage you to ask us in office hours or discussion!

Ed posts will be split into two categories: Logistical and Community. We will tag each post with their corresponding category. Logistical posts will mostly be announcements directly from staff where you are encouraged to ask any clarifying logistical questions. Community posts will be created alongside the release of new assignments and here we encourage collaboration between students, but course staff will refrain from participating. Sharing code solutions is forbidden, but helping other students through problems through teaching concepts/approaches is encouraged.

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

Course Mail

You can also contact your GSI and the course instructor via email. Please don't use the bCourses "Messaging" feature as your instructors may not be notified of those in a timely manner. The Ed forums and office hours are the most direct way to contact us.


Course Materials and Technical Requirements

Required Materials

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

The textbook will be available in Codio (see below), via the links in bCourses. You can also download the PDF for free from www.saasbook.info or purchase Kindle or hardcopy from Amazon.

Codio

This course uses the Codio IDE for the programming assignments.

  • The first time you log into Codio, you will be prompted to pay a one-time fee. If this is an academic hardship, contact the Bookstore to arrange to purchase a code and get reimbursed via financial aid mechanisms.
  • Make sure you access the programming assignments by signing into bCourses first, then following the link to Codio. If you instead try to sign into Codio directly, your assignment grades won’t be properly recorded and you won’t get credit.

For Codio technical support:

  • If you are having trouble logging into Codio, you can either visit the Codio FAQ page and click the icon in the bottom right corner OR email help@codio.com.
  • Once you have logged into a Codio assignment, you can select Help from the top toolbar and click Support. See the following video for more details: Access In-Product Support.

Technical Requirements

This course is built on a Learning Management system (LMS) called Canvas and you will need to meet these computer specifications to participate within this online platform.

Technical Support

If you are having technical difficulties please alert one of the GSIs immediately. However, understand that neither the GSIs, nor the professor, can assist you with computer technical problems. You must call or email tech support and make sure you resolve any issues immediately. Be sure to document (save emails and transaction numbers) for all interactions with tech support. Extensions and late submissions will not be accepted due to “technical difficulties.”

For bCourses/Canvas technical support: click the Help button (in global navigation on the far left).


Learning Activities

Academic Integrity

You won't be able to access your course material until you 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.

Multimedia Lectures

Recorded lectures support your readings and assignments but also contain additional material that may be included in the exams. Each lecture has been broken into sections. You are expected to take notes while viewing the lectures as you would in a regular classroom.

Reading Assignments

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

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.

Self-Checks

Each lecture video is followed by one or two self-check questions 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

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"). 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 will be treated as a final project for this class. This assignment 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, and you will have a two day window for each quiz in which you can schedule your time. This semester, we will drop your lowest quiz score.

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 as follows:

Final Grade Percentages
Category Percentage of Grade
Self-Checks 5%
Programming Assignments (CHIPS) 35%
Final Project (CHIPS 10.5) 20%
Module Quizzes (lowest one dropped) 20%
Final Exam 20%

It is important to note that not all components are graded online and included in the online course grade book. Because of this, the online course grade book will not display your overall course grade at any given time or your final grade. It should simply be used to assess your performance on the components that are included within it. Your final letter grade will be mailed to you by the registrar's office or released on CalCentral approximately a week after the end of the course.

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 to have 50% or more points across all CHIPS; 50% or more (including peer eval scores) on final project, which should be easy to achieve as long as your peers do not say that you were basically absent and not contributing; 30% or more, averaged across all quizzes + final.

For students who switch to P/NP, we will calculate a letter grade for you and then convert it to P/NP for reporting. That letter grade will be used to determine CS169L eligibility if you're interested in it.


Course Policies

Quizzes and Exams

We will be utilizing A new 'Computer Based Testing Facility' . For each quiz you will sign up for a 1 hour slot of your preference during a 2 day window. Quiz dates will be updated on the assignments page.

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 3 day extension on all CHIPS, no penalty, no need to ask permission. That is why bCourses shows an "open until" date that is 3 days later than the "due" date for each CHIPS.
  • For a longer extension, fill out the extensions 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 Slack) checkin 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. So if you request a 3-day extension, and you later resubmit the form for the same assignment and ask for a 4-day extension, then two things are true:
    • Your total requested extension is 4 days (not 7 days)
    • Since your total request is now greater than 3 days, you will have to checkin with your GSI as above.
  • Any extension you get is for that assignment only, not automatically on future assignments as well. You need to submit the form each time you request an extension.
  • The above constants will be adjusted automatically for DSP students.

We hope this makes it easier on both you and us to have some flexibility in assignment deadlines.

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, with conflict times handled the way we have been doing it so far. This is only for CHIPS homework assignments up to but not including 10.5.

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, the online 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 for programming assignments. Sharing code directly is forbidden, unless you are collaborating with someone from within your team of 4. Please exercise your best judgment. 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 email the teaching staff.

Team Policy

CS 169A is a team-based class. Every student will be assigned to a group of 4 shortly after the 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 Google Form (not yet released) to be matched with a group (even if you have already found teammates). Submit it ASAP so you can start collaborating code 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!

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. The expectation is that you will be honest in the taking of exams. To provide fair warning, we’d like to make it clear that 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, explore the resources linked below:

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 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 (https://ethics.acm.org/).

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 the policy of the university, 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 fill out this form to notify us if you need accommodations.

UC Berkeley is committed to providing robust educational experiences for all learners. With this goal in mind, we have activated the ALLY tool for this course. You will now be able to download content in a format that best fits your learning preference. PDF, HTML, EPUB, and MP3 are now available for most content items. For more information visit the alternative formats link or watch the video entitled, "Ally in bCourses."


Course Evaluation

Before your 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.


Course Summary:

Course Summary
Date Details Due