User Tools

Site Tools


haas:fall2019:unix:projects:eoce

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

haas:fall2019:unix:projects:eoce [2019/11/06 11:01] – external edit 127.0.0.1haas:fall2019:unix:projects:eoce [2019/11/13 13:05] (current) wedge
Line 1: Line 1:
-<WRAP centeralign round box> +at the bottom of your journal
-<WRAP><color red><fs 200%>Corning Community College</fs></color></WRAP> +
-<WRAP><fs 150%>CSCS1730 UNIX/Linux Fundamentals</fs></WRAP> +
-<fs 125%>End of Course Experience</fs> +
-</WRAP> +
-======EoCE====== +
- +
-=====Rules===== +
-Presented within will be various questions evaluating your knowledge and experience gained this semester. In places where you are able, the more you write and explain topics the better the chance you will have of receiving full credit (and alternatively, the more credit you will receive should something defer correctness). +
- +
-Unless otherwise specified, the questions on this experience are open resource with the exception of other individuals. In that respect, it is **CLOSED PERSON**. This means you are not to communicate with other people (either in the class or otherwise), in real life or electronically. Use your own knowledge, use your own skills, and use your own ability to access the allowed resources to aid you in coming up with your well thought out responses to each question. +
- +
-You are allowed, and expected, to seek clarification on any question by asking any of the tutors or me. But the aim here is to evaluate what you have learned, so do not expect tutoring. Any help should be prompted by a well-asked question. Any reply (if possible) from a tutor, should also be in the form of a question. +
- +
-You are to do **all** items. Submission is to be as follows: +
-  * an organized and easy to read presentation of information on your EoCE wiki page. +
-  * if applicable, a supplemental archive submitted using the **submit** tool (likely via Makefile) +
- +
-The EoCE is worth 26 points of your overall grade (projects + participation + journal + eoce = 104), representing a distinct fourth category within the grading policy of the course (Projects, Journal, Participation, and EoCE). +
- +
-====Finals Week Availability==== +
-While some classes are allocated a specific meeting time during finals week, I make all such times available should you be free and have questions. As such, finals week in **CHM123** will look something like this: +
- +
-  * Monday,     December  9th, 2019: from 02:30pm - 05:30pm +
-  * Tuesday,    December 10th, 2019: from 08:00am - 02:15pm +
-  * Wednesday,  December 11th, 2019: from 02:30pm - 05:30pm +
- +
-**DEADLINE FOR SUBMISSION:** You have until 05:29:59pm (that's 17:29:59 in 24-hour time) Wednesday, December 11th, 2019 to complete your EoCE(s). This is the ultimate deadline for any and all coursework. There is no "late", only "too late". Don't be that person, not with this. +
- +
-Good luck! +
- +
-=====UNIX===== +
- +
-====Obtain the EoCE project==== +
-In order to perform this end of course experience, you will need to obtain a copy of the **eoce** project, located on lab46. +
- +
-===Obtain EoCE=== +
-Okay, you're ready to tackle **eoce**, please log into lab46, go into the directory where you've been organizing your course work, and do the following: +
- +
-<cli> +
-lab46:~/src/unix$ grabit unix eoce +
-... +
-</cli> +
- +
-You should now have an **eoce/** subdirectory, containing other files and directories. +
- +
-**NOTE:** It is important that you keep the project directory named **eoce**; changing its name will break some of the automated functionality making your life easier. +
- +
-===Change into your eoce project directory=== +
-Once copied, you can now change into your project directory, by doing the following: +
- +
-<cli> +
-lab46:~/src/unix$ cd eoce +
-lab46:~/src/unix/eoce$  +
-</cli> +
- +
-===Using the Makefile=== +
-In the base of the eoce project directory is a Makefile which will automate some tasks for you (specifically, submitting, but it can also be used to help propagate any bugfixes or updates). +
- +
-When you are done with the EoCE and are ready to submit any support files, simply run **make submit** on lab46 from the base **eoce/** directory. +
- +
-====0x0: Move Along Home==== +
-Analyze the following script and respond to the questions that follow: +
-  +
-<code bash 1> +
-#!/bin/bash +
-+
-# Execute this with some quantity of arguments: +
-#   ./0x0 4 37 16 23 11 8 29 0 32 2 43 5.2 1 3.14 19 +
-+
-function evaluate() +
-+
-    value="${1}" +
-    sleep "${value}" && printf "${value} " +
-+
- +
-for item in ${*}; do +
-    evaluate "${item}"+
-done +
-wait +
-echo +
- +
-exit 0 +
-</code> +
- +
-**ASSUMPTIONS:** To make your task easier, you may work with the following assumptions: +
-  * no value provided on the command-line will be greater than or equal to 60 (ie all values will range from 0-59) +
-  * no need to do command-line argument error checking: assume only correct values will be provided +
- +
-===Questions to answer=== +
-  * What does the **<nowiki>$*</nowiki>** variable do? +
-  * What does the **&** symbol do? +
-  * What is this script doing? (think general operation/end product) +
-  * How is it doing this? +
-  * Reverse the order of processing (if it goes least to greatest, you want it to become greatest to least) by making a change to how the script operates (do not reverse sort the output and call it a day). +
-  * Comment the script and include your updated code below +
- +
-Please respond to all questions either directly after, under, or in an otherwise clearly identified manner. +
- +
-===Commented, Reverse Ordered Script===   +
-Place your code to the updated script here, or put it in your EoCE **0x0/** subdirectory as a script. +
-   +
-<code bash> +
-# Your commented, reverse-order-of-processing script +
-</code> +
- +
-====0x1: Second Sight==== +
-As a side job to help you through school, you've become employed at a local microblogging and meme archival firm as their head UNIX IT lead. Your run-of-the-mill tasks include setting up single-purpose web pages and web-browsable images to aid the researchers in tracking the evolution of memes. +
- +
-Everything was going fine, until one day a researcher, with freshly obtained meme from a multi-seeded bittorrent transfer, experienced a hard drive failure. +
- +
-Preservation of this meme is downright //critical// to on-going research, and with seconds to spare before the system locks up, you manage to do a memory dump of the region of RAM containing the downloaded meme data, and transfer it to another system before it becomes unresponsive. +
- +
-The last thing you see on the screen before the system locks up is a hex address of the table of contents and its octal length: +
- +
-  * address (in hex): **0x1ced3** +
-  * length (in octal): **130** +
- +
-Hard drive replaced and OS reinstalling on the researcher's computer, your task is now of equal importance: pick out the file fragments from the raw memory dump, and assemble them all into one file, meeting specifications laid out by the researchers and chief meme archivist. +
- +
-The air is thick with anticipation. +
- +
-This is the moment you've been working towards your whole life. +
- +
-You pause and do a quick tai chi exercise to calm the mind and gather some inner energy. Eyes closed. Deep breath in. Deep breath out. Your eyes snap open and shine with a fierceness and determination that would make any obfuscated data quiver. +
- +
-It is go time. +
- +
-===The file=== +
-Located in the **0x1/** subdirectory is a file called **memdump.ram**, which you will operate upon. +
- +
-There is a companion file called **dectohex.c**, which may be of some value, directly or indirectly. +
- +
-===Process=== +
-The file you seek has been broken up into separate parts, each potentially encoded or encapsulated in some way. +
- +
-To make matters more interesting, the file fragments are located in a raw memory dump, which you'll have to perform some minor data recovery techniques on to get them out and further massage them. +
- +
-There is a table of contents index located within this memory dump... it is of the following format: +
- +
-<nowiki>-toc-filename:offset,length;filename2:offset,length;...;-toc-</nowiki> +
- +
-To make things more interesting, the **offset** is stored as a hexadecimal value. +
- +
-The **length** is recorded in octal. It represents the total number of bytes contained in the entry (including the start). +
- +
-Be mindful of the base. +
- +
-Luckily, you know where to get the table of contents from memory. From there, you can reconstruct the means to access the remaining file fragments. +
- +
-===Useful tools=== +
-You may want to become familiar with the manual pages of the following tools (in addition to tools you've already encountered): +
- +
-  * **dd**(1) +
-  * **bc**(1) +
-  * **netpbm**(1) +
-  * **pnmscale**(1) +
- +
-Additionally, looking through any companion files provided in this project may offer you some unique value. +
- +
-===Resolution=== +
-Successful extraction, conversion, and reassembly will result in the following criteria being met: +
- +
-  * Resulting image has been scaled approximately 2x to a resolution of 414x418 +
-  * Image has been converted to **PNG** format and is of appropriate resolution named **meme0531.png** +
-    * you may want to toss this image in your web directory and view it to make sure everything went according to plan. +
-  * Image has been placed in your EoCE **0x1/** subdirectory, which will be submitted along with your other EoCE materials. +
-  * All steps taken should be in a file called **0x1steps**, also located in your EoCE **0x1/** subdirectory. Like the steps files in our early projects, this should detail the steps taken from start to completion. If it can fully automate the process, all the better. +
- +
-====0x2: Behind the Lines==== +
-In the **0x2/** subdirectory are a number of files. Glance through them and get famililar with the data and any patterns present. +
- +
-You need to do the following: +
- +
-  * Figure out how to compile **sprite.c** +
-  * **sprite.dat** is the data file the program will operate on. +
-  * When you run the program, you need to give it the path and filename of a PNG file you wish it to create (from the data file's contents). +
-  * Open up the various provided data files, see if you can figure out what is going on. +
-  * Install a copy of other data files as **sprite.dat** and run it to create the resulting image. +
-  * View these produced images and determine what is going on. +
- +
-Once you have a feel for things, I'd like for you to do the following: +
- +
-  * Determine your **UserID** (UID). +
-  * Create 150x300 pixel images (using sprite.c and related data files) of each of the numbers in your **UID**. +
-  * Using ImageMagick (such as the **composite** or **convert** tool-- be sure to check the manual page) I would like you to place these smaller 150x300 numbers onto a larger 800x600 image (black background), so that when opened and viewed, your UID is seen. +
-    * Vertically center the numbers, so that there are approximately 150 pixels on either side. +
-    * Horizontally space the numbers, so that they are fairly even in their distribution. Your UID should be readable from left to right. +
-  * Make the 3rd digit from the left (the 10s place of the number) be blue. +
-  +
-Describe the steps you took here (or in some sort of steps file in your **0x2/** subdirectory). +
- +
-Organize any resulting files within your **0x2/** subdirectory, which will ultimately become part of a gzipped tar archive you will submit (using the command-line **submit** tool) when complete with this EoCE. +
- +
-====0x3: Dismal Arithmetic==== +
-As discussed here: +
- +
-  * https://www.youtube.com/watch?v=cZkGeR9CWbk +
- +
-Dismal Arithmetic is an exploration in conceptual arithmetic toning, where "arithmetic" as we know it is thrown out the window and replaced with simple rules. +
- +
-First of all, there are no carries. Second, we only really have addition and multiplication to work with. +
- +
-For example, in the case of addition, we take the larger of the two values. +
- +
-  * 6 + 4 is 6 +
-  * 2 + 9 is 9 +
-  * 3 + 3 is 3 +
- +
-With multiplication, we pick the smaller of the two numbers present: +
- +
-  * 3 x 2 is 2 +
-  * 4 x 9 is 4 +
-  * 5 x 5 is 5 +
- +
-===Your Task=== +
-It is your task to write a script that can produce an addition or multiplication table, with the particular mode of operation given as command-line arguments. +
- +
-Given no arguments, we display a multiplication table defaulting to a starting value of 1 and an ending value of 9. +
- +
-<cli> +
-$ ./0x3 +
-  * |                   9 +
-----+------------------------------------ +
-  1 |                   1 +
-  2 |                   2 +
-  3 |                   3 +
-  4 |                   4 +
-  5 |                   5 +
-  6 |                   6 +
-  7 |                   7 +
-  8 |                   8 +
-  9 |                   9 +
-</cli> +
- +
-The first argument can be a '+' or a '*', which can alter the behaviour of the script: +
- +
-<cli> +
-$ ./0x3 + +
-  + |                   9 +
-----+------------------------------------ +
-  1 |                   9 +
-  2 |                   9 +
-  3 |                   9 +
-  4 |                   9 +
-  5 |                   9 +
-  6 |                   9 +
-  7 |                   9 +
-  8 |                   9 +
-  9 |                   9 +
-</cli> +
- +
-We can override the starting value next: +
- +
-<cli> +
-$ ./0x3 + 4 +
-  + |             9 +
-----+------------------------ +
-  4 |             9 +
-  5 |             9 +
-  6 |             9 +
-  7 |             9 +
-  8 |             9 +
-  9 |             9 +
-</cli> +
- +
-And also ending: +
- +
-<cli> +
-$ ./0x3 '*' 2 7 +
-  * |             7 +
-----+------------------------ +
-  2 |             2 +
-  3 |             3 +
-  4 |             4 +
-  5 |             5 +
-  6 |             6 +
-  7 |             7 +
-</cli> +
- +
-We can also go backwards: +
- +
-<cli> +
-$ ./0x3 '*' 6 0 +
-  * |               0 +
-----+---------------------------- +
-  6 |               0 +
-  5 |               0 +
-  4 |               0 +
-  3 |               0 +
-  2 |               0 +
-  1 |               0 +
-  0 |               0 +
-</cli> +
- +
-===Your Code=== +
-You can put your code for here: +
- +
-<code bash> +
-# Your code +
-</code> +
- +
-Or, you can place your solution in the **0x3/** directory of the eoce project. +
- +
-====0x4: Inquisition==== +
-During some standard time between now and 05:29:59pm (that's 17:29:59 in 24-hour time) Wednesday, December 11th, 2019, you are to approach me to perform an in-person knowledge assessment. This is to help ensure consistency and validity of the other work you are performing on the EoCE (which of course you are following the rules and doing it all yourself with no outside help). +
- +
-Valid times include any remaining class or office/lab hours **with no structured/scheduled activities**, or any of the listed finals week availabilities. +
- +
-Note that you only have a single opportunity to take this (no make sure you allocate yourself an adequate amount of time). +
- +
-__Pro tip__: Don't wander in 30 minutes (or similarly time deficient) before a deadline and expect an extension/more time to work on it. +
- +
-When ready, please proceed: [[/ipka/SEMESTER/unix/USERNAME|UNIX IPKA]] +
- +
-====0x5: What You Leave Behind==== +
-After an exciting and intellectually challenging run, we're arriving at the end of this semester's journey. Some will be moving on, others sticking around for more. I make it a practice to listen to your thoughts and suggestions. The course, as we all experienced it, unfolds in a manner pertaining, in part, to how you respond to concepts and topics (do we need more time, can I crank it up a couple notches, etc.) so each semester and each class is entirely different from any other- because of each of you, and all of us, working together and learning together. +
- +
-So, searching deep down within your soul- balancing reason with emotion, and considering attendance and timeliness; what grade do you feel you deserve for this course, and why? Justify your answer based on your own perceived performance to course ideals and content, not on need or desire. +
- +
-Also, answer me the following: +
- +
-  * Of all the work you've done this semester in this course, identify something that was meaningful to you. What is it? +
-  * Why does it stick out in your mind? Explain. +
-  * How did you feel about the course? +
-  * Was it useful/interesting to you? +
-  * What was your least favorite aspect, and why? +
-  * Any comments, suggestions? +
-=====Submission===== +
- +
-====EoCE document==== +
-All responses to questions, unless specifically indicated otherwise, should be addressed on this document (or the intended wiki document). +
- +
-Please edit the appropriate section and provide the necessary information. +
- +
-====File Submission==== +
-For any other specific deliverables, if using a project directory tree you can obtain a copy of, when ready, submit it using the **Makefile**, as follows: +
- +
-<cli> +
-lab46:~/src/DESIG/eoce$ make submit +
-... +
-</cli> +
- +
-If no formal project, you can submit requested files (preferably in an archive of their own), using the **submit** tool. A project called **eoce** has been likely set up for this purpose. +
haas/fall2019/unix/projects/eoce.txt · Last modified: 2019/11/13 13:05 by wedge