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:
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
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
File manipulation and data storage
- Identify and load a python library suitable for processing files of a given type
- Integrate a python file processing library into a program to accomplish application objectives
- Integrate an operating system process into a given program, making use of core python OS-related objects
Graphical User Interfaces (GUIs)
- Create instances of the core python graphical user interface (GUI) components: buttons, text boxes, select boxes, and images
- Use data-display related GUI components to convey meaningful information extracted from a simple data set
- Conduct a user interview to determine design requirements for a GUI and implement those findings into a working program
- Implement a user-centered design in python and gather user feedback to a prototype
- Model the core phases of smart algorithm design with a simple, non-technical design problem
- Convert a given algorithm written in English into working python code and test its functionality
- Design a new algorithm to solve a technical problem
- Implement the new algorithm in python and test its functionality
- Implement the classic Monto Carlo simulation method to a given competitive modeling scenario
- Creatively design and implement a simulation of a given human or system interaction using best practices in design phases
- Using a version control system, like git, curate an online portfolio of working and documented python code from at least 2 course projects
- Effectively discuss their python skills and their applications to an employer during a practice interview
File manipulation and data storage
- File types and python object adapters
- Looping through files with dictionaries
- File-based data stores
- Operating system interaction
Graphical User Interfaces (GUIs)
- User-interface GUI components
- Data display GUI components
- GUI Design through user interview
- User-centered design
- Top-down design approach
- Psuedocode versions of algorithms
- Algorithm implementation in python
- Searching, sorting, and traversal algorithms
- Monte carlo simulations
- Simulation design phases
- Model and unit testing
back to top
- Technical interview preparation
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
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:
- Program design specifications
- Program flow diagram adjusted to reflect actual implementation
- Thoughtful responses to "heart-of-the-matter" questions
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.|
Recommended student resources
- Print Book: Python Programming: An Introduction to Computer Science, 2nd Edition, by John Zelle, Franklin, Beedle, and Associates Independent Press. Amazon link.
- Online learning tool: Code Academy's Interactive Python programming course
- Python Software Foundation's Python 2.7 Language reference
References for syllabus design
The following resources were consulted in the design of this course syllabus:
- University of Washington's Python 100 course syllabus
- Harvard University's CSCI E-7 Introduction to Python course syllabus and resource list
- Python Programming: An Introduction to Computer Science, 2nd Edition, by John Zelle, Franklin, Beedle, and Associates Independent Press. Amazon link.
- Think Python: How to Think Like a Computer Scientist, 2nd edition, by Allen Downey, Green Tea Press. Link to PDF of book online.
Eric Darsow, Faculty, Computer Information Technology department, Community College of Allegheny Countyback to top