Live data from Hacker News

Computer Science from the Bottom Up (2013)

bottomupcs.com

21–30 of 161 posts

Re: Computer Science from the Bottom Up (2013)

#21
post #9
post #6

Earlier quoted context omitted.

If you want to try something out but get put off by some of the C frustrations like dealing with memory and working out how to deal with the standard library you should pick up a cheap copy (or download the free copy) of Structure and Interpretation of Computer Programs. It's a book that walks you through, program by program, all of the basic concepts of programming languages, computation, and programming in a clear…

I remember trying do do that years ago, and getting hung up as a newbie on there being a million different LISP implementations. I think I tried to use Racket, if I remember correctly, but whatever I picked didn't support some of the book's LISP statements out of the box. Any recommendations for a more friction-free experience?

I remember trying to learn a garbage-collected language with curly braced blocks, functions and infix operators years ago, but was hung up on there being a million implementations. I think I tried to use Java, but was hung up on the book's C# statements that weren't supported out of the box. Any recommendations for a more-friction free experience?

How about this recommendation: use the exact same language that your book or tutorial teaches!

Racket has even gone out of its way not to be named Scheme (it was a Scheme once called PLT Scheme, but changed its name). Scheme, in turn, went out of its way not to be named Lisp.

A tutorial that purports to be about Lisp is quite probably about a traditional language which has characteristics such as the symbol nil being a self-evaluating expression representing the empty list and Boolean false.

Re: Computer Science from the Bottom Up (2013)

#22

But this isn't a comp sci book really since it doesn't actually cover any comp sci topics such as the analysis of computer programs, algorithms and data structures.

That's one portion of computer science. Computer science encompases, in my mind, the study, operation, maintnence, and information that is required to perform computing tasks of the modern era. It's no use to know about algorithms and complexity if you only know how to sort punch cards as that isn't a modern day computing task. A computer sceince background inherently implies software development background. This als…

Algorithms and complexity theory are independent of any physical model of computation; they capture what it means to compute.

The entire field of theoretical computer science stands as a counterexample to your comment. Computer science is not about software engineering.

Re: Computer Science from the Bottom Up (2013)

#25
post #8

Based on the comments I see here (about how they wished to learn CS, or CS vs EE), I wish this book had a different title with more of an indication that this is a operating systems book (though not 100%). Computer Science is more than what is presented here. Big O Notation/Data Structures/Algorithms, ala Dr. Knuth Proof and theorems Computer architecture and design (NAND gates and the like) Language design, interpre…

I agree, the book isn't very "bottom-up" at all, perhaps with the exception of "Binary and Number Representation" being the second chapter; the rest of it looks like OS stuff.

This is what I'd consider "bottom up":

https://www.amazon.com/Code-Language-Computer-Hardware-Softw...

Re: Computer Science from the Bottom Up (2013)

#26
This is similar to the practical side of the CS education we got at The Evergreen State College, except fancy high-level stuff like Unix and C wasn't covered until long after we learned to write simple programs in assembly/machine code on virtual Von Neumann machines that we implemented ourselves.

Re: Computer Science from the Bottom Up (2013)

#28
Is this more about the science vs the trade? I do wonder if a practical foundation helps people understand and go deeper into the science.

When I did a computer science degree from the University of Victoria, Canada, 1996+, it more started from the "bottom". Though if I remember assembler was being moved or removed from second second year. On the other hand before I finished for new students discrete mathematics, matrix algebra, and differential equation courses were also being dumbed down or eliminates. By the time I finished course catalog had a lot of "software engineering".

Re: Computer Science from the Bottom Up (2013)

#29
At my school (NCSU) Computer Engineering was taught from the bottom up - Assembly was 100 level, C was 200, Java was 300. Advanced topics covered CPU caches and memory hierarchies, CS never got those.

Computer Science was taught from the top down - Java in 100 level and C/Assembly were touched on in 300 level. Advanced concepts were data structures, operating systems, and algorithms, CE never got those.

Most of us are hacking on web apps these days anyways in which a baseline from either CS or CE is fine.

Re: Computer Science from the Bottom Up (2013)

#30
post #5

I've been rattling this idea around in my head and, although it may sound crazy, I think C is a little high level to start an adult out on. I know many people won't agree with this but all of the people I admire in the world of CS and everyone who is a true scottsman for all intents and purposes loves dipping down to a lower level once and a while. I think the best way to learn about computer science it to program fo…

Great explanation: you just described the perfect 9-12 year education for the future software developers or even a "STEM track" for those so inclined.

IMHO it does not have to be a 9-12 year education. Just having a one year course of teaching assembly would suffice. Then the student could go on learning by himself/herself.

In order to write good programs, you already need years of work and self study. It's much like being a writer. The most important role of education is to guide people and teach properly, so they won't get lost and have courage to pursue knowledge.

The problem is that not all people are passionately interested in computing. Most people here on HN are, and would still be amazed if they did not have an access to computers and wrote hand-written assembly. But regular people, even the ones who have an interest in technology in general and most of my friends who are currently studying CS, do not feel the same way.

The current university education aims to supply specialized workers, not free tinkerers. In 4 years you can train someone to write working programs. But training someone to be good at programming requires a different mindset. In order to become better at programming one needs to enjoy programming and devote a certain piece of his/her life to it.

In short: programming is a lifelong pursuit. Like all skills you get better over time, if you stick to it. But guidance can really help in the process and opens many doors for the interested. That's why a path that covers the lowest level is important. There are not many resources and it can be quite frustrating for a beginner. I never had the chance to study CS in a formal setting, but I still remember everything from my computer classes in high school. I am grateful for every piece of theoretical knowledge I acquired at that time. I had a real hard time accepting that I could not study CS. It took me a while to realize that they do not teach the CS I want at the universities that my friends attended and I could still work with computers like I always did; by reading and tinkering.

I think books like this are extremely important for the unfortunate ones amongst us, who are really passionate about computers, but cannot pursue CS full-time in formal settings.

Post reply on HN