Greg Wilson is a software engineering educator and author who writes on teaching programming, software design, and evidence in software engineering.
HN commenters recommend his books, including Software Design by Example and The Architecture of Open Source Applications, as excellent references.
Greg Wilson has a couple of books on this:
- "How to Teach Programming (And Other Things)"[0]
- "Teaching Tech Together", newer edition of aforementioned book.[1]
These books delve into how to conduct lessons, what to concentrate on, what to optimize for, how to construct quizz questions with embedded diagnostic capability so you not only see who gets it wrong or right, but on which concept/part they get it wrong.
There is another book "How Learning Works" by Ambrose et al.[2]
[0]: https://third-bit.com/2017/05/31/how-to-teach-programming.html
[1]: http://teachtogether.tech/ [there are two versions, English and Spanish]
[2]: https://www.wiley.com/en-us/How+Learning+Works%3A+Seven+Research+Based+Principles+for+Smart+Teaching-p-9780470484104
Except that it hasn't been shown to work better. Quoting from http://third-bit.com/blog/archives/4529.html: "If you ask its advocates for evidence, they’ll tell you why it has to be true; if you press them, you’ll be given anecdotes, and if you press harder, people will be either puzzled or hostile."
Oh good, evidence against is just as preachy and unscientific as the evidence for.
http://evidencebasedse.com/?q=taxonomy/term/2
Research suggests that unit testing has a very strong correlation with correct software. Research suggests TDD has no correlation with correct software, except for the fact that TDDers tend to write 2x more tests than non TDDers.
This essay has been pretty popular over the last year, as one can see from https://hn.algolia.com/?q=%09The+tyranny+of+structureless#!/story/sort_by_date/prefix/0/The%20tyranny%20of%20structureless . It's definitely influenced my thinking on the topic.
I'll me a guess that the submitter saw it mentioned in http://third-bit.com/2015/01/05/cathedrals-bazaars-and-in-between.html , which was linked to from HN about 11 hours ago, at https://news.ycombinator.com/item?id=8839338 .
Software Design by Example sounds like what you want [0].
There's also NAND to Tetris [1], csprimer [2], and/or lists like these [3] or codecrafters [4].
[0] https://third-bit.com/sdxpy/
[1] https://www.amazon.com/Elements-Computing-Systems-second-Principles-dp-0262539802/dp/0262539802
[2] https://csprimer.com/courses/
[3] https://www.andreinc.net/2024/03/28/programming-projects-ideas
[4] https://app.codecrafters.io/catalog
As mentioned by others, the author Dr. Greg Wilson has written/compiled many books/tutorials which I can recommend. I would especially laud Software Design by Example [1][2], The Architecture of Open Source Applications [3] and Teaching Tech Together [4].
[1] https://third-bit.com/sdxpy/ (python version) [2] https://third-bit.com/sdxjs/ (js version) [3] https://aosabook.org/ [4] http://teachtogether.tech/
I build tools for teaching data science at DataCamp, so am really interested in this question! I think so, and suspect the ways in which a good language tutor assesses / recognizes where students can improve will have direct parallels for coding.
Greg Wilson (who founded Software Carpentry) has a great collection of thoughts on learning to program in general: http://third-bit.com/