Week 24
I know I've skipped a number, but I've learned I've had two posts both labeled 'Week 11'. I should have that sorted by next week. As for the Operating Systems course: It's only the first week of it, and I've already experienced assignments completely disintegrating as I try to complete them. Sam, our instructor for this course, has provided a prompt explicitly for the journal entries. So I do appreciate that much. He's provided the following points and asks we treat them as steps.
Identify the topics we covered in class -- you can start by listing them
Explain what each of the topics were in your own terms -- take the identified topics and add a sentence or two describing them
Identify least-understood topics -- of these topics, which was the hardest for you to write the descriptions?
Explain the nature of your confusion -- for these difficult topics, what pieces of them make sense and what pieces are difficult to describe?
Identify "aha" moments -- which topic did you find it easiest to write about, and why did it make sense?
Ask questions -- what do you think will come next? Are there any gaps that don't seem to be explained yet?
What connections did you see to other classes and applications -- have you used/heard/thought about these topics before?
Let's begin:
The topics we went over included a general overview of the course and its layout. As well as:
A review from a previous Computer Architecture class. Granted, I had taken mine before coming to CSUMB, so there was some rust to knock off. But it did end up coming back all fairly quickly. The data hierarchy was a new concept. I found it clever. A mostly empty space allocated to a program, that can be dynamically occupied as needed by local variables. It also was nice to finally learn just what was meant by 'Stack Overflow'. Turns out it wasn't the data type that's being referred to.
The origin of Linux, as well as how a number of terms and names came to be. I've worked with bash before, but never did I expect it to be short for 'Born Again SHell'. That was something that took me off guard. I'm not sure how the history or origin of Linux, GNU, or the bash will be useful in long term, but it's nice to have.
Basic C coding. The fact that C is a precursor language to, appropriately, C++ and Java, would explain the similarities between the two languages when I first studied the language. C is a much more direct language where order more explicitly matters in the code. It shows up first, it's compiled first. It also separates methods from objects, the latter called 'structs' in code.
An introduction to the command line. Could've lumped this in next to Linux but never mind. The command line was a much rockier introduction than I would've liked. The commands and flags we went over were simple enough to grasp. Docker was involved in much of the difficulties I did experience this week, and boy was it a migraine waiting to happen.
And finally, an intro to, what I've started calling 'code math'. It isn't anything fancy; it's mostly just using binary and hexadecimal in math operations and converting between them and the decimal we're all more familiar with. It turns out that when dealing with address bits, its a matter of powers of 2.
The one's I easily had difficulty with were the command line and shell subjects. The part where I mentioned Docker being involved. During the introductory lab to the GDB, the debugging tool we'll be using for the class, the command line just wasn't cooperating. I was facing unexplained errors and resistance despite copying the commands exactly since starting the setup for the lab. I ended up having to use the docker interface just to get the command line/bash to where it needed to be to carry out tasks, and even then the outputs didn't match up. The lab assignment as a whole ended up disintegrating completely and I never worked out where it went wrong to begin with. Worst lab assignment ever. And again it's the introduction to the debugging tool we'll be using.
For an 'aha' moment, I've had several. The 'code math' for one, as I had practiced with it before on several occasions. C coding was the next big one. It really was a "I've seen this before" moment. I could go on for a bit.
The major question I have is, "Are we certain the infrastructure for the labs is properly set up?" For an introductory lab, I was facing an obscene amount of resistance and errors from the command prompt, Docker, and bash. To the point where I feel like the lab either changed languages partway through or the tasks were designed to be utterly impossible with the instructions given. GDB, the debugging tool, has the first impression of being absolutely useless, as does much of the surrounding infrastructure for the course. I had to restart the command prompt multiple times, attempt to clone the git externally because it wouldn't let me log in. And even then I suffered the lab completely breaking down halfway through. Sam said he can't make it fail reliably, I disagree. As most of the assignment was rendered a barely salvaged mess of error screenshots and failures of the lab itself. If labs are supposed to show how things work, then this one has shown how utterly useless many of the tools at our disposal are. I'm not convinced I'll be able to finish later assignments because of this.
It's difficult to have any faith that I can perform the programming assignments to any sufficient standard following this nightmarish first impression. After that first lab, I may end up just writing code that satisfies what the documentation says is required, because I already know the debugger won't do anything useful.
Comments
Post a Comment