texts & otherwise for bottom up teaching/learning

Hi Folks,

My son is now studying computer science at college, and in looking over some of his course materials, I've noticed how differently computer science seems to be taught, compared to earlier times (in my case, early 70s, MIT).

Which leads me to wonder, if one wanted to teach/learn the way I did, bottom up, are there any good books (textbook format or otherwise), lecture notes, online tutorials, etc. that one might use to proceed from:
- math, theory of computation background
- basic hardware concepts -> computer architecture
- machine language, assembly language (including assembler and linker concepts
- higher level languages (including compiler and interpreter concepts/designs)
- algorithms and problem analysis/solution
- operating systems
- databases
- networking
- systems
- systems of systems

A few old standards come to mind:
- Structure and Interpretation of Computer Programs (Sussman, et. al.)
- The C Programming Language & The Unix Programming Environment (Kernighan and Pike) - still find these useful occasionally
- Knuth (obviously)
- Comer, Tannenbaum, Stallings for networking

I'm drawing a blank, though, when it comes to "what's under the hood" - going bottom up through basic computing concepts, hardware architecture, machine and assembly language, assemblers, interpreters, compilers, operating systems.

So a question to folks here: what's stuck with you folks over the years, and/or what have you come across more recently, that might fit the bill?

Miles Fidelman

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Computation Structures

This may fit your bill.

more bookworm or more social guy?

There's more to learn these days, in the sense it's easy to fill one's time many times over just pursuing a few things in depth instead of many things in breadth. Good advice might depend on your son's interest and aptitude. (My sons have sufficient aptitude, but little interest, which is an insuperable problem. I think I gave them an idea it's no fun.)

For an aptitude quotient, let me take an IQ metaphor too far here. A standardized test for IQ is a good measure of test-taking ability but only vaguely related to I=intelligence unrelated to math and logic; IQ doesn't measure S=social, C=creative, E=empathic, X=expressive, or P=persistent attributes of personality, despite all those having an effect on programming aptitude — maybe others too. If in addition to puzzle-solving smarts, your son had high SQ, CQ, EQ, XQ, or PQ, that may make advice a better fit.

Work with others, or alone? Make up new things, or stay in old grooves? Know how others think, or somewhat oblivous? Produce descriptions, or consume them? Stick with it, or like constant change? What your son is like would affect value of suggestions.

For example, programming seems a lot more social that it used to be, so there's a more extroverted way to go about it now, when it used to be more introverted. I'm guessing Javascript would appeal a lot more to an extrovert, while something gnarly and unpopular might appeal more to introverts. Go with the grain, whatever it is.

Kluge's book

I described it roughly in

http://lambda-the-ultimate.org/node/4597#comment-72302

It should be within reach of the motivated undergraduate.

It would give a good intro to the following from your list:

- math, theory of computation background
- machine language, assembly language (including assembler and linker concepts
- higher level languages (including compiler and interpreter concepts/designs)

I think computer science has not yet been fully formalized.

We have been teaching computer science for years. But we've been alternating between teaching it as a craft, as an engineering discipline, and as a branch of mathematics. Each of these approaches misses important things about it.

face palm

All approaches are valuable. Computer science isn't a simplistic pure discipline that lends itself only to one branch of human inquiry.

We don't really alternate, just focus on what works and what is useful per CS topic studied.

H&P

Hennessy & Patterson. Computer Architecture. Any edition.