We started off by learning/reviewing basic computer architecture and laying the groundwork for this class. That included things like the memory hierarchy and trade-offs, what is meant by instruction set architecture, what makes an operation atomic, etc.
We learned about how to deploy a docker container on our system as a way to run a lightweight OS environment within the host OS environment. In this case it was a good way to distribute a sandbox environment to everyone in the class.
We learned about the Windows powershell which has many of the commands that are so useful in *nix systems. To use those commands, we learned about man (manual) pages and common command line switches for common command line utilities. For example, the “-h” or “--h” option almost always displays the help page for the utility. For the ls command, “-l” or long format is useful for displaying more data about directory contents, and “-a” or all enables displaying hidden files.
Those commands are useful in shell scripts, which we also learned about. Shell scripts can be as simple as just being a list of commands in a text file. They are a good way to automate sequences of commands or operations that you might normally do by hand - typing in each command at the prompt.
We also got some exposure to C and learned about how it is different from C++ and Java. One key difference is that it is not an object oriented language. It also handles references differently and by default, function parameters are passed by value. Another distinction is that garbage collection is not automatic for variables allocated on the heap. It’s something that has to be remembered to prevent memory leaks.
We learned a bit about Makefiles and the GNU debugger, gdb. Compiling with the debug flag makes sure that debug symbols are built into the output executable. These symbols allow us to do things like set breaking points and step through the code.
This week was about pinning down the fundamentals.
No comments:
Post a Comment