Learning multi-threaded programming