Table of Contents

Corning Community College

CSCS1320 C/C++ Programming

PROJECT

PROJECT: Grade Figure-Outerer (gfoX)

Objective

To successfully obtain, input, calculate, and derive your current overall status in the course through the use of a spreadsheet.

Abstraction

As an exercise in toning your abstraction abilities (literally seeing one thing, but understanding and using it as something else), there will be a number of 'generic' terms used throughout this (and other) documents throughout the course, requiring you to substitute in the pertinent information (else face confusion or error).

Some examples:

  • yourusername - where you see this (likely in a config file or command-line argument), you are NOT to literally type in y-o-u-r-u-s-e-r-n-a-m-e, but instead, substitute in YOUR lab46 username.
  • desig - different classes have different class designations. To make one universal document pertinent to ALL classes, specific examples will instead use 'desig', where you must substitute in the class desig of the class YOU are taking and acting upon in that moment. Example class desigs:
    • c4eng - ENGR1050 “C for Engineers”
    • cprog - CSCS1320 “C/C++ Programming”
    • unix - CSCS1730 “UNIX/Linux Fundamentals”
    • data - CSCS2320 “Data Structures”
    • discrete - CSCS2330 “Discrete Structures”
    • comporg - CSCS2650 “Computer Organization”
    • sysprog - CSCS2730 “Systems Programming”

This sort of abstraction is very similar to that we will find in our utilization of variables in programming, where we can have a “name”, but the data associated with it can change based on various conditions.

Do not be a literalist computer! Start to exercise your abstraction abilities.

2023/09/10 10:37

Locational Awareness

This document is written with TWO locations in mind:

  • lab46 (the system you may retrieve resources and SUBMIT projects)
    • identified in examples with the use of the lab46:~$ prompt
  • your pi (the system you will transfer resources to/from, and WORK ON/COMPLETE projects)
    • identified in examples with the use of the yourpi:~$ prompt

There are commands you can ONLY run on one system or the other. Pay attention to any prompt cues in the given examples (or section headings, context of language leading up to any examples).

For example:

  • YOU cannot install software on lab46. You don't have access.
  • projects CANNOT be SUBMITTED on your pi.

Please pay attention to your prompt, so you can perform the needed activity on the correct system.

2023/09/10 10:37

Background

For this project, you will be installing the sc spreadsheet on your Raspberry Pi, and creating a spreadsheet using it to tabulate and compute your current status in the class.

Update the package database and apply updates on your pi

Don't forget to update the package database and apply any available upgrades:

yourpi:~$ sudo aptitude update
...
yourpi:~$ sudo aptitude upgrade
...

Getting an error when trying to run 'aptitude', such as “command not found”, or “no such file or directory”? It likely means you need to install it: sudo apt-get install aptitude

Install sc on your Raspberry Pi

To proceed on this project, you will also need to install the 'sc' package:

yourpi:~$ sudo aptitude install sc
The following NEW packages will be installed:
  libncurses5{a} sc
0 packages upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 263 kB of archives. After unpacking 606 kB will be used.
Do you want to continue? [Y/n/?] y
Get: 1 http://raspbian.mirror.constant.com/raspbian buster/main armhf libncurses5 armhf 6.1+20181013-2+deb10u2 [75.3 kB]
Get: 2 http://raspbian.mirror.constant.com/raspbian buster/main armhf sc armhf 7.16-4 [188 kB]
Fetched 263 kB in 10s (26.1 kB/s)
Selecting previously unselected package libncurses5:armhf.
(Reading database ... 98655 files and directories currently installed.)
Preparing to unpack .../libncurses5_6.1+20181013-2+deb10u2_armhf.deb ...
Unpacking libncurses5:armhf (6.1+20181013-2+deb10u2) ...
Selecting previously unselected package sc.
Preparing to unpack .../archives/sc_7.16-4_armhf.deb ...
Unpacking sc (7.16-4) ...
Setting up libncurses5:armhf (6.1+20181013-2+deb10u2) ...
Setting up sc (7.16-4) ...
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for libc-bin (2.28-10+rpi1) ...

yourpi:~$ 

sc instructions

There are two sources of information you can reference for sc operation.

manual page

With the installation of sc the manual page is made available for viewing ('q' to quit, up/down pageup/pagedown to view):

yourpi:~$ man sc

sc tutorial

In the manual page there is given reference to an available sc tutorial, also installed with the sc package (tutorial itself tells you how to exit):

yourpi:~$ sc /usr/share/doc/sc/tutorial.sc

saving

One can use the P command to “Put” the file to the filesystem (ie saving).

Looking up your 'status'

Ever since the first projects came due and were evaluated, your results were accessible to you on lab46 via the status command:

lab46:~$ status desig

Furthermore, if you were curious about the breakdown of points, you could also append the 'detail' argument to get an expanded view of information:

lab46:~$ status desig detail

