Please noob, STOP IT. I've explained dozens of times now the reasons you will not see most program loads scale beyond more then a handful of cores, the simplest being, that due to the way the hardware, OS, API's, and DirectX work, that its impossible to end up with more then 2-3 threads that do the overwhelming majority of the work. You are going to have your main control thread and rendering thread as the big two. Everything else (audio, AI, UI, and most Physics implementations) are non-factors computationally; they take so few resources you can generally assume they are not impacting the results any.
Secondly, as I've pointed out several times already: If no CPU core is loaded to 100%, guess what? Adding more cores isnt' going to make the program in question run any faster; you aren't CPU bottlenecked. Thats how the i3 still competes: Its fast enough, even with two cores, for 90% of all games, to get all is work done.
Thirdly, you do not "teach" multi-core programming; core loading is left up to the OS scheduler, and its under VERY carefully controlled circumstances where you can tell the OS that you know more about its internals then the people who designed it. Most devs just leave the default OS mask (all cores enabled) and let the OS schedule away. Only in the case where extensive testing has shown two threads to be both high workload and totally parallel should efforts be taken to ensure they always operate on separate cores (and that is not as easy as you think; heaven forbid your AV decides that exact moment to go off, just as you locked one of the two threads to the same core the AV is using.)
Fourthly, due to various bottlenecks on the OS side of the house, its a well known fact that overthreading, even for reasonably parallel applications, will eventually start to reduce performance. So doing more threading, without proper benchmarking and testing, and validating an actual benefit, is a waste of time, resources, money, and program stability (in which case, you'll complain about how lazy devs were to release a game in a non-working state).
Now, if you have some magical framework that gets around these "minor" problems, feel free to post them. I for one, as a software developer, am REALLY starting to get annoyed by people who have probably never written a SLOC for an actual program in their life telling me that years of experience working with the internals of Windows is (among other OS's) is all incorrect.