I think implementing a dithering algorithm is one of the most satisfying projects, because it is fun, small(ish) and you know when you are done.
Of course, unless you are trying to implement something completely insane like Surface-Stable Fractal Dithering https://www.youtube.com/watch?v=HPqGaIMVuLs