5 ms·
Her recommendations are poor. You dont read books on software development methodologies when "learning to program". Nor would you learn type theory. That's like
by 110011 8y ago
Her recommendations are poor. You dont read books on software development methodologies when "learning to program". Nor would you learn type theory. That's like suggesting to someone who wants to learn to sail, the intricacies of weaving cloth fibers into a sail.
There's a huge tower of abstractions to deal with in learning any new discipline, and it's important to enter at an appropriate level, ie, one that engages the learner to continue because the relationship to the end goal is clear (to the learner).
I would suggest CLRS to someone mathematically mature for the best introduction to algorithms. I don't have a book suggestion for learning to program in some language, but I do consider this a far less difficult and important obstacle compared to learning to think algorithmically.
When the interest is piqued people will naturally dig deeper and eventually find out for themselves, other aspects in the tower, be it silicon doping or reinforcement learning.
- nextos 8y agoYes, while the books she described are good, the overall package as 5 books to learn CS is odd.
- jeffreyrogers 8y agoI used CLRS at my university, but I've since found Algorithms by Dasgupta, Papadimitriou, and Vazirani far better. It's a much smaller book for one, so more people will actually read it, and while it is mathematically rigorous, the proofs and explanations are well motivated so you actually understand how the algorithm works and how someone could have come up with it in the first place. I agree though that her recommendations are poor. I feel that way about most of these five books recommendations. It's seems that people usually pick their books to be controversial or to show off how clever they are, rather than to actually help someone understand their field. I've read half of that type theory book for example, and it is utterly impractical for any practicing programmer. You would only find it interesting if you're interested in implementing functional programming languages, and even then it's quite theory heavy and not very practical.
- soperj 8y agoIt does say Computer Science and programming. So you might not read those books while learning to program, you (arguably) would while learning computer science.
- fao_ 8y ago> You dont read books on software development methodologies when "learning to program". In the article she already states that anyone can learn to program -- by programming. The title of the article is "The best books on Computer Science and Programming", not "The best books to learn to Program". Interviewer: And then, after this introductory book on programming, if a reader finds they really are interested and want to learn programming, this would be a good point to choose a language. Is that right? Ana Bell: Yes, the first book tells you about the hardware. Then if you want to learn how to program, you’ll need to learn a programming language. To do this, you don’t have to use a book, there are many tutorials online. Honestly I think you missed the fact that the books are about going further. Petzold's Code teaches you to look at what your instructions are doing on the machine. It teaches you a little about architecture -- and probably all most people will need to know about computer architecture, and let's face it -- the rest can be gleaned from the thousands of blog posts people have done about X unix feature, or measuring performance of Y, or otherwise from reading the code. Code Complete and Clean Code teach you how to deal with other people's code, and how to structure your own code in clean ways. This is not something that most people will pick up on their own at the time when they actually need it, it seems to be something mostly learned from trial and error. Important skills for contributing to an open source projects, etc. Types and Programming Languages teaches you more about how languages and Correctness work on a lower, general level. And Algorithms is about looking at the specific structures of the code you write, and learning to optimize them and design new ones efficiently. As she says: It’s not a book for beginners, but it’s a good book if you’re interested in the theory behind programming languages. In the first book you’ve learned about the hardware, and in the next books you’ve learned about good code, and then algorithms. Now you can learn about programming languages themselves: how to write one, and how they do what they’re supposed to do. Honestly the only one I'd really swap out is Algorithms. I'd replace it with The Algorithm Design Manual by Skiena.
- 110011 8y ago"Ana Bell, lecturer in the Electrical Engineering and Computer Science Department at the Massachusetts Institute of Technology, chooses the best books to learn computer science and programming."
- dofly 8y agoI read the first two chapters of Algorithm Design by Jon Kleinberg and Éva Tardos. The prose is very clear and lucid, but it has one problem: it's incredibly long-winded. A good editor could probably lop off a good 1/4 of the book without loss of info. That would make the book spectacular. Also, if anyone is interested, these lecture notes [0] (Algorithmic Math by Soicher & Vivaldi) below introduces algos from elementary number theory/abstract algebra. [0] http://www.maths.qmul.ac.uk/~lsoicher/ambook.pdf http://www.maths.qmul.ac.uk/~lsoicher/ambook.pdf
- deleted 8y ago[deleted]
- dragonwriter 8y ago> Her recommendations are poor. I disagree. > You dont read books on software development methodologies when "learning to program". Most people usually don't, perhaps (though my first college class in programming had The Mythical Man-Month as a required text, which is 100% methodological and 0% coding, and this was at a major engineering school) but especially given her discussion of the role of books vs. web resources in the current context, I don't think it's inappropriate. I personally would go to HtDP, which covered computational thinking, coding, and what I view as the right amount of methodology, and not Clean Code and Code Complete, but I don't see her recommendation of these as wrong or poor. Of course, HtDP is also a freely available web resource. > Nor would you learn type theory. Once you relegated the basic mechanical issued to web resources, the way she discussed, I think algorithms and data structures and type theory are probably the accessible-early deep-dive topics most useful, and the places where autodidacts focusing on obvious tutorial contents are most likely to miss out. I also think it's clear that her presentation is of five, basically progressive, key milestone works as you progress, not five things to do all as a rsbk beginner.