CSC 223 - Python for Scientific Programming & Data Manipulation, Fall 2023, TuTh 4:30-5:45 PM, Old Main 159.

My Thursday December 14 office hour moves to 2:30-3:30 PM so I can attend a thesis presentation.

My office hours are the regular ones that week.
 

Use Firefox or try other non-Chrome browser for these links. Chrome has problems

Take a look at the Proposed Data Science undergrad minor which should kick in fall 2024.

Peter is the CSC223 tutor on this schedule.

Office Hours Monday 3-5 PM, Wed. 3-5 (Zoom only), Thurs. 9:50-10:50 or by appt. All available via Zoom.
We will distance 6 feet in my office, so plan to attend office hours online.
Office hours Zoom: https://kutztown.zoom.us/j/94322223872
Links for CSC223 Zoom room and student instructions for using Zoom.
The Zoom link for our course is on the course D2L page Content tab.

 

Dr. Dale E. Parson


First day handout (syllabus that is specific to this semester).
PLEASE FILL OUT & EMAIL ME THIS FORM THE FIRST WEEK OF CLASS.


RESOURCES & HANDOUTS


Weekly class time materials
Week 1: Python Resources and Python Basics
   
Read and work along with Sections 1 through 5 of the Python Tutorial in parallel to our class time examination of Python basics.
Week 2 is about functions and function-like constructs in Python.
Week 3 is the sorting example and Assignment 1 overview.

ASSIGNMENTS

There is a 10% per late late penalty for projects that come in after the due date.     


Assignment 1 Specification, code is due by end of Friday September 29 via make turnitin on acad or mcgonagall.
    Added 9/18, How to interpret diff files when make test reports an error.
    Added 9/18 Setting up putty and notepad++ including notepad++ tab-spacing.
     We will discuss the effects of logarithmic compression of exponential data relationships regarding Hawk Mountain data.
        See Q2 and Q6 results as they relate to Figures 6 & 7 from last fall's CSC458.
        See also LinearExpLog10.py and LinearExpLog10.csv as a toy example.
        We will discuss this code in acad in relation to logarithmic data compression.
        $ ls -d ~parson/Scripting/CSCx23Fall2023DemoRegression*
            /home/kutztown.edu/parson/Scripting/CSCx23Fall2023DemoRegression
            /home/kutztown.edu/parson/Scripting/CSCx23Fall2023DemoRegression.zip
        Per my email of 9/22, please comment out this line in assn1's makefile by inserting a # at the front:
            # $(PYTHON) diffcsv.py CSC223f23CSVassn1.csv  $(REFFILES)/CSC223f23CSVassn1.csv
        Also, you may need to change permissions on your account's public_html directory to make make graphs accessible to a browser.
            chmod  -R  o+r+X  ~/public_html
        Depending on KU IT account settings that may not work. You do not need to make graphs to pass tests.

Assignment 2 Specification, code is due by end of Thursday October 19 via make turnitin on acad or mcgonagall.

Preparation for Assignment 3
    Three different techniques for iterating through CSV tables and deriving per-row attribute values.
        This approach avoids mapping header names to column numbers for every row of data processed.
        CSC223f23Partial.zip and CSC223f23Partial are under ~parson/Scripting on acad.
        Techniques include using Python classes/objects, closures, and partial functions.
    Some Pandas Series, pre-DataFrame, Relational Operation discussions.

Assignment 3 is on deriving data attributes using Python object classes and closures.
    It is due Tuesday November 21 at 11:59 PM via make turnitin.
   
(Due date changed from original November 20.)

 Assignment 4 is on using Python generators in a PULL dataflow graph without forks.
    It is due Saturday December 9 at 11:59 PM via make turnitin.

DUE DATE MOVED TO END OF MONDAY DEC 11 due to a glitch in access to student file system.
Even if you cannot see your files on acad, a student has informed me that ssh'ing into mcgonagall works OK.
 
     November 9 overview of Dataflow Graphs for ~parson/Scripting/CSCx23Fall2023DemoDataflow
    Added 12/6/2023: I will not accept late assignments after 9 AM on Tuesday December 12.
        I will go over my solution in our final exam slot 12/12 for students doing Assignment 5.
        From the first day handout: "Late penalty is 10% per each day late, up until I go over the solution.
            Any assignment turned in after that is worth 0%." I will send Assn4 solution out around 9 AM.


Assignment 5 (optional) is a re-coding of Assignment 4 using a PUSH dataflow graph.

