“Abstract Data Types are a fundamental component of problem solving in computer science – they allow you to think in terms of how data is organized, and what operations can be performed on that data – so you can determine what is the optimal way to store and manage the information for any specific problem you need to solve - without having to worry about implementation details.”

^^From Paco’s notes^^

My TD;DR version:

  • An ADT specifies an object’s operations and methods of organizing its data.
    • They are written in English or pseudo code
  • It’s stress-free as there’s no implementation to remember and is generic to any language.
  • Because there’s no one implementation, there is abstraction so you can choose the best way to implement the data type for your specific problem.

This bit of semantics is important because, no matter what implementation or language you are using, the base behavior should be the same.

Some examples of ADTs

  • List ADTs
  • Queue ADT’s
    • Enqueuing and Dequeuing