What are the core concepts of threading that can be introduced to CS undergraduates in 15 mins

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?

For more complete information about compiler optimizations, see our Optimization Notice.


Well if as CS undergraduates they don't know the basic concepts of scheduling and code execution on a CPU then the education system is flawed and you cannot correct that by giving tech-talk sessions.

Igor Levicki

If you find my post helpfull, please rate it and/or select it as a best answer where applies. Thank you.

Igor Levicki > The problem, I suppose, is that these talks are intended to all CS undergrads and not only to those who have already taken the OS class (like I'm doing this semester and it's my last year!). This is a very valid concern as this subject will interest mostly anybody in the department, but maybe these talks should only be given in the context of one of the session within an OS course.

I remember a video from Dave Probert, architect on the windows kernel, and he talked about the talks he did during some OS classes around the world. That way the student knew what he was talking about so he only had to emphasis on the application of the concepts. I think you should be doing the same as it appears it is mostly notions related to that course (and video game, but that's more of the application of the basic theory given in that course and applications should interest all students!)

Google went to talk about mapreduce the other day @ my university and if you didn't knew what functionnal programming (and other things such as workloads) was about most undergrads wouldn't have understood what was really going on under the hood but most enjoyed it a lot because they didn't focus on such detailed but really on what that enabled them to do. (and interested on some of the topics discussed pretty much as your talk must have interested some in taking the OS class sooner)

I know this doesn't answer your question directly but I hope it helps.