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.
- Command Line Interfaces - The Terminal Device
- Command Line Interfaces - The Process Abstraction
- Command Line Interfaces - The Shell
- Packaging Applications
- Packaging Libraries
- Packaging Services
- Endpoint Design - APIs with HTTP/1.1 Semantics & Text Payloads
- Endpoint Design - APIs with HTTP/2 Semantics & Binary Payloads
- 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.
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.