structured typesmutabilityand higher-order functions tuples sequences and multiple assignment lists and mutability cloning list comprehension functions as objects stringstuplesand lists dictionaries testing and debugging testing black-box testing glass-box testing conducting tests debugging learning to debug designing the experiment when the going gets tough and when you have found "thebug exceptions and assertions handling exceptions exceptions as control flow mechanism assertions classes and object-oriented programming abstract data types and classes designing programs using abstract data types using classes to keep track of students and faculty inheritance multiple levels of inheritance the substitution principle encapsulation and information hiding generators mortgagesan extended example