Answer:
By definition, multiprocessing refers to the processing of multiple processes at the same time by multiple CPUs.
By definition, multiprogramming keeps programs in main memory at the same time and execute them concurrently utilizing a single CPU doing a context switch.
The first difference is that multiprocessing uses multiple CPUs and multiprogramming to utilize context switch to do concurrency in one CPU. Another difference is that multiprocessing is more expensive but more efficient than multiprogramming due that it allows parallel processing.