4 ms·
Everyone on here is very excited about HTDP. You are mostly very smart people, and not representative of the typical CS student starting off. Many of you are dr
by acbart 8y ago
Everyone on here is very excited about HTDP. You are mostly very smart people, and not representative of the typical CS student starting off. Many of you are driven and have rich STEM backgrounds that you draw upon. Therefore, I want to point out that there is no substantial evidence to prove most of the claims of "success" that the HTDP community claims, with regards to novice learners. There are certainly people who HTDP works amazingly for - I have met many brilliant folks who it resonates with. But I have met far more students who it does not work well for (I would describe them as having almost low-key PTSD from their CS1). The curriculum is too artificial and disjoint from the rest of their CS degree. I have met instructors who make it work fabulously, and their students apparently really buy into it. But overall, the claims that HTDP leads to better students is not proven by any literature I can find.
The closest thing I can find for good evidence is Fisler '14 [1], which did indeed suggest that HTDP teaches Functional Decomposition in such a way that CS1 students are better able to tackle short-but-complex problems by the end of their CS1. I find this work compelling, and I look forward to applying the ideas inherent to my own courses. However, in the decade-plus that HTDP has been around, I have not been able to find any long term studies that back up the slew of claims made about how we "should" teach CS1. Language and paradigm arguments in general have not really born out any evidence[2].
I'm not saying HTDP is bad or Python is good or C++ is ideal. I'm saying we don't know much about any of this stuff. Relying on theoretical arguments is dangerous when it comes to pedagogy. For every positive experience you can share about HTDP, I can share a negative experience. It's great if you found a curriculum that works for you. But be very, very careful about whether you believe that curriculum should work for everyone.
[1] https://dl.acm.org/citation.cfm?id=2632346 https://dl.acm.org/citation.cfm?id=2632346
[2] https://www.researchgate.net/publication/329544316_Introductory_Programming_A_Systematic_Literature_Review https://www.researchgate.net/publication/329544316_Introduct...
- mpfundstein 8y agoSo what is your point precisely?
- smallnamespace 8y ago> you believe that curriculum should work for everyone. Maybe it would be possible to determine which teaching approach works best for a student and individualize/personalize, rather than having a one-size-fits-all curriculum for everyone?
- CalChris 8y agoThe curriculum is too artificial and disjoint from the rest of their CS degree. That was my takeaway from CS61A at Berkeley. I thought that Scheme was incredibly elegant and I was disappointed that we never used it again. The profs sure were pleased with themselves at the end of CS61A and I imagined later that they thought their preferred outcome would have been that we pursued a PhD using Jikes. SICP was the text which everyone bought and no one (that I knew) read and I tried. We had no assigned readings; it simply meant to be worshiped. It comes up on HN but never in conversation. No one quotes SICP. I'll look at HTDP.
- calinet6 8y agoAs I remember it, the book SICP itself wasn't really the core of CS61A... the lectures and slides were, and they drew off the concepts in SICP. No one read the book, but we learned from the (fairly good) lectures and explanations of the concepts, and especially the projects of course. Those concepts were and remain a foundation for how I think about programming—at the level of elegant structure and short modular thinking. Software engineering and architecture is something different, and has its own class (CS169) which was far more valuable and important for those skills at that higher level. I dunno. It was a good foundation. I've looked through SICP and I still recognize the concepts, the lectures matched it fairly well. But you're right—no one read the book.
- endgame 8y agoI quote "programs must be written for people to read, and only incidentally for machines to execute" fairly often to students, which is from the 1st ed preface.
- ng12 8y agoI will say that the people who develop HTDP are the some of the people who spend the most time writing about pedagogy in computing education. Felleisen in particularly has written a lot on the subject: http://www.ccs.neu.edu/home/matthias/Thoughts/Developing_Developers.html http://www.ccs.neu.edu/home/matthias/Thoughts/Developing_Dev... > The curriculum is too artificial and disjoint from the rest of their CS degree I would then argue the problem is the rest of the CS degree. Whether HTDP "works" or not, the principles espoused in the course are the same ones you'll encounter over and over again throughout your professional career. As far as I can tell, the only difference is the HTDP (and SICP) folks are introduced to them from day one while others learn through years of experience. And this is the problem about the CS101 course "working for everyone": does it work because you're only delaying the introduction to the difficult concepts endemic to software development? If a student can pass CS101 just by virtue of being able to string together a compilable C++ program, is that really for the best? Anecdotally, I got a 2 on the CS AP test, which was enough to make me second-guess my major. Luckily, I went to an HTDP school where the professor assured me not to worry about it -- and sure enough, I aced the CS101 course and went on to have a successful career writing code.
- acbart 8y ago> I will say that the people who develop HTDP are the some of the people who spend the most time writing about pedagogy in computing education. I don't think that's really true. Yes, the HTDP community, and Felleisen in particular, write a lot about Pedagogy. But Mark and Mike have them beat handily. Thinking about the CS Ed blogs I read[1], I don't think any HTDP folks have that much compared to others. [1] https://acbart.github.io/2018/06/25/cs-ed-blogs/ https://acbart.github.io/2018/06/25/cs-ed-blogs/