This course will become read-only in the near future. Tell us at if that is a problem.

Full Description

Course Details

Introductory programming course using the Python programming language. The course will encourage learners to explore fundamental concepts of programming such as data types (strings, integers, floats, &c), lists, tuples, loops, control structures, functions, and more.

Prerequisite(s): Intro to personal computers (Linux, Macintosh, Windows).

Users will need to be comfortable downloading and installing software on their chosen Operating System. Many Unix (including Mac) and Linux distributions already include Python.


Students, teachers, scientists, and people in many walks of life can benefit from knowledge of a programming language. Learning to program offers greater insight into formal logic and the principles of computation. It is easier to complete repetitious tasks when one knows how to make simple scripts. The more active hackers we have the faster our technology and collective culture will evolve.


Novice and intermediate computer users, scientists, teachers, artists, and students.

Learning Resources

Several free books are available:

Learning Style

Collaborative and collective knowledge sharing. Project (experience) based learning.

Learning Outcome(s)

Upon completion of the course, learners will be familiar with the following:

  • Pseudocode
  • Writing Specifications (Program, Inputs, Output, Relationship)
  • Source & documentation
    • PyPi
  • Anatomy of a script
    • Initial comment
    • main()
    • Envoking main()
    • importing a script
  • IDLE
  • Creating and modifying variables
    • Simple assignment (<var> = <expr>) (sticky note on memory location)
    • Simultaneous assignment (<var>, <var> = <expr>, <expr>)
  • Working with various data types:
    • strings
    • numbers
    • tuples
    • lists
    • sets
    • dictionaries
    • bytes
  • Operators
  • Evaluating expressions and statements
  • Iterating over lists, tuples, &c
    • Counted loop (for <var> in <list>:)
  • Indexing and slicing strings, lists, &c (<list>[index])
  • String replacement fields (PyDocs)
    • Format Specifiers
  • Control structures
    • Loops
      • Counted loop (for <var> in <seq>:)
    • Conditional statements
      • if, elif, else
      • while
  • Defining functions
    • Documentation strings
    • Function parameters
  • Accepting user input
  • General debugging
    • Syntax errors
    • Semantic errors
    • Exception handling
      • Creating custom exceptions
  • Creating classes
    • Class instances
  • Creating and organizing modules
    • Importing modules
  • Introduction to Python standard library
    • os
    • glob
    • sys
    • time
    • unittest (Video)
  • Inheritance
  • Comprehensions
  • Decorators
  • Linked lists
  • Abstract Data Types
    • Basic Design Patterns (Video)
  • Metaprogramming

P2PU Source: research regarding Open Educational Resources and Free Software development.This course was inspired by personal/professional research in the realm of Open Educational Resources, such as those available in the MIT Open Courseware and other university courses.

Task Discussion