Anyone have any experiences self-studying with this book?

Anyone have any experiences self-studying with this book?

I heard it's the first big step in no longer being a webshitter/codemonkey.

Attached: csapp3e-cover.jpg (504x648, 58.34K)

Other urls found in this thread:

nl1lib.org/book/2611328/81a8ab
twitter.com/AnonBabble

just stick with webshit nobody care your computer architecture knowledge.

thanks ESL

I have. It's extremely accessible for self-study. DO THE LAB PROJECTS.

>nl1lib.org/book/2611328/81a8ab
I have heard good things but haven't come around to it yet.

it's not bad. there is also uni course with videos on their website if you aren't purely into reading
I found a few factual errors in it but nothing big.
but it all feels a bit like frankensteined uni coursebook where they had to merge several intro topics into single course

the first three chapter is pretty common computer basics intro - overview of OS concepts, CPU+memory computer architecture, data types and how they act in memory

fourth chapter is weird. they touches cpu design, data pipelines and instruction sets. idk why it's there. very impractical and worth skipping

fifth and sixth chapter talks about performance characteristincs of memory hierarchy. a bit of assembly there, pretty nice chapters
one complain would be that they claim and show some measurements, but mention no tooling how you can make the measurements yourself

chaoters 7 also nice - on linking, loading and ELF object files

next 5 chapters are generic unix os intro course


when I picked it up I already heard most of there things, but it was still an ok book to go through. I expected to get something like Computer Architecture: A Quantitative Approach, but it is not it

>Computer Architecture: A Quantitative Approach
thats theoretical too

>theoretical
what do you mean by that. I wouldn't call Quantitative Approach an first year intro material if you mean that, just that it was what I personally was looking for

but props for CSAPP, not many intro materials even mention superscalar out of order instruction pipeline, they actually managed to explain it really comprehensibly

I thought the fourth chapter made sense. Made short work of the following chapter involving critical paths, loop unrolling, latency x throughput-bounds etc.

>fourth chapter is weird. they touches cpu design, data pipelines and instruction sets. idk why it's there. very impractical and worth skipping
My uni course used the book and did skip chapter 4. We did 1-3, 6, 8, and 9.
Like many other CS textbooks (dragon book, tiger book, etc) it is not meant to be done cover-to-cover. It's meant to be done in pieces here and there depending on what that particular professor thinks is most important to teach in their program.
Fun fact: At CMU, the school where the book was written, even they skip chapter 4 and the last chapter.
Also this. It is useless to just read the book and leave it at that. Do the practice problems and especially do the labs, at least the first 4.

I got a few hundreds of pages in and dropped it due to lack of time, but even that was an enlightening and pleasant experience

But the shame is that the lab project for the 4th chapter is really cool and complete. It kind of shows that CMU doesn't use it, because I had to fiddle with Tk dependencies to get it to run. But man, optimizing that program at the assembly level for an arbitrary processor architecture was fun.

Do I really need to know all the bit math shit from chapter 1?

Attached: 1620472503644.jpg (306x306, 22.71K)

I've been thinking about going through that book but I have two things holding me back

1. TeachYourselfCS recommends going through "nand2tetris" first.
2. I've heard you should have a working knowledge of C (including thoroughly understanding pointers) before diving in.

Are either of these true?

It Depends (TM). Probably not, though. I used this for a class, and aside from one project at my last job, I didn't have to do any of that sort of thing. bit masking can be useful, but you won't do it often. If you do embedded, aerospace (the project I was working), robotics, or whatever then you're gonna need it.

>1. TeachYourselfCS recommends going through "nand2tetris" first.
not necessary but it's fun and gives motivation. honestly at a lesser state school the computer architecture course would probably look like N2T + a crash course in C, with CSAPP being an optional elective or graduate course.
>2. I've heard you should have a working knowledge of C (including thoroughly understanding pointers) before diving in.
helps immensely especially if you're less confident, but you could kinda learn them concurrently also

it's not that much
two's complement for signed numbers
fixed point arithmetics are ez (not sure if they are in book)
floating points are a bit more complex, especially real IEEE 754 and denormalized range, but sign+mantisa+fraction works just like scientific notation in base2
and bit masking is pretty useful tool on daily basis

iirc they show how to make floating point arithmetics by hand... no you don't need to know that part

if I remember correctly you get exposed to the core concepts of C pointers throughout the first few chapters

The first step to no longer being a webshitter/codemonkey is taking on harder projects. Knowledge about computer systems is useful, but not essential. Take on more difficult projects in a wider range of languages. Its hard, and it takes time, but the results speak for themselves. Get comfortable with being uncomfortable.

You don't need to know how to do it, but you must know why it is done and that it is done.

15213?

Pointers aren't really hard once you realize it is just an address to a specific memory location along with the addressing type info.