Re: [racket-users] You Are a Programmer Now HtDP2e
> On Aug 2, 2018, at 11:25 AM, Scott wrote: > > My message does not contain the word “recursion.” > No it doesn't. However, Structure and Interpretation of the Computer Science > Curriculum does, as it does your criticism of SICP's use of (generative) > recursion. Sure, but please don’t put words in my email mouth :-) And there are many other words in SiCP and HtDP that you could mention. ;; - - - I am sensitive about “recursion” because many people completely fail to understand the role of recursion in these books, especially in HtDP. The idea is important because it is the only way to describe arbitrarily large data and data descriptions have implications for code organization. Since arbitrarily large data is more interesting than #true and “hello world”, it shows up in every programming book. What HtDP/2e shows in Intermezzo 3-4 is how “recursion as induced by data descriptions” disappears under other constructs. The same is true about the word “functional”. Sure, I distilled the design recipe idea from the world of functional languages. But that’s only because the world of dysfunctional languages never produced any ideas concerning systematic design. What HtDP/1e showed was that the design recipe idea applies perfectly well to imperative and OO programming. — Matthias -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [racket-users] You Are a Programmer Now HtDP2e
> > My message does not contain the word “recursion.” No it doesn't. However, *Structure and Interpretation of the Computer Science Curriculum* does, as it does your criticism of SICP's use of (generative) recursion. On Thursday, August 2, 2018 at 10:16:26 AM UTC-4, Matthias Felleisen wrote: > > > > On Aug 2, 2018, at 9:27 AM, Scott > > wrote: > > > > Thank you. I am not technically sufficient to add much to your response. > Will the core curriculum become available online? > > > I am not sure what you mean by “online” here, but the course numbers are > spelled out in Northeastern’s online catalogue, and the essay (linked to my > last email) spells out the rationale. If you mean the materials, yes, we > work with on-line materials (see my home page for a starting point). > > > > Your criticism of SICP's use of recursion seems to extend to the method > for teaching recursion principles in The Little Schemer series, in that it > does just that - teaches principles of (a form of) recursion as an > intellectual exercise without translating it into actual program design > methods. > > > My message does not contain the word “recursion.” This would be the least > of my criticisms of SiCP. Please do read the article that I pointed you to, > I don’t want to type it into an email. (The Little Lisper contains the > seeds of HtDP, which is why I became a co-author, but it took another 10 > years for me to figure out how to turns this into a design recipe, i.e., a > matrix of process and data/problem complexity.) > > > > My own experience with The Little Schemer began to falter in Chapter 5. > I felt I understood how recursion worked and how to create simple recursive > functions and wondered if, by stalling in Chapter 5, I demonstrated a lack > of drive or intellectual ability necessary to learn how to program well. > After reading some of your articles I am discovering that perhaps neither > of my tentative conclusions were necessarily accurate. > > > TLL/TLS is definitely an exercise in “train yourself to think thoroughly” > and with a method that is good for some people and, well, not so good for > others. Just like any text book. I’d consider it “intellectual pleasure” > more than anything else. And intellectual pleasure isn’t for everyone. I > read Politics and Republic for pleasure and someone else may read romance > and crime stories. > > > > Your other criticisms mirror my (no doubt common) experiences: on one > hand there are the massive online courses and endless textbooks which tend > to amount to nothing more than intros to syntax how-tos and seem to be just > a form of data entry. (and now I think perhaps I understand why: syntax > without API is just keyboarding and hitting enter. But that is what these > courses are about so I completely get the point of the prologue!) Then on > the other hand are the curriculum which, like MIT, have me thinking that > programming well requires an engineering degree, at least, or is just a > subset of engineering. Such has been my experience. > > > Programming comes in many flavors, just like construction jobs: > > — build a shed in the backyard (you don’t need to be an engineer, though > you should know some basics; and most people buy pre-fabs that are planned > and made by people with tons of experience ~= degree) > — build a house (you can do so if you have build many of them) > — build a skyscraper (try to do so without an engineering degree) > — build an airport > . . . > > You may think of analogues such as throw-away script, “web site”, single > application, POS system, etc. > > Now here comes the kicker. Unlike a shed, a web site or a script can grow > into a valuable piece of software. And all of a sudden, this software > becomes not just valuable but also extremely expensive to maintain because > you never paid attention to its construction. It falls over every so often, > and you need to stabilize it. It has cracks in the foundation, and you need > to rip out the living room floor to pour new foundation pillars so it > doesn’t sink into the swamp. And so on. > > Depending on what you wish to accomplish, your milage of studying may vary > — Matthias > > > p.s. And then there is the pure joy of acquiring a skill properly .. just > to have fun. Guy Steele, for example, works on wood for his hobby. My uncle > was a wood carver, too, and I bet that Guy over the years has acquired the > same set of skills and better ones. See Little Lisper. > > > > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [racket-users] You Are a Programmer Now HtDP2e
> On Aug 2, 2018, at 9:27 AM, Scott wrote: > > Thank you. I am not technically sufficient to add much to your response. Will > the core curriculum become available online? I am not sure what you mean by “online” here, but the course numbers are spelled out in Northeastern’s online catalogue, and the essay (linked to my last email) spells out the rationale. If you mean the materials, yes, we work with on-line materials (see my home page for a starting point). > Your criticism of SICP's use of recursion seems to extend to the method for > teaching recursion principles in The Little Schemer series, in that it does > just that - teaches principles of (a form of) recursion as an intellectual > exercise without translating it into actual program design methods. My message does not contain the word “recursion.” This would be the least of my criticisms of SiCP. Please do read the article that I pointed you to, I don’t want to type it into an email. (The Little Lisper contains the seeds of HtDP, which is why I became a co-author, but it took another 10 years for me to figure out how to turns this into a design recipe, i.e., a matrix of process and data/problem complexity.) > My own experience with The Little Schemer began to falter in Chapter 5. I > felt I understood how recursion worked and how to create simple recursive > functions and wondered if, by stalling in Chapter 5, I demonstrated a lack of > drive or intellectual ability necessary to learn how to program well. After > reading some of your articles I am discovering that perhaps neither of my > tentative conclusions were necessarily accurate. TLL/TLS is definitely an exercise in “train yourself to think thoroughly” and with a method that is good for some people and, well, not so good for others. Just like any text book. I’d consider it “intellectual pleasure” more than anything else. And intellectual pleasure isn’t for everyone. I read Politics and Republic for pleasure and someone else may read romance and crime stories. > Your other criticisms mirror my (no doubt common) experiences: on one hand > there are the massive online courses and endless textbooks which tend to > amount to nothing more than intros to syntax how-tos and seem to be just a > form of data entry. (and now I think perhaps I understand why: syntax without > API is just keyboarding and hitting enter. But that is what these courses are > about so I completely get the point of the prologue!) Then on the other hand > are the curriculum which, like MIT, have me thinking that programming well > requires an engineering degree, at least, or is just a subset of engineering. > Such has been my experience. Programming comes in many flavors, just like construction jobs: — build a shed in the backyard (you don’t need to be an engineer, though you should know some basics; and most people buy pre-fabs that are planned and made by people with tons of experience ~= degree) — build a house (you can do so if you have build many of them) — build a skyscraper (try to do so without an engineering degree) — build an airport . . . You may think of analogues such as throw-away script, “web site”, single application, POS system, etc. Now here comes the kicker. Unlike a shed, a web site or a script can grow into a valuable piece of software. And all of a sudden, this software becomes not just valuable but also extremely expensive to maintain because you never paid attention to its construction. It falls over every so often, and you need to stabilize it. It has cracks in the foundation, and you need to rip out the living room floor to pour new foundation pillars so it doesn’t sink into the swamp. And so on. Depending on what you wish to accomplish, your milage of studying may vary — Matthias p.s. And then there is the pure joy of acquiring a skill properly .. just to have fun. Guy Steele, for example, works on wood for his hobby. My uncle was a wood carver, too, and I bet that Guy over the years has acquired the same set of skills and better ones. See Little Lisper. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [racket-users] You Are a Programmer Now HtDP2e
Thank you. I am not technically sufficient to add much to your response. Will the core curriculum become available online? Your criticism of SICP's use of recursion seems to extend to the method for teaching recursion principles in The Little Schemer series, in that it does just that - teaches principles of (a form of) recursion as an intellectual exercise without translating it into actual program design methods. My own experience with The Little Schemer began to falter in Chapter 5. I felt I understood how recursion worked and how to create simple recursive functions and wondered if, by stalling in Chapter 5, I demonstrated a lack of drive or intellectual ability necessary to learn how to program well. After reading some of your articles I am discovering that perhaps neither of my tentative conclusions were necessarily accurate. Your other criticisms mirror my (no doubt common) experiences: on one hand there are the massive online courses and endless textbooks which tend to amount to nothing more than intros to syntax how-tos and seem to be just a form of data entry. (and now I think perhaps I understand why: syntax without API is just keyboarding and hitting enter. But that is what these courses are about so I completely get the point of the prologue!) Then on the other hand are the curriculum which, like MIT, have me thinking that programming well requires an engineering degree, at least, or is just a subset of engineering. Such has been my experience. On Wednesday, August 1, 2018 at 2:52:55 PM UTC-4, Scott wrote: > > The end of the Prologue to HtDP2e ends with a section titled You Are a > Programmer Now. If you have read it you know what it contains (if you > haven't read it then you are not likely able to respond intelligently to > this question). > > My question is: in that section are the authors describing "programming by > poking"? > On Wednesday, August 1, 2018 at 5:54:14 PM UTC-4, Matthias Felleisen wrote: > > > The idea that we need to deal with software systems as if we were natural > scientists shows up time and again. Gerry is correct about this but this > does not mean we should not teach good attitudes about code and coding etc. > > ;; - - - > > As far as I am concerned, SiCP never served the purpose that Gerry > advertises in his quote. Let me start out by praising SiCP first: > > it is one of those introductory texts that does not belong to the > 99.99% of the syntax-focused pile of XXX. > > Having said that, I also don’t think that SiCP teaches (or 6.001 taught) > programming or sw dev. SiCP presents important ideas in computer science, > sketched out in Scheme, the way you sketch out your dream house to an > architect on a napkin. (Well perhaps more than a napkin.) As such, it was > doomed to fail as a “programming text”. > > HtDP explicitly teaches systematic program design. This means two things: > > — its goal is to teach systematic program design > — and it does so by explicitly spelling out how to go about > program design. > > All of this is spelled out in some detail in > https://www2.ccs.neu.edu/racket/pubs/#jfp2004-fffk > > ;; - - - > > One semester does not make good coders and does not generate good > attitudes about code. I have therefore created a core curriculum of five > courses at Northeastern that reinforce this lesson again and again. The > goal is to get students to see that, if code survives, the cost of code is > distributed over a long period of time. They will rotate into positions > where they take on someone else’s code — possibly their own from N months > or years ago — and that when they create code, they owe the future > developers “well designed code.” How to go from a blank page and a bunch of > APIs to well-designed code isn’t a solved problem, so creating this > curriculum was and remains research — it’s just that nobody recognizes that > this is a central open problem for CS. So I dress up my research results as > text books. > > The details of this curriculum development are spelled out in > http://felleisen.org/matthias/Thoughts/Developing_Developers.html > > From what I can tell, the curriculum is a success story — though possibly > I am a victim of confirmation bias here, like many scientists. So let me > say what I see: > > — our co-op department routinely reports that our students are > considered some of the best student-developers by (large) sw companies > (our co-op department isn’t all that good about tracking > our co-op students in small or midsize companies) > > — students routinely tell me that they get through co-op > interviews by falling back on the design recipe when they encounter hard > questions > > — they also tell me that they get credit when they work with the > design recipe during co-op (even if things don’t work out) > > — they report praise for developing good code. > >
Re: [racket-users] You Are a Programmer Now HtDP2e
The idea that we need to deal with software systems as if we were natural scientists shows up time and again. Gerry is correct about this but this does not mean we should not teach good attitudes about code and coding etc. ;; - - - As far as I am concerned, SiCP never served the purpose that Gerry advertises in his quote. Let me start out by praising SiCP first: it is one of those introductory texts that does not belong to the 99.99% of the syntax-focused pile of XXX. Having said that, I also don’t think that SiCP teaches (or 6.001 taught) programming or sw dev. SiCP presents important ideas in computer science, sketched out in Scheme, the way you sketch out your dream house to an architect on a napkin. (Well perhaps more than a napkin.) As such, it was doomed to fail as a “programming text”. HtDP explicitly teaches systematic program design. This means two things: — its goal is to teach systematic program design — and it does so by explicitly spelling out how to go about program design. All of this is spelled out in some detail in https://www2.ccs.neu.edu/racket/pubs/#jfp2004-fffk ;; - - - One semester does not make good coders and does not generate good attitudes about code. I have therefore created a core curriculum of five courses at Northeastern that reinforce this lesson again and again. The goal is to get students to see that, if code survives, the cost of code is distributed over a long period of time. They will rotate into positions where they take on someone else’s code — possibly their own from N months or years ago — and that when they create code, they owe the future developers “well designed code.” How to go from a blank page and a bunch of APIs to well-designed code isn’t a solved problem, so creating this curriculum was and remains research — it’s just that nobody recognizes that this is a central open problem for CS. So I dress up my research results as text books. The details of this curriculum development are spelled out in http://felleisen.org/matthias/Thoughts/Developing_Developers.html >From what I can tell, the curriculum is a success story — though possibly I am >a victim of confirmation bias here, like many scientists. So let me say what I >see: — our co-op department routinely reports that our students are considered some of the best student-developers by (large) sw companies (our co-op department isn’t all that good about tracking our co-op students in small or midsize companies) — students routinely tell me that they get through co-op interviews by falling back on the design recipe when they encounter hard questions — they also tell me that they get credit when they work with the design recipe during co-op (even if things don’t work out) — they report praise for developing good code. For all I know though, all those who don’t report to me (or aren’t covered by our co-op reports) produce the same kind of bad code that all other devs develop :-) ;; - - - Here is what’s missing. In a world where APIs are like hardware (proprietary, opaque) we need to teach students how to study such APIs and how to extract useful knowledge from these APIs. Again, most schools who switch to this new MIT approach don’t teach this explicitly. They do not provide students with the intellectual tools that help them discover the meaning of an API. I will also admit that I am _not_ tackling this question. As far as I know Shriram Krishnamurthi is the only one who is aware of and working on this question for API = PL. (See his PLAI v2.0 course at Brown.) ;; - - - So in the meantime, I am happy to teach our students systematic design and instill a message of “code quality matters”. I think it helps them get started in many cases. When someone figures out how to deliver the tools of “programming/sw dev is partly a natural science” to students, then I* will be able to combine “systematic design” with “API modeling” approaches and we will produce the best devs ever. Your milage will vary, but I won’t give up on teaching good programming well — Matthias -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [racket-users] You Are a Programmer Now HtDP2e
(Actually, I bought the book and was just working through the Prologue today. And didn't turn the page, it appears. ) Thank you for your response. More specifically, what I was referring to was a response that has gotten a fair bit of circulation given by Gerry Sussman when asked why SICP was no longer taught by him at MIT. You can read more about this here: http://lambda-the-ultimate.org/node/5335 Personally, I have tried to learn programming (self-teaching) via how, as you state, 99.9% of texts teach it - syntax and hacking first, and I have just about given up. I find it pure torture (and I found working through the Prologue torture, but was expecting that since I believe that was your point). Hence, I purchased your book (2e) and also SICP. However, since finding that quote by Sussman I feel more lost than ever. He seems to be stating that what made SICP so relevant 20 to 30 years ago has gone. So it is great I have an author of HtDP in this thread! I understand programming by poking as the process of researching APIs and hacking together libraries until something works, similar in essence I think to the Prologue of HtDP. And perhaps this hacking and sewing together and ensuing code bloat is aided by ever expanding hardware capacities in storage and speed, I don't know. So, Matthias, if you are still there, how do you understand Sussman's reasoning for quitting SICP (other than he was bored with it)? Is he right? How does HtDP stand up in the face of Sussman's perspective? Does one need the lessons of HtDP if all one is doing is stitching together libraries and APIs? On Wednesday, August 1, 2018 at 3:43:59 PM UTC-4, Matthias Felleisen wrote: > > > > On Aug 1, 2018, at 2:52 PM, Scott > > wrote: > > > > The end of the Prologue to HtDP2e ends with a section titled You Are a > Programmer Now. If you have read it you know what it contains (if you > haven't read it then you are not likely able to respond intelligently to > this question). > > > This is incorrect. The Prologue ends with “Not!”. See > > https://htdp.org/2018-01-06/Book/part_prologue.html > > > > My question is: in that section are the authors describing "programming > by poking”? > > > Yes. The Prologue describes how 99.99% of the text books teach programming > to contrast it with “good programming” as taught by HtDP. > > — Matthias > > > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.