Course Syllabus

Course Description

In this class, you'll learn how to think like a software engineer. You'll learn what software engineers do and how they do it. You'll also learn about the contexts in which a software engineer sits—a team, an organization, a market, and a society—learning to understand how your low-level engineering skills are connected to these larger contexts. By the end of the course, you should be able to enter any organization and understand the social and technical contexts in which you are writing software. If you want to become a great software engineer, this is the course for you.

To learn these things, this course has two major phases:

  • Two weeks of context setting about software, software engineers, and society
  • Five weeks of readings and skills on key skills in software engineering
  • Four weeks of building and shipping software

Additionally, we'll use the labs throughout the quarter to practice interpersonal skills critical to being a great software engineer.

Required Course Materials

You do not have to purchase a textbook for this class. We'll rely exclusively on the online book Cooperative Software Development, which I explicitly wrote for this course, as well as research papers published in digital libraries you have access to through UW Libraries.

You can find the schedule for readings on the Course Schedule.

Required Course Technologies

In this class we'll be using:

  • GitHub. We won't be using GitHub education, just vanilla GitHub. If you don't have an account already, make one, and make sure you include your full name in your profile so we can properly account for your work in grading. If you don't want to host your work on GitHub, I'm happy to make accommodations for alternate forms of submission. However, you'll have to find teammates who are also willing to not host their work on GitHub.
  • Slack. I'll maintain a Slack Team for the course, and your team is welcome to use it for team communication, as well as communication with me and the TA.
    • Don't expect a reply from the TA and I sooner than 24 hours after you send it. That way, you're pleasantly surprised when we reply sooner!
    • Note that Slack is not FERPA compliant: it makes no promises about protecting your student records. That means that by using it, you're disclosing any activity related to the class to Slack's cloud-based data centers. If you're not okay with that, you're welcome to use other forms of communication, but do let me know so I can ensure you get the same information that everyone else does.
  • Canvas. Everything else is hosted on Canvas: syllabi, schedules, homeworks, activities, etc.


There are five types of work I'll assess in this class.

Assigned readings (1 point each)

Before each lecture, you'll read a specific chapter of our required text and come prepared to answer a quiz question about it. If your answer is correct, you'll receive 1 point. I will give partial credit for partially correct answers, at my discretion.

Why a quiz? Lots of reasons: 1) it incentivizes attending class, 2) it incentivizes reading closely, 3) it's quick to do in class and quick to grade.

Selected readings (1 point each)

Before each lecture, you'll select a reading cited in required chapter and write a summary of it. Most of the readings are in the ACM Digital Library, which UW gives you free access to while on campus. To gain access off campus, you'll need to use the UW Libraries proxy. Some of the readings are podcasts, which you're also welcome to listen to as an alternative to reading.

To earn 1 point for your reading, submit to Canvas a summary of between 200 and 500 words that:

  • Summarizes the point of the article. The summary should demonstrate that you have read the paper (and not just the abstract). If a summary is missing, we'll deduct 0.5 points. If the summary is not thorough enough, we'll deduct 0.25 points.
  • Describes the thing you found most interesting about the article and explains why it is interesting. Connect the reading to your experiences, other parts of this course, your project, your interests, etc. If there is no mention of what was interesting, we'll deduct 0.5 points. If the summary fails to draw connections from the reading to class or your experience, we will deduct 0.25 points.
  • Includes a citation to what you read. We will deduct 0.25 points if you don't include a citation.

When reading the article, here are a few points to remember:

  • You don't need to read every word to understand the discovery in the paper.
    Not all research papers are well written; expect some to be more accessible than others.
  • Read not only for the discovery of the paper, but the basis on which that discovery was made. Do you believe its result?

In class, after we discuss the assigned reading, we will:

  • Break into groups of four
  • Discuss your selected readings as a group, identifying one insight from the readings that connect with the topic of the day to share with the class
  • Elect someone to share the insights with the class.
  • We'll hear from 3-4 groups about their most interesting insight.

If you really don't want to read one of the readings I've selected, you're welcome to write me with a different recommendation. The reading you choose can be academic, or it can be an extensive blog post, video, or podcast that concerns the topic for the day.

Labs (2 points each)

We'll use each lab to practice specific software engineering skills that are critical to being a great software engineer. You'll get 2 points if you attend on time and for the duration of the lab. Each lab may have its own specific requirements to earn credit. You can miss up to 2 labs for any reason.

Midterm (13 points)

The midterm will test your knowledge of the assigned reading from the first seven weeks of class. Why include a midterm? It'll incentivize you to read more closely and retain what you read better. It'll also help me differentiate who really knows the material and who doesn't so that we may assign grades that best reflect your knowledge. It will cover every topic in the assigned readings and every skill practiced in class.

The midterm will consist entirely of true/false questions. Also note that any questions that more than 60% of students in the class get wrong will be excluded from the final score as they were likely confusing or concern material that I taught poorly.

Project (44 points, team grade)

Most of your time will go to your project. It's divided up into 10 homeworks, most of which are team grades. Each homework involve practicing a foundational software engineering skills:

