This is my course review for CSE 351, hardware/software interface. I took the course in Winter 2016 with Dan Grossman.
As with the other courses I’m taking this quarter, I’ve decided to keep notes while I’m taking the course instead of writing a review afterwards.
So far I’ve been extremely frustrated with the amount of low-level details I’ve had to deal with. The justification given for this course is that even though we won’t ever use this, it’s still good to know because it’ll give us a better understanding of what goes on “under the hood”. However personally I don’t find this very convincing.
Some of the assignments, like lab 1, involve tediously limiting what we can use to solve the problems, which was extremely annoying, and I felt like it took too much time (getting a “taste” of bit shifting and so on was the point of the assignment, but I think the assignment extended way beyond that point).
From 7th week: the course is still really frustrating. It takes quite a bit of work to do the labs (the written homework, by contrast, is much easier and shorter). I also didn’t do well on the midterm (though this might inspire me to care less about grades, which is something I am slowly succeeding at1).
In contrast to CSE 332, the activity on the discussion board is minimal, which is somewhat disappointing (not that I’ve contributed to the board myself).
For what it’s worth, I’ve found that some of the ideas from 351 are useful (examples: buffer overflow, details of caching, what a segmentation fault is), but I have to wonder if it was necessary to go through the pain of the coursework just to have a good understanding of these ideas (I strongly suspect the answer is “No”).
It’s highly unfortunate that I’m only doing this so late in my educational career; I will graduate at the end of next year or the year after that, so it will only be in the last years that I will care sufficiently little about my grades that I can have a stress-free life.↩