Difference between multitasking, multithreading and multiprogramming
The Wikipedia article Computer multitasking covers this well. In summary:


Multitasking: there is more than one process and the operating system somehow decides which to run next.
Multithreading: threads are essentially subprocesses, which share memory (separate processes cannot normally access each other's memory) but which are independently scheduled.
Multiprogramming: a form of multitasking in which a process keeps running until it tries to access an I/O device, at which point another process is chosen to run so the CPU doesn't idle waiting for a punched card reader or something.