Skip to main content Link Search Menu Expand Document (external link)

About

Table of contents

  1. TOC

Discussion

We will be using Piazza for discussion; we will enroll students from the waiting list as well.

Schedule

Class will be MWF 10:00 - 10:50. Class meets at 10 AM MWF in Center Hall 115.

A podcast of the class will be available in case students are sick or have unavoidable travel commitments on a small number of class days. However, in-class activities cannot be made up. Note that the lowest 10% of the in-class activities will be dropped, allowing you to miss up to 10% of classes without penalty.

Students will present their projects in the final exam slot, which will be Friday, March 21 8 AM - 11 AM.

Grading

  • 40% of your grade will be determined by your individual work on homework assignments and reading responses.

  • 40% of your grade will be determined by your team project. Of this 40%, part will be determined by team-level signals of quality, which will be assessed in weekly meetings with TAs and with team deliverables. The remaining part will depend on our assessment of your individual contributions to your group. For this portion, we will not assess the technical merits of each project and assign the same grade to each contributing member. Instead, you will report weekly both on your own contributions as well as your teammates’ contributions. Your contribution will be assessed in the following categories:

    • Technical contributions: to what extent has your technical work (writing code, designing software, writing documentation, writing tests, maintaining CI/CD systems) helped your team deliver great software?
    • Non-technical contributions: to what extent have you been a collaborative and effective team member? Have you delivered what you promised in a timely fashion, and communicated as needed when you were running late? Have you been an independent contributor (making decisions about your own tasks on your own), or even led others in design or implementation choices?
  • 20% of your grade will be determined by exams, which will consist of two in-class exams. Each will be worth 10% of your grade, and each will cover roughly half of the material.

If you submit individual work late, we will not directly penalize your grade. However, we only commit to promptly grading and returning work that is submitted on time. Other work will be graded (and awarded credit) as resources allow.

Letter grades will be given according to the following scale:

  • A: grade >= 90%
  • B: 80% <= grade < 90%
  • C: 70% <= grade < 80%
  • D: 60% <= grade < 70%
  • F: grade < 60%

The instructor has discretion to assign + and - grades within those ranges and to decrease the thresholds for grades if the overall grades are lower than expected. This discretion may be used to award small amounts of credit for exceptional contributions to in-class discussion.

Individual assignments (total: 50%)

(design, architecture, process, patterns, security)

ComponentWeight
Interview questions1%
Reading responses6%
Property-based testing3%
Usability study5%
Team reports (x7) (forgiving one)2%
Reading response: Soul of a New Machine5%
Project reflection6%
In-class exercises (drop lowest 10%)5%
Design and implementation oral exam7%
Your contribution to team success10%

Design and implementation oral exam

In most teams, each member is responsible for something in particular. Often, in software teams, this means that each member “owns” certain features of the product. In your team, you should choose one or more features that you will “own.” This means that you have primary responsibility for the design, implementation, and testing of that feature. Of course, others might contribute as well, but this enables you to build expertise and exercise responsibility for something. With your team, you must choose a feature or area that you will own. You will need to schedule a 15-minute oral exam with a member of the course staff sometime either during the last week of class or during finals week. You will be assessed on your understanding of the tradeoffs and implementation choices. Expect to walk the staff member through the code you wrote and explain how it works. Although you are permitted to use AI systems to help you with the code, you are responsible for the code itself, and answers of the form “I don’t know, the LLM wrote that code” will not be evaluated favorably.

Reading responses

This course will require a significant amount of reading, particularly early in the quarter. After doing each reading, you will complete a reading response that will (a) show the course staff that you completed the reading; (b) help you think more deeply about the content. You MAY NOT use AI-based tools, such as ChatGPT, in writing or revising your responses. We have, in the past, successfully identified (in a manner that was convincing to the Academic Integrity Office) violations of this policy.

The reading response for “The Soul of a New Machine” is special because unlike the other readings, this is a whole book. The book is old enough that it is easy to find used copies, and a new copy is under $12 at Amazon as of January 2025. You should start reading early; unlike the other readings, you will not be able to read this in two days between class meetings.

Team assignments (total: 30%)

ComponentWeight
Elevator pitch3%
Design mockup and vision document5%
Architecture diagrams5%
Security analysis5%
Ongoing quality10%
Project demo video2%

On project grading

Note tha there is NO grade component that assesses how many features are present in your final project! Our aim is to encourage steady progress that uses good software engineering practices, and NOT to encourage a last-minute sprint to the finish.

Exam (total: 20%)

Exams will be given in class. They will consist mostly of short-answer questions, with a few multiple-choice questions and longer responses mixed in. They will cover the principles discussed in class. They will not cover any specific technology or programming languages, but we will assume that you know Java.

Comprehensive exam

To pass the comprehensive exam for the course, you must obtain grades of at least B- in ALL of the following categories:

  • Average exam grade (across both exams)
  • Individual contribution to team success
  • Design and implementation oral exam

Pass/fail

If you take this class pass/fail, we will grade your work as usual. At the end of the course, we will map final grades of B- and above to “pass” and grades lower than B- to “fail.”

Academic Integrity

Teamwork and collaboration are critical to success in software engineering. In individual homework assignments, I ask students to follow a whiteboard policy: you may discuss the homework assignments with anyone you like in front of a whiteboard. However, after you are done, erase the whiteboard, and each student should write their own submissions. You must write the names of those you collaborated with in your submissions.

In team projects, all forms of collaboration are permitted within teams. Work between teams should follow the whiteboard policy above. Teams may not use each other’s code or other artifacts.

When writing software, you may make use of resources to which you have legitimate access. For example, you may leverage open source projects or GitHub Copilot. However, it is your responsibility to vet these tools to ensure the quality of the software you are delivering. Importantly, you must adhere to any licensing restrictions for any software you use. For example, if you use GPLv3 code in your project but do not give your code a GPLv3 license, you are stealing someone’s work and may be subject to an academic integrity violation report. Note that for this reason, GPL code can typically not be used in commercial projects, and you may want to choose a more permissive license. Licensing should be one of the earliest discussions you have with your team. If this policy seems harsh, keep in mind that licensing mistakes can lead to very expensive lawsuits.

The default license for a software project is that no one else can use artifacts from that project. If you use code from a project that does not have a license, or you use code without appropriate attribution, you are in violation of a software license’s terms and therefore violating this course’s academic integrity policy.

We recognize that you are not lawyers (neither are we!). Therefore, we will exercise reasonable judgment provided any problems are corrected immediately (typically by adding attribution or by removing the copied artifacts from your repositories). We reserve the right to report academic integrity violations for egregious cases (e.g. use of another team’s code or repeated violations).

Students hold copyright to their own work; see Supplement I, section C.

Resources

  • Dan Pilone and Russ Miles. Head First Software Development, O’Reilly Media, Inc. 2007. Available free for UCSD students: UCSD library.

  • Eric Freeman and Elisabeth Robson. Head First Design Patterns, 2nd Edition. O’Reilly Media, Inc. 2020. Available free for UCSD students: UCSD library

  • Additional optional reading: Michael A. Cusumano and Richard W. Shelby. Microsoft Secrets: How the World’s Most Powerful Software Company Creates Technology, Shapes Markets and Manages People. 1998.

Reading assignments

On days when a reading is assigned, a reading reflection will also be due. This is an opportunity for you to think more deeply about the reading material and how its lessons might impact your software engineering practice.