In spring 2012 I co-created a course with Cris Cecka called Systems Development for Computational Science. This was a C++ programming course focused on library development, with content like abstraction functions, representation invariants, and iteration, as well as more computational science-centered content. A couple lectures got lecture notes too; here they are.