3 ms·
I've not taught CS, however I used to teach math to adolescents. Some basics: scaffold concepts, spiral back to previous concepts, and allow exploration and sel
by sethammons 10y ago
I've not taught CS, however I used to teach math to adolescents. Some basics: scaffold concepts, spiral back to previous concepts, and allow exploration and self discovery. All quizzes and exams should have earlier content in them. I believe I heard that six repetitions over time were needed for most students. For distributed systems, don't just present the two generals problem. State the scenario, and give them 8 minutes to think through a solution in small groups. Maybe go as far as to have them illustrate the problem on poster paper with markers. Have a one or two summarize what they discussed to the class. Ask probing questions. Then give the reveal (a brief lecture on why it unsolvable) and show the results of the giants upon whose shoulders they should stand. Employ other active learning strategies. Google "active learning strategies." Yeah, lots of facts will be forgotten after the exam. However, the more they understand principles, the more they can recall and recreate long term.
Hopefully the above advice helps with the lecture portion. As for labs, my experience says that practical exercises are great and my experience says that lab exercises are too contrived to be even slightly useful. To explain: I took an online distributed systems course to balance out my self learning and work experience. Their code work / labs were terrible. All the scaffolding was in place and it boiled down to "translate these algorithms to scala." I gave me no insight or feeling or deeper understanding of best effort broadcast or anything else. Mostly, I wrestled with trying to grok scala. However, previously implementing toy (read mostly broken) versions of Paxos and Raft (which I had done prior to taking the class) gave me a solid understanding and appreciation for the nature of the problems they attempt to solve. Reading the papers and attempting to code up what was presented worked better for me.
Cheers and good luck.
- jventura 10y agoThanks for your comment, I am already searching for relevant information on active learning strategies. About your experience with the online course, I can understand the difficulty on trying to make a lab assignment for people without the necessary knowledge to complete the assignment. My current strategy is to provide some base code and then asking for the students to keep changing the code (giving enough hints) so that in the end they have a working solution. Edit: Found some interesting papers, for instance [0] and [1]. [0] http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.59.7176&rep=rep1&type=pdf http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.59.... [1] http://www.cs.duke.edu/forbes/papers/fie2002.pdf http://www.cs.duke.edu/forbes/papers/fie2002.pdf
- sethammons 10y agoThose two papers, particularly the first one, are crazy relevant; great finds. Don't worry about getting too deep in the woods. It can be overwhelming to try to incorporate all the lessons in those papers and other active learning strategies. The advice I was given was to pick one or two strategies and start incorporating them. Then expand your tool belt. Keep things you feel work, discard those that don't fit the culture of your class. I'd encourage using surveys periodically with your classes too to see what strategies they find rewarding and engaging. Cheers!
- al2o3cr 10y agoI've done some guest lecturing in more beginner-focused environments, but those papers seem to match with my experiences there. I'd reiterate a key point from them for emphasis - students shouldn't "change the code" until it works without understanding WHY the changes they make have an effect.