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. Binary Formats for Integers and Characters
  2. Indirect Access vs Direct Access
  3. The System Call, the Function Call, and the Method Call
  4. Command (Line) Interfaces
  5. Interprocess Communication (IPC)
  6. “Human Readable” (i.e. Text Based) Interchange and Archival Formats
  7. Binary Interchange and Archival Formats
  8. Distributed Systems: Remote Call Interfaces, Formats, and Protocols
  9. The Web: Call Interfaces, Formats, and Protocols

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 is next scheduled to run Wednesdays 6pm-9pm and Saturdays 10am-4pm for three weeks starting Wednesday, 3 May 2017. The total price is $1,800.

Apply now Still have questions? Contact us.
1141 Howard St
San Francisco, California
© 2016 Bradfield School of Computer Science