Having just presented a tech talk to a local university computer science department, I felt it necessary before detailing how Intel had developed a scalable threaded game engine (the topic of the talk), to level-set to the mainly undergraduate audience basic threading concepts.
These concepts included; race conditions, task and data decomposition together with master/worker and producer/consumer threading models. While I believe that the approach I gave was somewhat simplistic (based on my experience with the technology), feedback from faculty indicated that a lot more details could have be provided.. Unfortunately the focus of my 50 minute tech talk was not on basic threading concepts.
Suggested areas for deeper review included a definition of a thread of execution, a CPU core and now threads get executed on cores.
So how does one deliver an engaging presentation on the practical use of thread scaling that also includes the basic concepts of threading to CS undergraduates, with little or no knowledge of threads?