If you like the approach and want to learn more, like, for instance, how to extend it to OO design, I list below links to several courses (most, except for the last one, offer enough material to complete them on your own, but I couldn't find any videos) at the university where HtDP's main author, Matthias Felleisen, is tenured (North Eastern). The courses are listed in the order in which they should be taken, and the rationale is explained by the professor in the paper "Developing Developers" [3]:
* CS 2500 - Fundamentals I [https://course.ccs.neu.edu/cs2500/]
* CS 2510 - Fundamentals II - Introduction to Class-based Program Design [https://course.ccs.neu.edu/cs2510/index.html]
* CS 2800 - Logic and Computation [https://course.ccs.neu.edu/cs2800/index.html]
* CS 3500 - Object Oriented Design - Spring 2018 (scaling up the 3 previous courses) [https://course.ccs.neu.edu/cs3500/]
* CS 4500 - Software Development [http://www.ccs.neu.edu/home/matthias/4500-f18/index.html]
[1] https://www.edx.org/course/how-code-simple-data-ubcx-htc1x
[2] https://www.edx.org/course/how-code-complex-data-ubcx-htc2x
[3] http://felleisen.org/matthias/Thoughts/Developing_Developers...