The second in a two-course sequence, this course teaches the basics of computer programming. Students learn advanced programming and abstraction techniques, focusing first on C++ language mechanics and eventually refocusing on topics such as recursion, C++ lists and maps, and the implementation techniques used to build complicated, dynamic data structures.