Live data from Hacker News

If not SICP, then what? Maybe HTDP?

stevenrosenberg.net

131–140 of 227 posts

Re: If not SICP, then what? Maybe HTDP?

#131
During my time as a student I felt that the computer science department should have been split into two disticnt programs. The first program should have existed in the math department dealing with the theory and mathematics of computation. The other should have been in the engineering school and focused more on actual computers. Hardware, software, operating systems, working in a team, designing large systems, etc. I think I would have gotten much more out of that. Instead it seems many universities created “CS lite” programs in their business schools.

Re: If not SICP, then what? Maybe HTDP?

#132

Earlier quoted context omitted.

Honestly, there's just a tiny bit too much of real number knowledge required in SICP. I wasn't good enough to really derive newtonian method on my own. For someone looking to develop applications I believe it's completely off the map. HtDP requires no arithmetic from what I recall. Which makes it more focused. Now SICP was for EE doing software. I suggest to everyone to learn EE, even partially, it's surprisingly use…

> I wasn't good enough to really derive newtonian method on my own. There is an old SMBC comic highlighting this general issue in STEM where for some mysterious reason, mathematical theories that took at least a few scientific generations to figure out, with lots of bitter fighting among the giants of science about which conclusion we should accept as correct, are now being taught as if they are trivial to reproduce…

I got the same feeling when taking timed tests in some of the more proof heavy CS classes.

In a lot of ways it felt like solving crossword puzzles for a grade with a timer ticking down. Frequently I'd spend the most of the test with no idea what to do, and then about 20 minutes before time was up, I'd have an insight and I'd spend the last 15 minutes furiously racing to write it all down.

This worked out well and I ended up with a 4.0 program GPA, but I was a wreck every test day--I was always convinced that this was the day I'd fail to have that last minute epiphany.

I was always looking for a more systematic approach, but I never found one. In the end I still don't know if the problem was me or the tests.

Re: If not SICP, then what? Maybe HTDP?

#133

It's always interesting seeing the textbooks that are renowned by professors/people with prior knowledge, yet disliked by actual students. The Feynman Lectures on Physics is a pretty famous example (iirc, the actual course was received pretty negatively by students). I wonder how many people have actually sat down with a bunch of students and done a real experiment with textbooks. It's quite easy to think that a text…

Academia is double Dunning-Kruger. Most students don't know what they don't know about the topic, and most professors don't know what they don't know about teaching it. It's amazing anyone gets out alive.

An accidental double blind leading the blind study.

Re: If not SICP, then what? Maybe HTDP?

#134
post #128
post #58

Earlier quoted context omitted.

The book is written for freshmen at MIT, not your average high school grad. You're expected to have a solid foundation in calculus to get admitted to MIT. This is what everyone seems to be forgetting.

Was that true in the early '80s, when SICP was presumably developed (it was first published in 1985). I know that at Caltech in the early '80s, a majority of incoming students had not had calculus in high school. I would expect MIT to be similar.

[deleted]

Re: If not SICP, then what? Maybe HTDP?

#135
post #86

Working through SICP my main issue was the almost unbounded time commitment- like it will take you between a month to two years. I remember there was a trivial problem that took 5 minutes then apropos nothing the next problem bascially required you to invent the concept of numbers as functions in lambda calculus and required a two day diversion just to understand the answer. Even the best programmers I’ve known who’v…

This last week I took an in-person class where we covered almost all of the book: https://dabeaz.com/SICP.html The instructor David Beazley very skillfully weeded out all the non-essential parts and added one amazing exercise where we implemented the lambda calculus and, funny enough, the ycombinator. Highly recommend it for anyone who desires to learn this material, can't find the time, and is willing to pay $2500 f…

Link is caps-sensitive -- needs to be https://dabeaz.com/sicp.html

Re: If not SICP, then what? Maybe HTDP?

#136
post #128
post #58

Earlier quoted context omitted.

The book is written for freshmen at MIT, not your average high school grad. You're expected to have a solid foundation in calculus to get admitted to MIT. This is what everyone seems to be forgetting.

Was that true in the early '80s, when SICP was presumably developed (it was first published in 1985). I know that at Caltech in the early '80s, a majority of incoming students had not had calculus in high school. I would expect MIT to be similar.

