Yes, this is taking the way learning is done in almost every case and field and applying it to programming. No, it still hasn't really caught on universally in computer science.
Yes, this is taking the way learning is done in almost every case and field and applying it to programming. No, it still hasn't really caught on universally in computer science.
I know for me, reading is only the first step in learning. Doing is far more educational, and often when things go wrong, I go back and read it again. So I wouldn’t argue that reading isn’t worthwhile, but at least in my experience reading is only 50% of my learning process, I might I’m even go lower than that, 20-40% range.
As an example, I read the Rust Book beginning to end, but it wasn’t until I started writing code with it that I truly understood some of the concepts, like move-by-default. When I read about move-by-default, I understood what it was saying, but I only grokked it after writing code and experiencing it—and at the same time realizing that it was the first time I’d actually worked with a language that had that as a fundamental piece of it.
I have a lot more examples like that, just happens to be a memorable one.
I don't see how K&R can be a good example (or a bad one or any kind of example at all) in the context of computer science education. Its purpose is to teach the C language to experienced programmers. It has no aspirations of teaching computer science.
K&R is not even about teaching you to code. It says in the preface to the first edition that it assumes you already know concepts like loops and assignment statements. It also says if you're a beginner, you need to supplement the book by seeking the assistance of someone with more experience.
I think maybe you’re referring specifically to learning how to program and not computer science at all. Because nearly every CS curriculum was dominated by a lack of hands-on programming and only in the last decade or so became more code-writing focused, which is exactly the opposite of the narrative you are painting here.
K&R was the main textbook for my first university CS class at Caltech in 1990. (Though, to be fair, the bulk of what I would call “computer science” as distinct from “mechanics of programming in the language used for the class” of that class was taught through other means, but still.)
Man, it's almost like a field accidentally discovered a better way of working and other people are slowly trying to make them more normal. Learning by fast feedback on individual action is better than learning by reading and not acting.
For example, there are far more incomplete Common Lisp tutorials than there are working / fleshed out code examples on GitHub. The endless unfinished tutorials and "books" are suspiciously similar, and nearly always give up at the same not-yet-practical level.
The same goes for other technical subjects. Raspberry Pi is another area where you can find different versions of nearly the exact same incomplete tutorials everywhere.
Even getting to the more applied side of things, books are common. Perhaps the most well known one https://en.wikipedia.org/wiki/The_Art_of_Computer_Programmin... predates Norvig by several decades (not that I think Knuth kick started the idea either). Yes it does have exercises after each chapter but these are far less than the very dense extensive reading content including application of algorithms (and questions are obviously optional, and in the typical style of math text books).
It's a great work (I'd be lying if I'd said I'd poured into the entirety of it extensively, but I've spent weeks on certain portions, like the MMIX fascicle and Sorting and Searching), but PAIP has a significantly better claim at "kickstarting" the "read code instead of write it" trend, because in TAOCP the code doesn't take center stage, and it was never the point for it to (hence the creation of MIX & MMIX).
Pointing to examples (K&R) advocating learning by writing is not evidence that learning by reading was not widely known and used in computer science. That's a logical fallacy.
I will point out, though, that I never said anything along the lines of "was not widely known [...] in computer science." What an absurd thing to accuse a comment of saying! I do insist that it wasn't widely used, though, and TAOCP, a series that's infamous for not actually being read often, isn't a great example of it being widely used, even if TAOCP did fit the criteria (which in my updated comment above, I contest).
I did not find that. This is the first paragraph of your edited comment:
> For anyone not in the loop, Norvig was the author of Paradigms of Artificial Intelligence Programming. This was a substantial contribution to the field of educational computer science literature, and helped to kickstart the idea that the way to learn is to read, not just write.
It's still wrong. It did not kickstart that idea in computer science.
> "Computer science [..] filled with books that encourage you to write code [..] PAIP [..] has you spend much of the book reading code."
You replied:
> "There is a long and rich history of books in early computer science."
which seems to be missing the point, it's not reading books they are talking about, it's reading code as something to learn from, compared to learning by writing code, as the change which PAIP kick-started. "no you're wrong" is a low quality rebuttal, even moreso when it's backed by nothing more than the "assurances" of a throwaway account.
I completely agree with everything else you said, though.
I went back to the original post that said it was edited, rather than that one. If it was there all along and I missed that part about reading code specifically then that doesn't really change what I wrote at all. TAOCP has vast amounts of code you are expected to read and understand (pseudo assembly and a fairly rigorous algorithmic specification language even if it may not be a "real" language).
But reading real code has long been a "thing". Why do you think UNIX and derivatives were so popular and widely used as teaching aids in universities in the 70s and 80s?
> which seems to be missing the point, it's not reading books they are talking about, it's reading code as something to learn from, compared to learning by writing code, as the change which PAIP kick-started. "no you're wrong" is a low quality rebuttal, even moreso when it's backed by nothing more than the "assurances" of a throwaway account.
I don't think it's worth getting too upset over. The "assurance" is a figure of speech, not appealing to my authority. And I don't see why you're getting calling out a low effort response because it is in response to a low effort claim. I didn't think it required anything more.