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.

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 you try to answer that first list of questions, you might find yourself unsure of what some of the words mean that are used on the page. I don't want you to run through the entire page, but look for what is required to understand the answers to the initial questions I asked, and write down what you need to answer before you can feel confident in your answers to my questions. 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 library function?
* 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 you 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?
   * What is linking?
     * ... 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.

Instead of writing out answers to your second level questions at 1.2.1, move them into the Post-Questions section and don't worry about answering them. That is my job as your teacher.

Post-Questions:

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


Feedback:

This is where I want you to put your thoughts about this assignment and feedback on how to improve it.

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:

 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


 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.


 Post-Questions:

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


 Feedback:
I did not understand enough about how Operating Systems work to answer this and was very lost. I was unable to understand the answers to my pre-questions.

For your first assignment, submit the text of the answer I provided above. Note the feedback I gave myself. Despite this being meant to be a simple problem, it is too advanced for where we are right now, and that is perfectly okay. Make sure to give honest feedback about how you feel about the different assignments.