dear lisa,
great to see some are working on the education part of the equation. I'm giving up some courses at university, and here is the feedback I think can be useful for you. It might not, in which case, please accept my apologies for the noise.
In any case (graduate/undergraduate), going through everything, especially the infrastructure part is *hard*. For undergrad especially, you might want to skip the TURN, STUN, ICE practicalities. REST API to TURN, TURN TCP, ICE TCP, web socket TURN and all other cutting edge, being developed might be better left aside even if used in chrome / apprtc.
Be explicit about what is standard and what is not (signaling), or students end up confused about what can be modified and what can not. We are also being very explicit about what would be missing at the end of the course (authentication, session, TURN, state machine, unroll of failure, ….) for a "product".
You might want to stay in browser-land and only touch W3C's webRTC API. That keeps native apps and desktop app out of the equation, but it makes your life simpler. Addressing native apps would require going into the internals of webrtc and touching at least the streams, videoCapturer, videoRenderer, quite an additional load for students (unless you go for a two semester course).
For an advance course, we touch on the underlying implementation, and you start digging into webrtc and either libjingle or a cisco sip stack depending on you using chrome or firefox source. We found it interesting (on an educational point of view) for end of master students to illustrate not only the webrtc implementation but also the fact that interoperable API could be implemented quite differently under the hood.
Eventually, the example course set up by google's sam duton is a great start:
HTH,
alex.