My teaching tends to be mainly lecture, 'lab' assignments and tests. Was talking with my supervisor and we agreed that many of the techniques apparently used in schooling the past decade cause students to expect 'entertaining' experiences when learning. This does not prepare them for the heads down situation of a workplace, where work tasks are not designed to be entertaining or engaging and require a lot of self-effort.I sometimes show a video or web page of a well-known expert or group to illustrate what is out there and how to find it, but not much beyond that. What sorts of 'modern' teaching tools have you found to be especially helpful for CS education while still allowing students to have a realistic expectation of self-learning and the workplace?
Which recent teaching innovations are most helpful in teaching CS?
lesson ideas;engagement;lecture tools;vocational training
I'm going to be honest. There are two main things I see wrong about the idea behind your post, and the similar thoughts most teachers have:The idea that technology or new techniques will magically improve learning.The idea that good teaching is a replacement for student motivation.A video that I think really helps drive home the first point (and suggest a new, better method for the gathering of information to students which I think is absolutely awesome) is Digital Aristotle by cgpgrey (watch it here).The main point(s) as I see it are as follows:We've gone from stone tablets to notebooks to tablets (iPads/etc) again, and student learning hasn't improved (dramatically or in any statistically significant sense)We've gone from drawings in dust to chalkboards to whiteboards to smartboards, and student learning hasn't improved (dramatically, anyway)People have suggested education revolution after revolution and it's failed (movies, radio, TV)But then...the internet, which is different - cheaper, more content, etc. People are learning more than ever from YouTube and MIT OCW and Khan Academy and sites like that. The best we can do is provide a way to gather information for students.In other words - create a digital aristotle, which gathers material and learns what helps the student the most. I think of this as a sort of merge between YouTube's content and Khan Academy's testing system, with a little machine learning between.So the key here is this is about the gathering of information to the student and letting them know if they understand a topic. But here's the thing. It does nothing if the student isn't motivated.That's where teachers are supposed to come in - to inspire a student, to force them with grades and deadlines to get work done. And that works for some people, but not all. And this is where I come to point two. Please, try to inspire your students. Please, try to act the Digital Aristotle and gather information to them, and test them to show them that they do or don't understand.But all of that will mean nothing if the student isn't motivated. If your student is motivated, they'll figure it out. They'll get what they want to get done, done, and you don't need to worry about them in the workplace. As the old saying goes, you can lead a horse to water, but you can't make it drink. Your job is to lead to the water, make the water look good, and make it cold, clear, and good to drink. But from there, it's up to the horse.So, to closer approach your question now that that's out of the way. What sorts of 'modern' teaching tools have you found to be especially helpful for CS education while still allowing students to have a realistic expectation of self-learning and the workplace?The things I remember best have been things I have taught myself (well, aside from the quadratic formula. Picture a teacher singing it to the whole class to the tune of Pop Goes the Weasel - there's no forgetting that). For example - arc length and the conversion between radians and degrees. I figured out how to 'derive' the formula for arc length, and then from there it's actually rather simple to derive that $2\pi \text{ rad} = 360^{\circ}$. I will never forget either formula. I have forgotten what I learned in fifth grade science (something about mixtures, maybe? and a chocolate milk experiment?) but I won't forget how to multiply matrices, because I was teaching myself linear algebra and I did many problems at a bench at a climbing gym near me before climbing team. And I worked at it. That's not to say all my self-learning has been, like, etching out derivations in stone tablets - I watch videos on YouTube as much as the next person. The point is it's my choice to do so, and I'm doing the problems of my own accord. I'm working at it, because I want to learn it. It's the difference between being spoon-fed and cooking one's own meal.Research is actually in favor of this - it's not just me. The more struggle you put toward learning something, the harder it sticks in your mind. It's why handwriting notes can be better - it takes longer to write out the idea. It's why passively listening to a teacher isn't as good as doing an experiment, writing a poem, teaching someone else - actively doing something to reinforce it.Self-learning isn't just how the workplace and out-of-school works - it's how people best learn. The reason it doesn't often work is lack of motivation, deadlines, and/or structure. So perhaps shift your class away from lecturing, and towards discovering. Provide materials, and let them go. Of course, you must figure out a way to provide structure to the class. But really, if you teach students how to best self-teach, take notes, and learn - that will help them much more than giving the most interesting lecture ever.Realistic expectations of self-learning? Definitely. Modern? Well...kind of. Self-learning is easier than ever with access to the internet. Again, see the discussion of a digital aristotle above. This also starts to fit in with Brian Tompsett - 's answer. Using your skills, perhaps you can combine already existing programs like Khan Academy, YouTube, Wikipedia, Google Classroom, arXiv, and others, to make the ideal experience for your students. I've actually myself been thinking about trying to create a sort of basic digital aristotle.