High School Introduction to Computer Science
Course Highlights
The High School Computer Science course is designed to provide all freshmen a base level of understanding of important topics in Computer Science.
Years Taught
Main Links
Course Units
Units include:
Unit 0: Digital Representation
The course begins with a unit exploring how different types of data are represented on a computer. Students come to understand that computers simply hold 1’s and 0’s and that the only thing that changes is the way these 1’s and 0’s are interpreted.
Activities include an ASCII-based scavenger hunt, the Flippy Bit Game, and an introduction to hex editing software in order to change from one emoji to another.
Keywords
Data, Binary, Hexadecimal, RGB, Encoding, Decoding, Number Systems, ASCII
Resources
- Slides
- Number Systems Worksheet
- Hexadecimal Worksheet
- ASCII Scavenger Hunt
- Hex Fiend Worksheet
- Emoji Worksheet
Unit 1: Introduction to Python
The Introduction to Python unit is taught using the Grok Learning system as its foundation. On top of Grok, we supplement the material with various PRIMM-based activities. These include old classics like having students create MadLibs (strings), Personality Quizzes (variables), and Turtles (loops). It also includes a several new activities such as a Connections-esque game. The focus of these supplementary activities is to give students an ability to show their creativity in what could otherwise be a bit of a rote, boring sequence.
In the end, students are able to effectively read, write, and modify code to solve particular problems.
Keywords
Programming, PRIMM, Grok, Python, Conditional, Variables, Loops, Turtles, EmojiPics
Resources
- Slides
- MadLibs to teach string operations
- Connections-esque game to teach conditionals
- Turtles to teach loops
- Secret messages to teach the accumulator pattern
- Binary calculator to teach iteration
- Unit review sheets:
Unit 2: Fractals and Recursion
Given the basic understanding of Python that students got in the previous unit, this unit is designed to expose students to fractals and recursion. The purpose of the unit is to allow them to experiment with different ways to decompose problems and wrestle with the fact that there are many ways to write a correct program. In addition, this dive into recursion allows us to introduce fundamental concepts such as functions, and shows students how computers can be used to model real-world phenomena.
Keywords
Programming, PRIMM, Python, Functions, Call Stacks, Fractals, Recursion
Resources
- Slides
- Turtles to teach functions
- Robozzle to introduce recursion
- Functions to teach return types
- Turtles to teach recursion
- Unit review sheet
Unit 3: Programming in Practice
This third unit on programming teaches students about ways to generalize code and exploit patterns to reduce the amount of code that needs to be written. In particular, we start to move away from Grok and tackle a bunch of different problems from a wide array of disciplines. This includes having students create a Prisoner’s Dilemma “bot” to fight in a class-wide tournament.
Keywords
Programming, PRIMM, Python, Lists, Functions, EmojiPics, Prisoners Dilemma, vscode
Resources
- Slides
- EmojiPics to teach advanced loops
- Turbozzle to teach vscode
- Turbozzle to teach debugging
- Groceries to teach lists
- Prisoner’s Dilemma to teach lists
- Unit review sheet
Unit 4: Image Manipulation via Python
This final programming unit has students create bitmap transformations (e.g., converting an image to black and white, combining two images) to give students additional practice with loops, conditionals, and functions. In addition, it reinforces the concepts of data on the file system being a set of 1’s and 0’s that can be manipulated. The unit is particularly nice because it scales to the wide variety of skill sets seen in a gen-ed class with a large number of “stretch problems” for even the most motivated/advanced students.
Keywords
Programming, Python, Pixels, RGB, Photo Editing, PhotoShop
Resources
- Slides
- Hex Fiend to introduce bitmaps
- PythoShop Repo
- Full set of worksheets/resources in
README
of repo
- Full set of worksheets/resources in