This chapter extends the coverage of structured programming to include abstract data types (ADT). It begins by giving the definition of an abstract data type and giving a small example of an ADT that could be used to read, process, and write Netpbm images. The next section introduces an ADT written in C to perform word frequency counts, and shows how performance can be greatly improved by using better algorithms and/or by writing some functions in assembly language. It also shows how a binary tree structure created by C code can be traversed in assembly language. The chapter ends with a ethics module about the Therac-25 cancer treatment device.