Python Programming 2: Algorithms, modeling, and data processing

Draft copy of a syllabus for a proposed second course in python programming fundamentals designed for the Community College of Allegheny County. Scheduled first session: Spring 2018

Jump to a section:

Catalog Description
Course Scope
Learning Outcomes
Listed Topics
Learning Cycle
Assessment
Student Resources
Outside References
Syllabus Author

Course Catalog Description

Building on language foundations developed in Python 1, this second semester python course focuses on the language's powerful file processing and data manipulation tools. Students will explore core libraries that allow programs to access operating system services, manipulate data of many types, interact with the user through graphical user interfaces (GUIs), and crunch out data metrics. This fast-paced course is project-focused and builds not only python programming skills but also best practices in object-oriented software design.

back to top

Course Scope

The following flow chart depicts the scope of this proposed second course in python programming. Three semesters of python coursework is included in the chart to provide context for the four course components under study in this course--these are the colored rectangles.

The knowledge blocks shown in the diagram are organized into learning components symbolized by the rectangles with thick borders and bold text. These larger, umbrella-like components are broken down into smaller learning modules which progress in a sequence shown with arrows flowing throughout the diagram.

Learning to program in any computer language is an iterative process in which more advanced learning depends on mastery of language fundamentals. The core of the python language is encapsulated in the Language Core and Object Oriented Python components in the diagram. Together, these two components represent the scope of a first course in Python.

Once the core components of a language are internalized, carrying out more complex computations with a variety of data types and design goals becomes possible, and these are the "middle four" components in the diagram below. They may be taught in any order, but a suggested sequence is shown in with arrows.

A third course in python with a focus on data process and analysis is also included in the digram. Many of the data processing skills are possible to develop as early as directly following the first two core language components but will be most appropriately learned after the python 2 modules. In place of data analysis, a python 3 course could also emphasize a different sub-field of python programming, such as hardware interfacing, database connections, mapping tool back-ends, or web-related technology.

back to top

Learning Outcomes

File manipulation and data storage

  1. Identify and load a python library suitable for processing files of a given type
  2. Integrate a python file processing library into a program to accomplish application objectives
  3. Integrate an operating system process into a given program, making use of core python OS-related objects

Graphical User Interfaces (GUIs)

  1. Create instances of the core python graphical user interface (GUI) components: buttons, text boxes, select boxes, and images
  2. Use data-display related GUI components to convey meaningful information extracted from a simple data set
  3. Conduct a user interview to determine design requirements for a GUI and implement those findings into a working program
  4. Implement a user-centered design in python and gather user feedback to a prototype

Algorithm Design

  1. Model the core phases of smart algorithm design with a simple, non-technical design problem
  2. Convert a given algorithm written in English into working python code and test its functionality
  3. Design a new algorithm to solve a technical problem
  4. Implement the new algorithm in python and test its functionality

Simulation

  1. Implement the classic Monto Carlo simulation method to a given competitive modeling scenario
  2. Creatively design and implement a simulation of a given human or system interaction using best practices in design phases

General

  1. Using a version control system, like git, curate an online portfolio of working and documented python code from at least 2 course projects
  2. Effectively discuss their python skills and their applications to an employer during a practice interview
back to top

Listed Topics

File manipulation and data storage

Graphical User Interfaces (GUIs)

Algorithm Design

Simulation

General

back to top

Course learning cycle model

The course is organized into four components which are high-level learning categories composed of sub-components called modules. Each module evolves through four distinct phases: introduction, guided practice, independent practice, and feedback on final products. Once each module in a component has been mastered, students are ready to plan and implement a culminating project. This process is visually represented in the following flow chart:

back to top

Assessment of learning objectives

Assessment Philosophy

As a lab-like course built around using python code to solve non-trivial, business-related problems, course assessments in python 2 are based on fully-baked student work products. In relation to the course learning model diagrammed above, student work projects emerge at the end of each module and at the conclusion of the component's culminating project.

The instructor provides incremental feedback to students during the course of the module's individual project work time--often called formative assessment. Small misunderstandings or trouble spots that emerge inside a module can be ironed out before they impede the larger learning goals of the component. After all modules are mastered and a final project completed the instructor offers additional, formal feedback concerning the project's alignment to its design specifications is provided.

Students complete the following steps in in advance of their presentation and feedback session for their culminating project:

back to top

Using design criteria alignment in place of rubrics

The best assessment tools are those with which the students directly engage in creating and using. This can take the form of a class-generated project rubric, for example. As students create assessment criteria prior to implementing a project, the resulting work is both more likely to align to the assessment criteria and meaningfully assist students in completing their work. When that rubric is then used by the students to assess their own work, valuable mental processes are underway which tend to naturally improve skill and confidence.

Rubrics are widespread and useful tools for many types of student work outside of the technical design realm. In a coding class, such as this python 2 course, the process of assessing student code against initial design requirements organically takes the place of rubric-based assessment without displacing its generic value as a teaching tool.

back to top

Mapping project performance to course letter grades

The following table serves as a possible correlation guide between module and component project assessment and the formal course letter grades instructors assign to each student at the conclusion of the semester:

Course Letter grade Student performance criteria
A Independent practice for each model is completed and documented. Culminating projects for each component meet all specified design criteria. Component reflections show evidence of synthesis with other technical learning domains.
B Independent practice for each module has been attempted but not consistently documented to reveal command of the code. Culminating projects for each component meets some but not all design criteria. Component reflections show moderate thought, limited to current learning topics.
C Independent practice for 1/2 to 2/3 of modules has been attempted but not consistently documented. Culminating projects for each component meets some but not all design criteria. Component reflections show low levels of thought relative to A and B work.
D Independent practice for less than 1/2 of modules has been attempted but not consistently documented. Culminating projects for each component meets few, if any design criteria. Component reflections are incomplete.
F Independent practice for 1/4th or fewer of modules has been attempted and not consistently documented. Culminating projects were not meaningfully attempted. Component reflections were not attempted.
back to top

Recommended student resources

back to top

References for syllabus design

The following resources were consulted in the design of this course syllabus:

back to top

Syllabus Author

Eric Darsow, Faculty, Computer Information Technology department, Community College of Allegheny County

back to top
`