UTeach CS Principles Course Overview
In this project-based course, students develop computational thinking and programming skills through collaborative, open-ended projects that are personally relevant to students’ lives. Students examine how computing shapes our society by investigating and debating issues such as cybersecurity, data privacy, and digital literacy. Assignments grow in complexity as students explore programming concepts first through block-based, drag-and-drop coding in Scratch, followed by text-based coding in Python. This innovative course is designed to engage all students, while also providing rigorous preparation for the AP Computer Science Principles exam.
Unit 1: Algorithmic Thinking (Password Generator Project)
In Unit 1, students apply the principles of algorithmic thinking (including sequencing, selection, and repetition) to generate secure, unique passwords that are easy to remember but difficult to guess. After mastering how to encode and decode messages using cryptographic techniques such as Vigenère and Caesar ciphers, students represent their “unplugged” password algorithms using AP®-style pseudocode. The unit culminates with a challenge for students to try to “hack” their classmates’ password algorithms.
Unit 2: Programming (Scratch Programming Project)
In Unit 2, students dive into block-based programming to code a personally meaningful Scratch program, game, or movie that incorporates both user interaction and multimedia elements. Through an iterative development process, students construct blocks of executable code, explore debugging techniques, and ensure that their program functions properly. They experiment with basic programming concepts, including variables, user input, conditionals, and iteration statements. By the end of this unit, students gain confidence in their problem-solving and coding abilities, as well as familiarity with the cyclical nature of program development.
Unit 3: Data Representation (Unintend'o Controller Project)
In Unit 3, students delve deeper into computational abstraction while programming the interface to a classic video game controller using Scratch. Students discover how all digital information is ultimately represented by “bits” (short for binary digits) of 0 or 1. They apply their understanding of bits to map patterns of button presses on their game controllers to different game actions. Students also examine characteristics and common use-cases for higher-order data structures, specifically linear, ordered collections. Students use common algorithms to process lists, such as searching and sorting elements in a list. By the end of the unit, students hone their coding skills and master the concept of abstraction in programming.
Unit 4: Digital Media Processing (Image Filter Project)
In Unit 4, students create Instagram-like photo filters after exploring how the RGB color model is used to encode digital images and represent images on computer displays. Students develop a series of algorithmic filters, digitally modifying images at the level of individual pixels to achieve various visual effects. This unit also marks the transition from block-based to text-based programming using Python, a popular language for software developers. Students gain familiarity with programming environments that more closely reflect the tools used in industry, preparing them for continuing studies in computer science beyond the scope of this course.
Unit 5: Big Data (TEDxKinda Project)
In Unit 5, students discover how data analytics can uncover hidden patterns and drive decision-making in fields as disparate as business, science, and government. Students gain real-world experience with collecting and analyzing data using data science techniques, such as mining and extrapolation. Students identify questions that are best answered using “big data” and explore the usability versus the usefulness of various large data sets. After generating visual representations, students communicate insights they have gleaned from examining open-source databases through short, “TED talk”-style presentations.
Unit 6: Innovative Technologies (Prototyping the Future Project)
In Unit 6, students become visionaries of “future technologies” as they prototype new products and services that could be realized within their lifetimes. During the development process, students explore the effects of ever-evolving technologies on individuals and societies and examine the computing inventions they rely on every day, including the global infrastructure of the internet. After designing a computing innovation, each team gives an “elevator pitch” highlighting how features of their prototype will enhance everyday life. This unit encourages students to think about the entrepreneurial process behind the creation of new technologies, as well as their own role in shaping the future.