5 ms·
I'd recommend he read the "structure and interpretation of computer programs". It's written for audience who would, at the time, have found programming novel, b
by llamaz 10y ago
I'd recommend he read the "structure and interpretation of computer programs". It's written for audience who would, at the time, have found programming novel, but would be at home with math. Hence it's written in a language that allows you to expand out the program by pencil and paper, much the same way you would simplify an equation, to see if it works.
Also the following books, which I've copied and pasted from somewhere, to learn theory:
Mano, M.
Digital Design, 3rd ed.
Prentice Hall, 2002
Mano, M and Kime, C
Logic and Computer Design Fundamentals, 2nd ed
Prentice Hall, 2001
Gajski, D
Principles of Digital Design
Prentice Hall, 1997
Tanenbaum, A
Structured Computer Organization, 5th ed
Prentice Hall, 2006
Patt, Y and Patel, S
Introduction to Computing Systems: From Bits and Gates to C and Beyond, 2nd ed.
McGraw Hill, 2004
Null, L and Lobur, J
The Essentials of Computer Organization and Architecture, 2nd ed
Jones and Bartlett Publishers, 2006
- givinguflac 10y agoWow, this is an incredible list. I think this is probably the best first step, and some of the other excellent responses I've got here would be a step two or three. I really appreciate you taking the time to provide these suggestions.
- uola 10y agoSICP might be a good programming book, but I'm not sure it's a good book. If your friend doesn't have programming experience something like "Code: The Hidden Language of Computer Hardware and Software" might be an easier way to start. Here is the first paragraph from each for comparison: SICP: "We are about to study the idea of a computational process. Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells." Code: "You're 10 years old. Your best friend lives across the street. In fact, the windows of your bedrooms face each other. Every night, after your parents have declared bedtime at the usual indecently early hour, you still need to exchange thoughts, observations, secrets, gossip, jokes, and dreams. No one can blame you. After all, the impulse to communicate is one of the most human of traits."
- throwmeaway123 10y agoI don't think the prison superintendent will enjoy that last paragraph.
- RandomOpinion 10y agoI cannot say I agree that the list of books provided by llamaz is good. The suggestions given so far are college-level CS textbooks (like SICP) and may be too difficult to start with for somebody without the necessary background knowledge. Unless your friend was already a college student in a CS program, I would recommend looking for books and instructional materials targeted at the high-school level instead. Also bear in mind that without access to a computer or external tutelage, it's going to be very difficult for your friend to know whether or not his code is working properly. Stratoscope's suggestion of hand execution (https://news.ycombinator.com/item?id=12668865 https://news.ycombinator.com/item?id=12668865) is a good suggestion to help combat this issue. However, this means most likely that your friend will need to start with a language that's simple in structure; this disqualifies most modern languages. BASIC, Pascal, C or other extremely simple languages will be most amenable to this type of hand execution.
- db48x 10y agoSICP is an introductory text, and is usually taught to first-year undergraduates. We don't even know what sort of educational background this friend has, but if he can do algebra, then he'll be able to do the exercises in the first chapter and check his answers. Furthermore, because Scheme uses the substitution model, doing the exercises on paper is possible. It'll take care and attention to detail, but every Scheme expression can be expanded and reduced according to simple rules, just like in algebra. The same cannot be said for most other languages.
- inimino 10y agoSICP is perfect for studying without a computer. I've done it that way and it was a great experience. However, while it is presented as an introductory textbook, it moves fast. It depends on the learner.
- db48x 10y agoHmm. The pages move only as fast as you turn them :) It's probably safe say that it's more concise than others that I have read. A sentence in SICP could become a paragraph in a lesser book.
- ogennadi 10y agoSimilar to SICP, I'd recommend "How to Design Programs" (2nd ed.) [1]. It describes an "algebra of data" using Racket [2] (a modern lisp) as the vehicle. [1] http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html [2] https://docs.racket-lang.org/racket-cheat/index.html https://docs.racket-lang.org/racket-cheat/index.html
- branchless 10y agoThe Little Schemer, found the style delightful.
- inimino 10y agoI have worked through SICP, and strongly recommend not using a computer for any of the exercises, at least until the large scale projects in the later chapters. This would be the perfect recommendation for someone who only has pencil and paper. However it is a bit intimidating if not impossible for a true newcomer without access to external resources and help. But with enough time and effort...