How to Design Programs aka HTDP: https://htdp.org/<p>It is used by many schools like NorthEastern, Brown, UBC, etc. as an introduction to programming and computer science. It uses a set of student languages of increasing difficulty to teach concepts of programming and computer science. But it mainly uses functional programming and doesn't discuss imperative style programming. Although in the first edition it discusses some mutation and state topics, but those have been dropped in the second edition.<p>The thing is the universities which are deemed top in CS goes a different route while teaching introductory CS. Like MIT teaches a course in Python. So does Cornell. CMU has a later course on functional programming in SML but not as an introductory course (for that it uses Python/C0). Berkeley uses Python. Stanford also now used Python, C++ for its intro courses.<p>Now, I don't have anything against the popular languages. They are popular for some reason and one of those reasons is that they are used widely. Like Python for Data Science and Machine Learning research in academia as well as industry. Whereas the languages of HTDP are not.<p>As much as we like functional programming, imperative programming is still here to stay and when we are out in the wild doing research or industry jobs we have to code and maintain in imperative languages even if we don't like.<p>There have been quite a few studies about how HTDP does a good job in teaching principles. How do the students whose first intro to programming and CS was HTDP fare in the wild when they have to pick up languages that are mixed paradigm like Python, C++, etc for a course that needs it.<p>E.g: In deep learning research if you use a library like Pytorch or tensorflow you are bound to use OOP code to design networks and use for loop constructs to train them.<p>How does the knowledge transfer coming from HTDP background in the real setting? E.g: Does using mutation, looping constructs become hard or easier to model inside your mind?<p>I am sure there are quite a few students from either camps here on HN. Would like to hear about your anecdotes and experiences, even if you are self taught.