# Due Date: No later than 9 AM on Friday December 15 via make turnitin.
#   This assignment is OPTIONAL and I will count it only for
#   students who have turned in assignments 1 through 4.

#   For students submitting 1 through 5, your final grade will be
#   the larger of the average of (assn1 thru assn4) and the average
#   of (assn1 thru assn5). You may skip doing assn5, and I will
#   NOT accept assn5 for anyone who has not turned in (assn1 thru assn4).
# Must be in by the above deadline in order to count because of KU grading deadlines, else 0%.

 
ZOOM VIDEO ARCHIVE. Use Firefox or try other non-Chrome browser for these links. Chrome has problems.
    
August 29 Class First-day handout, overview of the course, logging into acad & mcgonagall Linux servers for your projects.
August 31 Class Setting up python and ipython aliases on acad. Interactive walk through of primitive data types & some aggregate types
    (int, float, str, None, list, tuple, set, & frozenset types. The mutable object types are in bold.) Next time dicts (a.k.a. maps).
September 5 Class Completed data types with dictionaries, went over if-for-while control constructs, functions, and Python's use of indentation.
September 7 Class Completed higher order functions,
, e.g., map, reduce, filter, and related material.
September 12 Class Survey sorting algorithms; function genData() illustrates list operations & types of loops. Start assn1 overview.
    Thursday the 14th will will go over Assignment 1 in detail. Tuesday the 19th will be a work session.
September 14 Class Went over Assignment 1 handout. Best order for work is STUDENT 1, 2, 3, 4, then 5.
    Construct generatorA and generatorB objects identical to code in CSC223f23CSVpre1.py.
September 19 Class Work session with Q&A about Assignment 1. No class Thursday 9/21, see you next Tuesday after 3 days away.
September 26 Class Q&A on Assignment 1. First 25ish minutes are STUDENT 4 & 5. STUDENT 3 also covered later.
September 27 1 PM Office Hours Q&A on assn1 Parts 2 & 3 (in that order) in DETAIL.
September 28 Class Student work habit to project grade correlation, then Assignment 2.
    Next Tuesday October 2 will be a work session. Start ahead of time & attend ready to work.
October 3 Work session on Assignment 2 with some recorded Q&A. The first minute or so is missing the muted voice.
    See Addendum at bottom of Assignment 2 handout about using README.txt & CSC223f23WAVEassn2.csv instead of make graphs for debugging.
October 5 Class went over using Python objects, closures, and partial function bindings to solve per-row data derivation problems.
    The first minute-ish was muted again.
October 12 Class went over use of Numpy arrays in Assignment 2 then Pandas 1D Series and Numpy arrays here.
October 17 Class I missed hitting the Record button. :-( But there IS GOOD NEWS! :-)
    I followed this script exactly, so everything I covered is in this detailed trace of PRE_DATAFRAMES down to the bottom.
    The October 12 class went over the first half of that doc. The October 19 class will reinforce concepts from October 17.
    Emphasis of Oct. 17 was using csv.reader to avoid or perform reads of big datasets into memory. I will review highlights.
October 19 Class went over ~parson/Scripting/notpandas/monthly_raptors/aggregateMonthly.py
        Available as a zip file here.
October 24 Class went over
~parson/Scripting/notpandas/monthly_raptors/loadAndStoreNumpy.py, started loadAndStorePython.py.
October 26 Class loadAndStorePython.py, also closures/generators/coroutines in ~parson/DataMine/coroutine.py.
October 31 Class Python classes, objects, and closures in preparation for Assignment 3.
November 2 Class went over Assignment 3 handout code & document.
November 9 Class went over PULL-dataflow generator code. The 4th was an unrecorded work session.
   
Dataflow Graphs for ~parson/Scripting/CSCx23Fall2023DemoDataflow
November 14 Class resumed PULL-dataflow then went over PUSH-dataflow code from Dataflow Graphs.
November 16 Class finished PUSH-dataflow and started Threaded Dataflows in the same directory.
November 21 Class Went over Assignment 4 handout, see above. No class on the 28th, see work session the 30th.
November 30 Class Brief recording of a few administrative matters, then Q&A for Assn4 work session.
December 5 Class Went over optional Assignment 5 (PUSH) rewrite of mandatory Assignment 4 (PULL) dataflow pipelines.
December 12 Final exam session went over Assignment 4 solution as it relates to Assignment 5.