Computational Literacies Lab


Course Description

This introductory course on computer programming simultaneously teaches beginners the fundamentals of computer programming while using that learning experience as a context for developing pedagogical content knowledge of how programming is most effectively taught and learned. The course is also designed for graduate students in the social sciences, arts, and humanities who want to use computational methods in research or art.

The Pedagogy of Programming follows the curriculum of Making With Code, a two-year CS course developed around the principles of Constructionism and aimed at high school students. This course is divided into two parts, each tracking one year of the curriculum.

Part I

Part I consists of three units: Drawing, Data Science, and Games. These units are a tour through three programming paradigms, or ways of approaching computational problems: imperative, functional, and object-oriented. Along the way, the curriculum is structured to gradually introduce you to the syntax of Python, basic computational ideas such as abstraction, data structures, and algorithms, as well as the tools and practices of the trade.

Part II

The second part of the course follows a spiral curriculum, deepening concepts introduced in Part I while rounding out some of the most important conceptual domains within CS. The three units comprising Part II are Networking, Hardware, and Web Applications.

Learning Outcome and Program Goals

This course's learning outcomes are closely aligned with the UB CS Teacher Preparation Program's CS Content Knowledge outcomes (and also with with the core concepts outlined in New York’s Computer Science and Digital Fluency Standards).

The course also focuses on several of the UB CS Teacher Preparation Program's CS Pedagogical Content Knowledge outcomes:

The Pedagogy of Programming is part of all of UB's CS Teacher Preparation tracks, and will be of interest as an elective for teacher preparation candidates in other areas as well as doctoral students interested in computing education or the learning sciences.

Mode of Instruction

{{< info >}} For the pilot, we will decide whether to meet in person or online. {{</ info >}}

The Pedagogy of Programming meets in person. Regular attendance, preparation, and participation is essential and required.

Required Text and Materials

There are no texts required to be purchased for this course. All are accessible from this course website and from the Making With Code curriculum hosted at You will need regular access to a computer running Mac OS, Windows, Linux, or Unix. iPads are not sufficient. Chromebooks will work if you are allowed to install the Linux app. (In a pinch, you could complete this class using a Raspberry Pi.) You will also need a stable Internet connection. If any of these pose a challenge for you, please contact me and we'll figure it out.

Course Assignments

{{< info >}} One of the goals of the pilot is to calibrate the pace and difficulty of the course. Therefore, we'll take things a week at a time and see how far we get. {{</ info >}}

Each unit of this course is structured around labs, problem sets, and a project. Labs are social, collaborative experiences whereas problem sets are designed to check your understanding. Projects are open-ended.


{{< info >}} The pilot is structured as an independent study. To earn an A, you must regularly attend the weekly meetings, complete the course journal, and spend at least four hours a week on the course. {{</ info >}}