I'm learning network programming in C/C++ with using of multiplexing, multiprocessing or multithreading features available in Debian (and most Linux based OS).
A solution that solves a problem of finding path on a grid representing any kind of maps from small and virtual maps to more like real maps (see screenshots for examples).