data type = set of values (atomic or structured) + collection of operations on those values
e.g. an int
e.g. an array
abstraction = hiding the details of how a system is built in favour of focusing on the high-level behaviours (i.e., inputs and outputs) of the system
e.g. C abstracts away assembly/MIPS code
e.g. Python abstracts away pointer arithmetic and memory allocation
e.g. a car’s steering wheel abstracts away the moving parts within the car’s hood
abstract data type = a data type which focuses on its high level behaviour, without regard for how it’s implemented underneath
programming by contact
pre-conditions = what conditions hold at the start of the function call
post-conditions = what conditions will hold at the end of the function
developing an ADT
.h file.c filee.g. set ADTs