Note, however, that because the timeline for the project is so short, it won't give you a deep, longitudinal experience with software engineering, nor will it give you practice with massive complexity or scale. I believe these kinds of experiences are best left to practice in industry, as they're very difficult to replicate in the artificial setting of a university.

Note that in the final three weeks of the course, we'll use class time primarily for team meeting time. The TA and I will be available as consultants to help you debug, do research on libraries, and provide advice on implementation efforts.


In the first 7 weeks of class, here's I expect your weekly workload to include:

  • 5 hours of class time
  • 5 hours of homework time
  • 3 hours of reading and summarizing

I the last 4 weeks of class (including finals), it'll be a bit different:

  • 1 hour of lab
  • 14 hours of software engineering (including 4 hours of class time)

You shouldn't have to exceed 15 hours per week, which is the typical expectation for a 5 credit course.


There are 100 points you can earn in this class:

  • Labs (16 points, 2 points each, individual). You cannot make up labs. However, you can miss up to 2 labs without penalty and without documentation. This should be enough to allow for sickness, unavoidable travel, and other personal matters that make you miss class.
  • Assigned reading quizzes (14 points, 1 point each, individual).
    • If you miss a reading quiz due to absence or you’re unhappy with your quiz grade, you can make up the quiz credit by submitting a critique of the assigned chapter to Canvas within a week of the missed quiz. A critique should provide at least three improvements to the reading. These may be additional discussion points, points you think are wrong, or a correction to the article's spelling, grammar, or clarity. At most one improvement may be a correction to the article's spelling, grammar, or clarity.
  • Selected reading summaries (13 points, 1 points each, individual). Late reading summaries receive no credit.
  • Midterm (13 points, individual). If you miss the exam for any reason, you can visit office hours to take it.
  • Project (44 points, team score). Late project assignments receive no credit. However, I want your team to have all the feedback it needs for your project to succeed, so your team can resubmit any project assignment to earn up to 50% of the credit that you lost in your original submission. For example, if your team missed the deadline altogether, you could receive up to 50% of the original grade. Or, if your team received an 80% on the original assignment, it could revise it to earn half the 20% lost (10%).

We will map points you receive to a grade point using the iSchool Standard Grading Scheme.

Academic Conduct

Here is how I expect you to behave in this class:

  • Respect each other's humanity. We all have lives, struggles, fears, and goals. You're more than a student, I'm more than a professor, your TAs are more than TAs, and your classmates more more than classmates. Start every conversation remembering that.
  • Respect each other's differences. Technology is for people and people are different: learn about each other's different perspectives, experiences, and ideas.
  • Focus on learning, not grades. Having knowledge and skills is what gets you into majors, internships, jobs, and graduate school. Grades are imprecise, narrow measures of what you know and can do, so if you optimize for them instead of skills, you'll end up with narrow knowledge and skills.
  • Be resourceful. Ask questions, ask for help, and seek expertise. It can be scary to admit you need help, but I expect that you need help. That's how learning happens.
  • Be confident. Even if you don't believe you can learn something, believe you can. It just takes the right instruction, the right practice, and the right feedback. Most of those are my job, so if you're struggling, it's probably my fault.
  • Be demanding. I want this course to be great. If you don't like how it's going, give me feedback. The only way I can make it better is if you tell me what's wrong.
  • Be skeptical. If you don't believe something I say, demand evidence or a better argument. If you hear about some exciting new technology, probe closely to understand its true merits.
  • Be constructive. Don't just critique ideas; use your knowledge of their limitations to make them better. This is especially important when you collaborate with other people.
  • Don't deceive. Tell the truth, even it's hard to share. You didn't do your homework? Admit it, and let's find a way for you get future assignments done on time. You don't understand something? Admit it, and let's help you understand it. You don't want to learn something? Admit, and let's find a way to make it more interesting to you.

I expect you to follow all of these class norms and help enforce them as a community.

These class norms also have some important implications.

  • If you cannot easily access material because of a disability, let me know, because that is a failure to respect the broad diversity of abilities that people have, whether you're different in physical, mental, or learning ways.
  • If you have a concern about a TA not following the norms above, raise it with the TA first. If you cannot resolve it with them, or feel uncomfortable raising it with them, raise it with me. If you feel uncomfortable raising it with me, then you can contact our Dean for Academics, Matt Saxton.
  • If you have a concern about a teammate or classmate not following the norms above, raise it with the TA, and they will escalate it to me if they cannot resolve it.
  • Do not plagiarize, as that puts grades before learning and deceives. If you commit any of the following forms of plagiarism in this class, I will use my discretion to either give you no credit for an assignment or in some cases, for the entire class.
    • Copying content you did not author and presenting it as your own.
    • Copying content and tweaking it to seem like your own, even though it's the same ideas.
    • Reusing content you wrote previously, but presenting it as original.
    • Citing sources as evidence, even when those sources do not present such evidence.
    • Copying someone's answer on a test rather than arriving at the answer yourself.

In addition to these rules, the university also has student codes of conduct. If you violate any of these, I will escalate the issue to our Dean for Academics, who manages student misconduct cases.

Course Summary:

Date Details Due