NOTE: because 'detail' is an optional argument, the whole command may be written (for reference) as: 'status desig [detail]'; the square brackets denote optionality. You do not type them, instead, you either type what is in them, or you do not, depending on desired functionality.

Calculating your grade

Your grade is calculated from four distinct components, three of which you regularly encounter each week through the semester, and the final one at the end. Each is worth a certain amount of overall points, that when added up equals 104 points. With their individual point values, they are:

  • projects (52 points)
  • journal (13 points)
  • participation (13 points)
  • eoce (26 points)

Within each category, you tally up two different accumulation of points:

  • all the points YOU got
  • all the points POSSIBLE to get

For example, take this sample participation dataset:

1:wcp1:final tally of results (1/1)
2:wcp2:final tally of results (2/2)
1:wcp3:final tally of results (1/4)
5:wcp4:final tally of results (5/8)
4:moar:final tally of results (4/0)
  • this person got 1+2+1+5 points (and 4 bonus points), for a total of: 9 + 4 = 13 points
  • the total amount of points available (at this point) was 1+2+4+8+0, or: 15 points

A note on 'bonus' points: in each category, there is the potential for the accumulation of bonus/extra/moar points. These are added into the mix, BUT for the purposes of grading, the final tally of YOUR points can NOT exceed the final tally of total points.

In this case, the person amassed 13 total points, out of a total of 15 points: for purposes of grading, for their participation score, it would be 13/15. Bonus points only apply to the particular category in which they were earned (they cannot be applied to a different category).

Continuing this example, the person got 13/15ths of the 13 available points for that section (participation is worth 13 total points). We would calculate that “out of 13” result as follows:

  • (13/15)*13 = 11 (so at this point, they'd have 11 out of 13 participation points)

Do the same for projects (52) and journal (13). For now, the total possible grade points you can receive is 78 total points (52+13+13). So that is what your spreadsheet should reflect.

Your letter grade is obtained by determining your score (out of 100) and selecting the letter grade pertaining to that value.

Spreadsheet

For this project, your task is to make a spreadsheet that, in clearly readable and organized fashion, plots out your various results on the different deliverables for the class, ultimately displaying your current overall grade for the course.

I want to see:

  • each project (identified), along with the points you got, along with the total points possible
  • for a “dashboard” quick glance, calculate your project “score” out of 100 (just to give you a feel for how you did on a particular project)
  • have a category for bonus points you have earned
  • have a projects score tally (all your points earned)
  • have a projects total tally (all the points possible to earn)
  • calculate your projects “score” out of 100 (just to give you a feel for how you did on the category overall)
  • calculate your projects “points” (out of 52), and display it under an identifiable label
  • do the same for the participation and journal categories as well
  • add up your category points (52+13+13=78), and have these be near each other in your spreadsheet
  • calculate your actual current score for the class (based on a total of 78 points, that you could then determine against the letter grade ladder where you fall)
  • do note, the aim and spirit of this project is to use the SPREADSHEET as the calculator. I want to see embedded equations, NOT pre-calculated values in your spreadsheet data.

Note that you may have to make your terminal window larger, or just deal with the need to scroll through the spreadsheet when enough data is accumulated. If you'd like to continue using this spreadsheet for additional points accrued in the coming weeks, you may want to plan ahead and set up your “final results” tally with some space away from the growing list of results.

Time-sensitive data

As gfoX may be issued multiple times during the semester, each iteration is to capture the following snapshot of data in its reporting results:

  • gfo0: start of semester through and including week 4 deliverables
  • gfo1: start of semester through and including week 8 deliverables
  • gfo2: start of semester through and including week 12 deliverables

Example

Here is a mock-up example spreadsheet that I did, organizing information in the fashion useful for being informative and pertaining to this project:

Submission

To successfully complete this project, the following criteria must be met:

  • Solution must utilize the algorithm/approach presented above
  • Output must conform to the specifications presented above
  • Submit a copy of your solution to me using the submit tool.

To submit this to me using the submit tool, run the following command at your lab46 prompt:

lab46:~/src/SEMESTER/DESIG/gfoX$ submit DESIG gfoX gfoX.sc
Submitting DESIG project "gfoX":
    -> gfoX.sc(OK)

SUCCESSFULLY SUBMITTED

You should get some sort of confirmation indicating successful submission if all went according to plan. If not, check for typos and or locational mismatches.

Evaluation Criteria

What I will be looking for:

39:gfoX:final tally of results (39/39)
*:gfoX:gfoX.sc data points entered as numbers and adequately labelled [13/13]
*:gfoX:gfoX.sc all calculations done as equations in spreadsheet [13/13]
*:gfoX:gfoX.sc calculations reference cells AND use spreadsheet functions [13/13]

Additionally:

  • Solutions not abiding by SPIRIT of project will be subject to a 25% overall deduction
  • Solution output lacking ORGANIZATION ior are not easy to read (within 90 char width) are subject to a 25% overall deduction
2023/09/10 20:59