"DOM" stands for Document Object Model.
Document = A web page (Either viewed through the broweser, or the source code)
Object = Any pieces of a HTML (titles, paragraphs, headings, lists, etc...)
Model = The relationship that different pieces of HTML have to each other, represented in a tree hierarchy.
For example, a JS program can traverce the DOM to get the text of the title, to get the second paragraph, even to get the third link in the menu and set it's CSS to display:none
By traversing the DOM, a JS program could change the background color of all paragraphs with a class of "important", or change a link's behavior so that it performs a JS function when clicked.
The Document Object Model is the means by which a JacaScript program can interact with HTML on a webpage. The DOM represents HTML elements in terms of "nodes" on a tree hierarchy structure. Every html page is made of these nodes. Look at the HTML code on the left, and compare it to the simple tree structure on the right.
In this simplistic example, we can see a tree with one node per html element. But an html file is more than just elements! There are attributes, text, comments etc. There is a lot of text in this example that isn't being represented on the DOM tree. Also, there are typically one or more attribures as part of an HTML element, as well as comments.
There are 12 different types of nodes in total:
1 element nodes,
2 attribute nodes,
3 text nodes
4 CDATA (text that will NOT be parsed by a parser) nodes
5 entity refrence nodes,
6 entity nodes,
7 processing instruction nodes,
8 comment nodes,
9 document nodes,
10 documentType nodes,
11 documentFragment nodes,
12 notation nodes.
This has been only a general overview of the DOM. For more in depth knowledge about the DOM, check out this collection of articles by w3schools