Program Interfaces, Patterns and Anti-patterns

Computer science is embarrassed by the Computer
— Alan Perlis

One of the most important roles of senior engineers and architects is to define the boundaries between programs. This must be done thoughtfully, with a firm understanding of what is being abstracted, and foresight of evolving needs.

Unfortunately, these skills are typically learnt the hard way. This course is our attempt to rectify that, providing a tour of program interfaces, patterns and antipatterns through a series of case studies and exercises.

We cover many specific API designs in detail, but the ultimate objective is broader: students should leave with greater confidence that their own API designs will stand the test of time.


  1. Command Line Interfaces - The Terminal Device
  2. Command Line Interfaces - The Process Abstraction
  3. Command Line Interfaces - The Shell
  4. Packaging Applications
  5. Packaging Libraries
  6. Packaging Services
  7. Endpoint Design - APIs with HTTP/1.1 Semantics & Text Payloads
  8. Endpoint Design - APIs with HTTP/2 Semantics & Binary Payloads
  9. Endpoint Design - APIs with Database Query Semantics

Projects and exercises

As a survey course, the practical component of Program Interfaces: Patterns and Anti-patterns involves writing a number of short programs to explore each type of interface.

Assumed knowledge

This course assumes 1-2 years of work experience as a software engineer with some exposure to a mix of program interfaces.

Schedule and price

This course will next 5:30pm-8pm Mondays and Thursdays for 4 weeks starting 7 September 2017. The total price is $1,800.

Apply now Still have questions? Contact us.
This class was all about expanding my toolbox and vocabulary for interface design. Programs have been written for half a century; this means that when I’m faced with a programming problem, odds are that there is a pattern or best practice out there that I can take inspiration from. Putting names and faces to them allows me to go for exactly what I want rather than fumbling around and making costly mistakes.
Tiger Shen portrait
Tiger Shen, Software Engineer at Braintree
576 Natoma St
San Francisco, California
© 2016 Bradfield School of Computer Science