An ADT (abstract data type) is the name given to a form of data structure which can be implemented in different ways in different languages to achieve the same effect.

The best example would be the linked list, which in C in its most basic form would look something like

struct linked_list_node
{
    void *node_data;
    linked_list_node *next_node_in_list;
};
But it doesn't necessarily have to look like this, and you don't necessarily have to do it in C, or even in a language with real "pointers", for it to still be a linked list; it's an ADT, meaning it isn't an implementation, but an idea. Abstractly, the above would simply be "some sort of structure consisting of a series of nodes where each node contains some kind of information, and the location where the next node in the list can be found".

Advanced CS seems to consist mostly of learning new ADTs and new ways to use them. The most famous ADTs besides the linked list would be the doubly linked list, the queue, the stack, and probably most importantly the tree.