
[1] https://third-bit.com/sdxpy/ (python version) [2] https://third-bit.com/sdxjs/ (js version) [3] https://aosabook.org/ [4] http://teachtogether.tech/
https://link.springer.com/article/10.1007/s10664-016-9464-2 — scientists followed a team of developers for three years and recorded all of their sprint retrospectives and people kept forgetting what they already learned.
https://jlubin.net/assets/oopsla21.pdf — researchers compiled 23 hours of Zoom sessions and 15 hours of Twitch programming livestreams to study how people write code in static FP languages.
In addition to that, there's a lot of good work on how we teach programming. "Commonsense Computing" [1] found that students understand concurrency a lot faster when presented as a "human" problem, such as selling tickets in a concert. I'd recommend reading Teaching Tech Together (http://teachtogether.tech), which references a lot of empirical papers on teaching programming.
[1]: https://cseweb.ucsd.edu/classes/fa08/cse599/Papers/ICERConcu...
It depends on what you're referring to by "research area". My focus is specific to novel CS exercises like typing exercises, Parsons Problems, coding problems, etc. In that regard I really like Teaching Tech Together [1] as a broad, here's a blanket review of CS education and its exercises. If you mean more generally to just CS Education, then Teaching Tech is still starting point I think, as it provides a nice literature review of the domain as well.
[1] http://teachtogether.tech/
> What would you recommend to a complete amateur orienting themselves?
It'll depend (again) on what you mean here. If you mean learning about CS Education research, then the link above will be great. Then its about going down rabbit holes from the citations to read in more detail about those findings.
If you mean simply learning CS, the biggest recommendation I can make is carve out 1-4 hours a week (depending on your schedule) and commit to learning to code via MOOCs, tutorials, videos etc. Find a CS1 syllabus from a university that has a schedule on it and follow that. A lot of learning can be traced back to "time on task". Ignoring the recent HN post about how years of experience doesn't equal most skilled coders, that article is looking at what research calls "experts" vs. "novices" (beginners). We know spaced repetition works, we know cramming (trying to learn it all immediately) doesn't. Following the syllabus' schedule will space out your learning, force you to recall the information, and produce better learning in the long run.
The idea is to make it a part of your weekly "routine" to the point where if you DON'T do it, you feel weird. For example, I've trained martial arts for 15+ years. Somewhere in that time, I'm so used to going to train that when I take nights off, its weird because I'm just USED to training. Even my body wakes up cause its used to needing adrenaline. That needs to be a part of any learning process.
- "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.ht...
[1]: http://teachtogether.tech/ [there are two versions, English and Spanish]
[2]: https://www.wiley.com/en-us/How+Learning+Works%3A+Seven+Rese...
Commoncog has a nice general overview [2].
[1]: http://teachtogether.tech/en/ [2]: https://commoncog.com/blog/teaching-tech-together/
[0]: http://third-bit.com/2017/05/31/how-to-teach-programming.htm...