“Theoretical comp. sci.” is Sipser, etc. I suppose this is “conceptual comp. sci.” That is far from a bad thing, though.
Right, “conceptual” is a far better term. Theoretical comp sci is a different beast entirely.
I agree that SICP is accessible to a freshman programmer, but I doubt that it’s the best book for them. Something like Code Complete would be far more useful.
I think we will have to agree to disagree on what the best first book ought to be for a programmer.
Not sure what you mean by this.
It was a joke with a grain of a joke. That is, I believe all programming activity, regardless of application area, has a unifying conceptual core. Because of this, statistical programmers, and business programmers, and web developers, and operating system programmers are participating in the same activity, much like algebraists, topologists, logicians, and analysts.
If you want to get into math you first study what it is mathematicians do, what a formal argument is, styles of proof, subject areas, abstraction, etc. If you want to get into programming you first study what it is programmers do, processes, styles of programming, abstraction, etc.
I guess my position is that when going into a new field, study domain-independent concepts first. That is, study the part of the field that does not decay with time.
OK, thanks for clarifying. As for the “best first book”, it’s probably highly individual. In my field (physics), students are taught easy basics first (F=ma etc.), long before they learn Lagrangian mechanics and relativity. Whether this is due to insufficient math or because the bottom-up approach is more suitable on average, I am not sure.
Yes, but the first chapter of the first book a student uses to learn physics contains a detailed description of what physics is: that it is the study of the nature, properties, and evolution of matter and energy, that it involves collection of experimental evidence and building mathematical, predictive theories from that evidence, etc.
SICP is that “first chapter” for computer science & programming. In terms of theoretical analysis it is actually rather poor—I wouldn’t compare it to Lagrangian mechanics or relativity at all. What it does is set the stage and provide a framework for thinking about computer programming in general, in such a way that keeps you from making common and avoidable mistakes in the future.
(There’s a reason SICP is/was the first class for incoming comp sci freshman at MIT for so many years.)
There is only one kind of programming :).
“Theoretical comp. sci.” is Sipser, etc. I suppose this is “conceptual comp. sci.” That is far from a bad thing, though.
SICP is comparable to Early Transcendentals because it is used for freshman comp. sci. courses (but is in fact far deeper than this might imply).
Not sure what you mean by this.
Right, “conceptual” is a far better term. Theoretical comp sci is a different beast entirely.
I agree that SICP is accessible to a freshman programmer, but I doubt that it’s the best book for them. Something like Code Complete would be far more useful.
I think we will have to agree to disagree on what the best first book ought to be for a programmer.
It was a joke with a grain of a joke. That is, I believe all programming activity, regardless of application area, has a unifying conceptual core. Because of this, statistical programmers, and business programmers, and web developers, and operating system programmers are participating in the same activity, much like algebraists, topologists, logicians, and analysts.
If you want to get into math you first study what it is mathematicians do, what a formal argument is, styles of proof, subject areas, abstraction, etc. If you want to get into programming you first study what it is programmers do, processes, styles of programming, abstraction, etc.
I guess my position is that when going into a new field, study domain-independent concepts first. That is, study the part of the field that does not decay with time.
OK, thanks for clarifying. As for the “best first book”, it’s probably highly individual. In my field (physics), students are taught easy basics first (F=ma etc.), long before they learn Lagrangian mechanics and relativity. Whether this is due to insufficient math or because the bottom-up approach is more suitable on average, I am not sure.
Yes, but the first chapter of the first book a student uses to learn physics contains a detailed description of what physics is: that it is the study of the nature, properties, and evolution of matter and energy, that it involves collection of experimental evidence and building mathematical, predictive theories from that evidence, etc.
SICP is that “first chapter” for computer science & programming. In terms of theoretical analysis it is actually rather poor—I wouldn’t compare it to Lagrangian mechanics or relativity at all. What it does is set the stage and provide a framework for thinking about computer programming in general, in such a way that keeps you from making common and avoidable mistakes in the future.
(There’s a reason SICP is/was the first class for incoming comp sci freshman at MIT for so many years.)
Berkeley also.
The youth is wasted on the young, and CS61A is wasted on freshmen. Only years later did I truly appreciate what CS61A was trying to teach me.