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.
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.
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
Instructor Information & Communication
Learn more about your instructors here.
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.
The teaching staff will offer both in-person and remote office hours.
Ed 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.
You can also contact your GSI and the course instructor via email. Make sure to check your Inbox for messages. In your bCourses account settings, you can arrange for your course mail to be forwarded to your email or cell phone.
Course Materials and Technical Requirements
- Armando Fox, David Patterson, and Samuel Joseph, Engineering Software as a Service: An Agile Approach Using Cloud Computing, 2nd ed. (version 2.0), 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.
This course uses the Codio IDE for the programming assignments.
- The first time you log into Codio, you will be prompted to pay a $30 fee. If you have a financial hardship, please reach out to the instructors as soon as possible. You can make a private post on Ed or email firstname.lastname@example.org, email@example.com and firstname.lastname@example.org.
- 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 email@example.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.
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.
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).
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.
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.
Each module includes assigned readings from the textbook relevant to each topic covered in that module. Each chapter covers one course module.
Participation points can be earned by attending lectures/demos/weekly discussion sections and/or engaging on the Ed discussion forum, whether with fellow students or with instructional staff. These participation points may be used to decide final grades in borderline cases.
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 (30%)
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 ten CHIPS in total (not including CHIP 10.5). These assignments are to be completed independently, without collaboration.
Final Project (15%)
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 about a week before the assignment is released.
Module Quizzes (20%)
Five short-to-medium-length quizzes (each quiz covering two or three modules), 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.
Module quizzes will take place during lecture time on Tuesdays. There will be a backup quiz time scheduled for those who have a class time conflict. Peer collaboration is not permitted for quizzes.
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 (25%)
There will be an in-person final exam that will be administered on Tuesday, December 14, 2021 at 8am. For those who are unable to be on campus, there will be an option to take the exam remotely.
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.
Your final course grade will be calculated as follows:
|Category||Percentage of Grade|
|Programming Assignments (CHIPS)||30%|
4 Module Quizzes
(Lowest score dropped)
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.
Quizzes and Exams
We will be utilizing a closed Internet, closed person policy for quizzes and exams. You will be allowed unlimited cheat sheets, but will not be allowed to communicate with other people while taking an assessment.
Programming assignments and quizzes all have specific final due dates and times. You will not receive full credit if assignments are submitted after the indicated due date.
Further, each online activity must be submitted through the course website by the due date. Students who wait until the final hours prior to a submission deadline risk having problems with their ISP, hardware, software, or various other site access difficulties. Therefore, it is advisable to submit assignments and tests through the course website early. Students should plan accordingly and get into the habit of checking the course website several times each week, and submitting and posting early.
You are given eight slip days that can be used exclusively for the CHIPS programming assignments. You are only allowed to use up to three slip days for any single CHIP. A “slip day” equals an additional 24 hours to complete an assignment. Slip days can NOT be used for the quizzes, final project, final exam, or self-checks.
Going over 8 slip days: Results in a 25% penalty on an assignment for each day over, up to a maximum of 50% off. Penalties are calculated per-assignment, and slip days will be applied to the highest value assignment first. Under this policy, it is always advantageous to turn in work even if it is late.
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, programming assignments, the online quizzes, and the final exam are to be completed independently and materials submitted as homework should be the result of one’s own independent work. For programming assignments, collaboration at the level of discussing general concepts and high level approaches is allowed. Sharing code directly is forbidden. 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.
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.
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.
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). Notify the instructors and GSI through course email of the accommodations you would like to use.
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."
The syllabus page shows a table-oriented view of the course schedule, and the basics of course grading. You can add any other comments, notes, or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the "Edit" link at the top.