6.001 was a second semester course, all incoming students had already completed a semester in undergrad calc and physics.

http://www.gigamonkeys.com/code-quarterly/2011/hal-abelson/ "There’s a tremendous amount (of math) in this 6.001 book. That’s partly because we were writing it for MIT. You want to talk about higher-order procedures, so the obvious thing you can do is you can express the idea of an integral. So that’s an obstacle for lots of places. Remember, at MIT the context we were writing in is every person who took the course had just had a semester of calculus.

We actually did some versions for the Humanities faculty, where we didn’t do that at all, and we effectively started with the data structure chapter and then talked about the ideas for how do you structure and manipulate data, and then do abstractions over that."

HtDP is similar to their other version, starting with data. Author of that book has a good talk about creating a compsci curriculum https://youtu.be/5c0BvOlR5gs

Re: If not SICP, then what? Maybe HTDP?

#137
This quote makes my head hurt:

> "Instead of teaching some currently fashionable programming language" [...] > "The approach emphasizes the systematic design of programs. Experience shows that it works extremely well as a preparation for a course on object-oriented programming."

As someone who gradually transitioned from "object-oriented programming" (or "place-oriented programming in general") with mutable data into largely functional systems with immutable data structures, I find this quote mind-boggling, especially coming from educators.

Moving to functional programming and immutable data structures is what allowed me to build and maintain systems at least an order of magnitude larger than before.

Re: If not SICP, then what? Maybe HTDP?

#138
post #79

It's always interesting seeing the textbooks that are renowned by professors/people with prior knowledge, yet disliked by actual students. The Feynman Lectures on Physics is a pretty famous example (iirc, the actual course was received pretty negatively by students). I wonder how many people have actually sat down with a bunch of students and done a real experiment with textbooks. It's quite easy to think that a text…

> people with prior knowledge, yet disliked by actual students This is the key!. I was about to say SICP was great then, yeah, I read it only when get interest in build compilers and after 20 years on the craft. I think you need a progression on material: 1- Start with a highly practical book more alike build little experiments/programs "Build a pacgam game" "Make a calculator", etc... ie, do a single pass for the mi…

This made me think about how I learned to program on the Commodore 64: By typing in listings from magazines on little games, like Snake or a little text adventure game etc. When teaching kids I think that could be a great method: Usually, kids are also not afraid to start experimenting and tweaking what they typed in, while perhaps adults lack the patience needed to just copy an example.

Now that I typed that out, I guess the thing about trying to come up with the one perfect teaching method is that students vary so widely in what experiences they bring to the table. There just isn't one method that could possibly work for everyone.

Re: If not SICP, then what? Maybe HTDP?

#139
post #95

Earlier quoted context omitted.

It's not unusual that original scientific works are more clear than the later works of people trying to explain them. The original author has to persuade people, and convince people who aren't familiar with them. The "pedagogical" author later is in a more clear position of authority and doesn't need to work as hard.

> The original author has to persuade people, and convince people who aren't familiar with them. The "pedagogical" author later is in a more clear position of authority and doesn't need to work as hard. Or perhaps: The "pedagogical" author can assume that by the time of his writing, we live in a society where it is accepted that there is nothing mysterious about the material (e.g. imaginary numbers are nothing myster…

>Unluckily many students who attend lectures have an attitude where they need to be convinced instead of taught.

Isn't this backwards? If you're just accepting the lecturer's word as dogma, I would argue you're not really gaining an education at all. The process of being convinced and having doubts about the material resolved improves critical thinking and improves understanding of the underlying material as well.

Re: If not SICP, then what? Maybe HTDP?

#140
post #100

Earlier quoted context omitted.

We need both. Not enough domain knowledge and you end up with software that isn’t a great fit for what it’s trying to do, but without enough computer science and software engineering knowledge and we end up with all of these stupidly memory-and-cpu-hungry applications that are all the rage these days.

Clearly. If people want code written by people with a lot of domain knowledge but not a lot of software engineering experience, look at the code written by electronic engineers who just need to write a little software (typically for microcontrollers) to interact with the hardware, the true focus of their craft. Some of the most horrendous, fragile, unmaintainable spaghetti code I've seen in my life was written by ele…

That’s a great example! Unfortunately.
Post reply on HN