Building a hobbyist oscilloscope
At it's heart, a (digital) oscilloscope is just an ADC, along with some memory to hold the samples. The samples are then read out of the memory and displayed.

The practical implementation issues make commercial oscilloscopes complicated. The input signal needs to be scaled appropriately for the range of the ADC, which means that you need to have attenuators and/or amplifiers that have very precise gain values that are very flat across a huge range of frequencies (DC to 10s or 100s of MHz at a minimum) in order to measure waveforms with minimal distortion.

Also, depending on the application, the sample rate of the ADC needs to be adjusted (very precisely) over a wide dynamic range &mdash; 1 ns/sample to 1 s/sample (9 orders of magnitude) would be typical.

Then there's the question of knowing when to start &mdash; or more importantly, stop &mdash; sampling; this is known as triggering. Different applications have different needs for triggering, and commercial 'scopes have a wide selection to accomodate them.