Skip to content

Topics & Readings

Week 1 - Intro

Key Ideas

  • Challenges of writing good software.
  • Understand where Software Engineering as a discipline comes in.
  • Introduce this course's perspective.
  • Establish how this course will work.

Required Context

APoSD: Chapters 1-3, and 19

These first few chapters introduce some key concepts about why writing software is hard.

Chapter 19 is a short chapter on where the author of this book stands on various trends in software development. (Part of the path to developing your own taste when it comes to software is getting opinions from experienced people and deciding which parts fit your personal style.)

Why Software Fails - A short essay on the reasons and ways software fails.

References & Additional Resources

Week 2 - Designing for the Public

Key Ideas

  • Understand user-centered and human-centered design.
  • Discuss their importance to civic technology.
  • Consider how these principles will apply to building your projects.

Required Context

References & Additional Resources

Week 3: Building Together

Key Ideas

  • Understand common software methodologies.
  • Learn a pragmatic approach to working together in a small team.
  • Learn to use version control effectively on a team.
  • Learn about code quality tools in software collaboration.

Required Context

  • APoSD Chapters 4-9 - These chapters discuss modular software design. This is useful as we think about working in a collaborative team, and will help greatly when we need to test our code.
  • APoSD Chapters 11-15 - These chapters focus on making your code understandable. This is an increasingly important consideration as your team size grows.

References & Resources

Week 4: Building Reliable Software

Key Ideas

  • Discuss using Git and GitHub effectively on a team.
  • Discuss different types of software testing & best practices for writing testable software.
  • Understand the role of observability (such as logging).

Required Context

  • Python Testing Overview - Notes from 30122 on testing in Python, review if you haven't thought about testing in a while.
  • APoSD Chapter 10 - This chapter discusses exceptions. Note that it is a somewhat unorthodox stance, and not necessarily in line with how most Python programmers think of exceptions.
  • APoSD Chapter 19 - This chapter dives into Software "trends" including TDD and Agile.
  • APoSD vs Clean Code - A discussion/debate between the author of APoSD and another popular book, Clean Code.

References & Resources