classes and object-oriented programming designing programs using abstract data types abstract data types are big deal they lead to different way of thinking about organizing large programs when we think about the worldwe rely on abstractions in the world of finance people talk about stocks and bonds in the world of biology people talk about proteins and residues when trying to understand these conceptswe mentally gather together some of the relevant data and features of these kinds of objects into one intellectual package for examplewe think of bonds as having an interest rate and maturity date as data attributes we also think of bonds as having operations such as "set priceand "calculate yield to maturity abstract data types allow us to incorporate this kind of organization into the design of programs data abstraction encourages program designers to focus on the centrality of data objects rather than functions thinking about program more as collection of types than as collection of functions leads to profoundly different organizing principle among other thingsit encourages one to think about programming as process of combining relatively large chunkssince data abstractions typically encompass more functionality than do individual functions thisin turnleads us to think of the essence of programming as process not of writing individual lines of codebut of composing abstractions the availability of reusable abstractions not only reduces development timebut also usually leads to more reliable programsbecause mature software is usually more reliable than new software for many yearsthe only program libraries in common use were statistical or scientific todayhoweverthere is great range of available program libraries (especially for python)often based on rich set of data abstractionsas we shall see later in this book using classes to keep track of students and faculty as an example use of classesimagine that you are designing program to help keep track of all the students and faculty at university it is certainly possible to write such program without using data abstraction each student would have family namea given namea home addressa yearsome gradesetc this could all be kept in some combination of lists and dictionaries keeping track of faculty and staff would require some similar data structures and some different data structurese data structures to keep track of things like salary history before rushing in to design bunch of data structureslet' think about some abstractions that might prove useful is there an abstraction that covers the common attributes of studentsprofessorsand staffsome would argue that they are all human figure contains class that incorporates some of the common attributes (name and birthdateof humans it makes use of the standard python library module datetimewhich provides many convenient methods for creating and manipulating dates