summary computer science is the study of problem solving computer science uses abstraction as tool for representing both processes and data abstract data types allow programmers to manage the complexity of problem domain by hiding the details of the data python is powerfulyet easy-to-useobject-oriented language liststuplesand strings are built in python sequential collections dictionaries and sets are nonsequential collections of data classes allow programmers to implement abstract data types programmers can override standard methods as well as create new methods class constructor should always invoke the constructor of its parent before continuing on with its own data and behavior key terms abstract data type class data structure dictionary format operator information hiding method procedural abstraction self string abstraction computable data type encapsulation formatted strings list mutability programming shallow equality truth table algorithm data abstraction deep equality exception implementation-independent list comprehension object prompt simulation programming exercises implement the simple methods get_num and get_den that will return the numerator and denominator of fraction in many ways it would be better if all fractions were maintained in lowest terms right from the start modify the constructor for the fraction class so that gcd is used to reduce fractions immediately notice that this means the __add__ function no longer needs to reduce make the necessary modifications implement the remaining simple arithmetic operators (__sub____mul__and __truediv__ implement the remaining relational operators (__gt____ge____lt____le__and __ne__ introduction