4 ms·
Very interesting as a pedagogical technique. This was never included in the curricula in any of the programs I've taken, except in those that are explicitly des
by ibejoeb 8y ago
Very interesting as a pedagogical technique. This was never included in the curricula in any of the programs I've taken, except in those that are explicitly designed as adversarial, but those were more from the security perspective. I love the concept of teaching "tinkering" and black-box investigation as part of fundamentals. Is this is an exclusively Brown thing?
- justinpombrio 8y agoMostly Brown, but they've also been used at Worcester Polytechnic Institute and University College London.
- skrishnamurthi 8y agoAlso at the University of Philippines.
- wisam 8y agoAny chance you'd record the lectures like the 2012 iteration? Seems that the discussions are a big part of this pedagogical approach; and those are better captured through videos than notes/books. Also, the latest version of PaPL book doesn't seem to incorporate the mystery languages. Is there a plan to include them in the book?
- skrishnamurthi 8y agoTwo separate things here. I would love to record and publish the videos. However, the moment I do, I have essentially published the solutions to the homeworks. It's very hard to reuse them again. But mystery languages are really difficult to generate (especially with the additional constraints that we explain in the SNAPL paper), as there are only so many meaningful variations to go around. So, no. You are very right that PAPL doesn't incorporate them at all. Part of the issue is the above. But part of it is also, now that I am getting really comfortable with this being a notable portion of my PL course, what becomes the nature of a "textbook" for such a course? I've struggled with this question before: I taught a (I think) really good software engineering course, but couldn't really can it into a book. I feel the same way about this now. But it means PAPL may end up being less a (half) PL textbook and more some other thing that is still being formed in my mind…
- kevmo314 8y agoA bunch of schools include CTF-type reverse engineering challenges as part of a course. IMO those tend to be a little more addicting as well, as there's the instant feedback that you have the correct answer.
- skrishnamurthi 8y agoIf you know of other places that do it specifically for programming languages, using this kind of approach, let us know so we can study and attribute properly. Thanks. (In the 2012 PL MOOC that Joe Politz and I ran, we had CTF-style exercises, which are still on the Web.) Note: CTF is a very different kind of thing than what we are doing here. In CTF, usually, there is some clear sense of a goal and you are (as you note) given a measure of how close you are, or at least told when you've Ced The F. In mystery languages, there is no well-defined end and there is no measure. Also, your job is not to break one thing, but rather to break the difference between multiple things. That kind of «differential reasoning» is its own separate sort of activity. As an aside, real life often does not give you a measure or an indication of when you're done. Sometimes, maybe, you've set yourself your own goal (e.g., to steal a particular resource), and then you may be able to tell. But otherwise, especially when it comes to learning new things (like programming languages), I'd say this is a more authentic learning activity. Indeed, it grew out in part from my trying to reflect on how I myself approached a new language. So, at least, it's more authentic to me. (-:
- kevmo314 8y ago> Also, your job is not to break one thing, but rather to break the difference between multiple things. That kind of «differential reasoning» is its own separate sort of activity. This seems like splitting hairs. You could wrap this differential reasoning assignment in a function that returns true iff the outputs are different and achieve the same CTF-style behavior. The only difference here is that students get one assignment at a time instead.
- skrishnamurthi 8y agoReductionist theories don't work out that way in practice, but sure: Build it, teach it, and then I'd be happy to talk about your experience and how the difference is only "splitting hairs".