First Assignment

In this course I like to have students submit short written assignments. As I cannot grade all of the assignments for the free courses, they are really for you to use to self-assess your understanding. I have a specific format that I want you to fill out for each assignment, which will force you to think through what you are doing.

First, there will be the questions I want you to answer. For example:

Questions:

1. What is a man-page?
2. How do I pull up the man-page for a program?
3. What can I learn from man-pages?

Resources:

https://en.wikipedia.org/wiki/Man_page



For each of the questions I ask, I expect you to answer them with a sentence or two that will be enough for you to understand what you meant in the future when you study them. Every time you write up an assignment, treat it like you are making study material for future you, or someone you are trying to teach.

Sometimes I will give you references, oftentimes I will make you Google for the resources yourself. Learning to pick out and use trusted resources is a major skill to learn. In this case, I gave you the resource.

Looking at Wikipedia, there is a ton of information there, and each sentence has linked resources. In order to understand what is going on, you might have to go one level deeper to feel like you have a grasp of your answers. Please, don't get too deep into the rabbit-hole, just learn enough that you can answer the question and move on. Despite the Wikipedia page having information on the history and formatting and more of man-pages, stick to what you need to answer these questions and move on.

Let's demo how I want you to try and do this going forward. Don't worry about things like plagiarism, though feel free to rewrite things how ever you want if it helps you understand better.

As you try to answer the first list of questions, and start writing out answers you probably will find yourself unsure of what some of the words mean that are used on the page. Write down what questions you have you feel like you need to answer before you can confidently answer the actual questions. I don't want you to read through the entire page (there is no reason to and you won't get anything out of it), but skim / ctfl-f for what is required to understand the answers to the initial questions I asked.There is no need to write out things you already know, just things that are new.

Pre-Questions:

* What is 'Unix-like'?
* What is a system call?
* What is a convention?



To answer these questions, you would use Google and work through each of these questions until you were satisfied with the answer. As an important note, you can rabbit hole very deep trying to answer many of these questions. I strongly recommend (basically beg you) to never go deeper than one level away from the questions I ask.

For example, following the things you do not understand too many levels deep could wind up looking like this:

Pre-Questions:

* What is 'Unix-like'?
* What is a library function?
* What is a function?
* What is a library?
* ... and all the way down


You don't want to play that game. Go one level deep (i.e, 1.1, 1.2, 1.3... ) and answer those questions. If you still do not understand your answers at that first level down, write what you do not get and move on (unless you absolutely feel like you have to answer it). This is not for you, but for me as the teacher, so that I can see where the curriculum is failing students.

Answers:
1. A man page (short for manual page) is a form of software documentation usually found on a Unix or Unix-like operating system that describes how library functions or system calls work in a program, as well as standards and conventions.
2. A user may invoke a man page by issuing the man command, i.e. "man printf"
3. A synopsis of what the command does, various command line options, examples of how to use it, and related functions.

Resources:

* https://en.wikipedia.org/wiki/Man_page
* https://www.thegeekstuff.com/2012/07/system-calls-library-functions


As mentioned above, any new questions we have but are not going to answer, either because we don't need it to understand our answers or because they are too deep, we will put here.

Post-Questions:

* What is a function?
* What is a library?


Feedback:

Put it here and help me improve the material!



Final Format

To bring all of this together, the assignment you receive will look like this:

 Questions:

1. What is a man-page?
2. How do I pull up the man-page for a program?
3. What can I learn from man-pages?

Resources:

* https://en.wikipedia.org/wiki/Man_page



I expect you to answer with a text file that looks like this:

 Pre-Questions:

* What is 'Unix-like'?
* Unix-like means an operating system based off of the Unix OS. (Resource 1)
* What is a library function?
* A function which is built into the OS and linked to the executables for different programs.
* What is a system call?
* A function built into the OS that requests a service from the kernel
* What is a convention?
* A way in which something is usually done, especially within a particular area or activity.
* For Linux this means an agreed upon standard for a technical implementation.

1. A man page (short for manual page) is a form of software documentation usually found on a Unix or Unix-like operating system that describes how library functions or system calls work in a program, as well as standards and conventions.
2. A user may invoke a man page by issuing the man command, i.e. "man printf"
3. A synopsis of what the command does, various command line options, examples of how to use it, and related functions.

Resources:

* https://en.wikipedia.org/wiki/Man_page
* https://www.thegeekstuff.com/2012/07/system-calls-library-functions

Post-Questions:

* What is a function?
* What is a library?