User Tools

Site Tools


Sidebar

projects

uxi0 (due 20180117)
wcp1 (due 20180117)
adm0 (due 20180124)
wcp2 (due 20180124)
pbx0 (due 20180131)
wcp3 (due 20180131)
pbx1 (due 20180207)
wcp4 (due 20180207)
pbx2 (due 20180214)
wcp5 (due 20180214)
usr0 (due 20180228)
wcp6 (due 20180228)
pbx3 (bonus due 20180228)
upf0 (due 20180307)
wcp7 (due 20180307)
upf1 (due 20180314)
wcp8 (due 20180314)
spf0 (due 20180321)
pwn0 (due 20180321)
wcp9 (due 20180321)
gfo0 (due 20180411)
wcpA (due 20180328)
wpa0 (bonus due 20180411)
wcpB (due 20180411)
gtf0 (due 20180418)
wcpC (due 20180418)
icp0 (due 20180425)
haas:spring2018:unix:projects:gtf0

This is an old revision of the document!


Corning Community College

CSCS1730 UNIX/Linux Fundamentals

Project: GRAPHING TREND FIGURES (gtf0)

Errata

  • any bugfixes or project updates will be posted here

Objective

Recently, you spent some quality time with your raw class status data and writing a script to scrape, process, and output meaningful results.

Here we will be taking that to the next step, in appealing to our more visual tendencies: you will be writing a script and coordinating the various tools necessary to graph your project results against the class high, average, median, and low scores for each project (effectively, a graph plotting 5 different trend lines).

Background

Visualization has a number of uses, not only in computing, but in general: our minds are visual engines; we have phrases like “a picture is worth a thousand words”, and there is a considerable amount of truth to that. We can only process so much discrete data at any given moment, yet when there exist instances where we need to process considerably more data than we can take in, we turn to things like visual representations of the data.

By eliminating the exact, and potentially numerous discrete numeric values that would be impossible to keep track of (and formulate proper analyses of), by visually representing the data, both the general sense of the values are preserved, without overwhelming us, and allowing to take in a much broader picture that may be more challenging to do if all we had were an endless stream of numbers to evaluate.

This project has us taking that step, taking our data we now have experience in gathering, and plotting it against various class benchmarks, so we can better gauge our overall progress in the class.

Plotting with gnuplot

For this project, we will be making use of the venerable gnuplot tool. Like many powerful tools we have encountered this semester, we seek only to scratch the surface, and start to familiarize ourselves with the powerful capabilities this resource offers us.

Following will be some usage examples to help you get a

Your Task

Your task for this project is as follows:

  • write a script gtf0.sh that when run:
    • from the class status page, scrapes:
      • the list of projects, the lowscore, average, median, and hiscore values of each of the evaluated projects
        • places these values in columns (a projects column, a lowscore column, an average column, etc.) in a gtf0.dat file
    • from your ~/info/status/unix.projects file in your home directory:
      • obtains the scores and totals of each of the evaluated unix projects
      • calculates the score (out of 100) of each individual project
        • places these calculated scores as a final column in your gtf0.dat file
    • constructs a gtf0.gp gnuplot file that:
      • creates a graph title of “USER SEMESTER/DESIG class status”
        • where USER, SEMESTER, and DESIG are replaced with their pertinent (and lowercase represented) values
          • for instance, DESIG in our case is: unix
      • sets a y axis label of 'Value'
      • sets an x axis label of 'Project'
      • sets output destination to:
        • the terminal
        • in png format
        • of a resolution of 1280×1024
      • set a y axis range of -10 to 110
      • sets the y axis tic values to a value of 10
      • sets a grid view
      • establishes a graph key, that:
        • shows and identifies all 5 data points (low, avg, med, hi, your scores)
        • places the key NOT within the main drawing area of the graph (below and in the center would be fine)
      • plots these 5 data sets as individual lines on your graph, using the projects (in the order listed) as the x-axis tic values:
        • each line should be a different, solid color, of a minimum thickness of 2.
        • align each plotted category against the x axis-listed project (ie pbx1 avgscore, median, etc. line up with the pbx1 tic on the x-axis).
        • be sure that each line is identified (titled) by its category (lowscore, avgscore, median, hiscore, yourscore), especially as identified in the graph key
        • your line should is the same, only having a greater thickness (at least 4); this should help it stand out nicely against the rest of your graph.
          • and, plot your line last, that will cause it to draw over any lines it will intersect with

End result

What you are aiming for is a graph that strongly resembles this one:

Project Metrics graph

… only it adds an additional line: YOUR actual scores on the projects.

So this graph will be a nice visual indicator of how you did in various aspects related to the class as a whole.

Submit

Please submit as follows:

lab46:~/src/unix/gtf0$ submit unix gtf0 gtf0.sh gtf0.data gtf0.gp gtf0.png
Submitting unix project "gtf0":
    -> gtf0.sh(OK)
    -> gtf0.data(OK)
    -> gtf0.gp(OK)
    -> gtf0.png(OK)

SUCCESSFULLY SUBMITTED
lab46:~/src/unix/gtf0$ 

I'll be looking for the following:

78:gtf0:final tally of results (78/78)
*:gtf0:gtf0.sh only uses cached status tool output when run [4/4]
*:gtf0:gtf0.sh effectively utilizes variables in operations [4/4]
*:gtf0:gtf0.sh effectively utilizes command expansions [4/4]
*:gtf0:gtf0.sh effectively utilizes regular expressions [4/4]
*:gtf0:gtf0.sh effectively utilizes selection statements [4/4]
*:gtf0:gtf0.sh effectively utilizes looping structures [4/4]
*:gtf0:gtf0.sh effectively utilizes functions in script [4/4]
*:gtf0:gtf0.sh effectively utilizes arrays in script [4/4]
*:gtf0:gtf0.sh is a proper bash script with shabang and exit [4/4]
*:gtf0:gtf0.sh accurately displays values in consistent alignment [4/4]
*:gtf0:gtf0.sh accurately displays values in pertinent categories [4/4]
*:gtf0:gtf0.sh accurately displays values based on current data [4/4]
*:gtf0:gtf0.sh use a status output cache file on given argument [4/4]
*:gtf0:gtf0.sh verifies score and total against detail line items [4/4]
*:gtf0:gtf0.sh no line exceeds 80 characters in total length [4/4]
*:gtf0:gtf0.sh all custom variable name lengths at least 4 symbols [4/4]
*:gtf0:gtf0.sh properly manages input violations [4/4]
*:gtf0:gtf0.sh operates according to specifications [5/5]
*:gtf0:gtf0.sh logic is organized and easy to read [5/5]

Additionally:

  • Solutions not abiding by spirit of project will be subject to a 25% overall deduction
  • Solutions not utilizing descriptive why and how comments will be subject to a 25% overall deduction
    • comments should be consistent in appearance (adopt a style; one that promotes readability)
  • Solutions not utilizing indentation to promote scope and clarity will be subject to a 25% overall deduction
    • indentation should be no fewer than 3 spaces (or 3-space tabs); I prefer 4.
haas/spring2018/unix/projects/gtf0.1523287147.txt.gz · Last modified: 2018/04/09 15:19 by wedge