This course introduces imperative and object-oriented programming using Python. Topics: basic imperative programming (assignment, choice, repetition, input/output, functions), typing, recursion, objects (both data objects, or records, and domain objects), a few collection classes, inheritance, interfaces, specification of methods, coding style practice, basic handling of large data sets.