This is an old revision of the document!
From starting this course, and knowing almost nothing about UNIX based Operating Systems, I have learned a lot of the basic commands that enable one to move around in a command line environment. Examples of this include listing files in your current working directory, logging onto lab46 via SSH, especially on a Windows based machine. I have learned how to move files, copy files, create files, as well as delete files from the command line. One of the most interesting things that I had learned was during a class period in which we went over the basic history of the different operating systems, into the current ones that are utilized. I had no idea that UNIX based Operating Systems played such a major roll in shaping the way that users interact with a computer in today's world of touch screen devices. All of this is significant to me due to the fact that I have had almost no previous experience in this environment. At this point, I feel that I can easily navigate and handle different files, as well as examine file permissions, with no help.
This week I have learned how to create files and directories, how to set permissions, and how to move files in the OS that I have permissions to move, all through the command line interface. I feel comfortable doing all of these things. At least I thought I did until I attempted to do this weeks project. I can't even get it off the ground by locating the source files that we have to modify. I can list (ls) files, copy (cp), move (mv), files, and I understand that a command needs to be followed by parameters to feed the command. I figured out how to look into the commands manual, at least to my knowledge, by typing in the command followed by –h. I'm not sure if this is the most optimal way to review a command and its uses as well as parameter requirements. Further than that, as far as projects go to look up things that are supposed to help me, I am unsure. Something that I know I have a firm grasp on though, is setting file permissions of files that I am able to, as well as viewing the file permissions that are set, all in octal. My first priority at this point, is to become more familiar with the basic commands that UNIX based systems provide for the user. After I am competent enough with those, I would like to learn things that will allow me to personalize my desktop, especially in the OpenBSD operating system we use in class. I would like to add a clock system to the desktop, as well as other basic applications.
Prior to this course I had no knowledge of memory management when I would write a program. I have learned, in the C programming language, how much memory each variable requires when it is declared. I more so now, than previous to this course, understand the significance of header files and the functions that are potentially utilized from those files. I have learned how to look at the header file and determine which function I am able to call into my program. Everything was going well, and then I was introduced to pointers. At first, I was able to write a basic program to point information to another variable. It wasn't until I actually had to face memory management that I was stumped. I am motivated to continue to learn about pointers and the power behind them now, to really unlock what the C programming language is capable of.
Throughout this week, I had to take a close look at pointers and really focus on what they are doing to finally understand what they do. I can confidently say that I understand them enough now to actually say I understand them. That a pointer points to a physical memory address in the machine, rather than a set value that we give it, and every time we run that program, the address of the pointer will change. We touched on bitwise operators, logical operators, and if statements. I understand if statements, and the logic needed to allow certain functions to happen in a written program. I also understand that if statements are powered by logical operators to allow the computer to recognize if a condition is true or false. However, bitwise operators are going to be more difficult for me to grasp. Using a bitwise operator in order to prove a condition true or false is not something I am used to. We used a bitwise & in order to determine if a number was positive or negative, by comparing all bits in the number to a zero, beside the least significant bit, which was compared to a one. I am not confident yet that I could use bitwise operators, outside of that instance in order to prove conditions true or false in a conditional statement. I am excited to discover how that can be accomplished. I also found an algorithm that will allow one to square any three digit number ending in five, following our squares project. If you take the first two numbers out of the three, square them, and add the original first two digits to that new number, and then put a 25 at the end of it, you can square any three digit number ending in five, without actually using a calculator and manually squaring the whole number. I haven't sat down and mulled through what you would have to do in order to square a four digit number in that manner though.