Media Computation for CS Principles
At conferences like SIGCSE 2015 and at meetings like the CS Principles Advisory Board meeting in Chicago in February, I’m hearing from pilot teachers of the new AP CS Principles Curriculum (see website here) who are building Media Computation (specifically, in Python) into their classes. In the preface to the new 4th Edition (see Amazon page here), I went through the Big Ideas and Learning Objectives (as they were on the website at that time) that are being addressed in the new version. Explicitly, I added content to address CS Principles learning objectives, e.g., measuring two different algorithms by using clock time and manipulating “live” CSV data downloaded from websites.
Below is quoted from the preface:
The Advanced Placement exam in CS Principles has now been defined. We have explicitly written the fourth edition with CS Principles in mind. For example, we show how to measure the speed of a program empirically in order to contrast two algorithms (Learning Objective 4.2.4), and we explore multiple ways of analyzing CSV data from the Internet (Learning Objectives 3.1.1, 3.2.1, and 3.2.2).
Overall, we address the CS Principles learning objectives explicitly in this book as shown below:
- In Big Idea I: Creativity:
- LO 1.1.1: . . . use computing tools and techniques to create artifacts.
- LO 1.2.1: . . . use computing tools and techniques for creative expression.
- LO 1.2.2: . . . create a computational artifact using computing tools and techniques to solve a problem.
- LO 1.2.3: . . . create a new computational artifact by combining or modifyingexisting artifacts.
- LO 1.2.5: . . . analyze the correctness, usability, functionality, and suitability ofcomputational artifacts.
- LO 1.3.1: . . . use programming as a creative tool.
- In Big Idea II: Abstraction:
- LO 2.1.1: . . . describe the variety of abstractions used to represent data.
- LO 2.1.2: . . . explain how binary sequences are used to represent digital data.
- LO 2.2.2: . . . use multiple levels of abstraction in computation.
- LO 2.2.3: . . . identify multiple levels of abstractions being used when writingprograms.
- In Big Idea III: Data and information:
- LO 3.1.1: . . . use computers to process information, find patterns, and test hy-potheses about digitally processed information to gain insight and knowledge.
- LO 3.2.1: . . . extract information from data to discover and explain connections,patterns, or trends.
- LO 3.2.2: . . . use large data sets to explore and discover information and knowledge.
- LO 3.3.1: . . . analyze how data representation, storage, security, and transmission of data involve computational manipulation of information.
- In Big Idea IV: Algorithms:
- LO 4.1.1: . . . develop an algorithm designed to be implemented to run on a computer.
- LO 4.1.2: . . . express an algorithm in a language.
- LO 4.2.1: . . . explain the difference between algorithms that run in a reasonable time and those that do not run in a reasonable time.
- LO 4.2.2: . . . explain the difference between solvable and unsolvable problems in computer science.
- LO 4.2.4: . . . evaluate algorithms analytically and empirically for efficiency, correctness, and clarity.
- In Big Idea V: Programming:
- LO 5.1.1: . . . develop a program for creative expression, to satisfy personal curiosity or to create new knowledge.
- LO 5.1.2: . . . develop a correct program to solve problems
- LO 5.2.1: . . . explain how programs implement algorithms.
- LO 5.3.1: . . . use abstraction to manage complexity in programs.
- LO 5.5.1: . . . employ appropriate mathematical and logical concepts in programming.
- In Big Idea VI: The Internet:
- LO 6.1.1: . . . explain the abstractions in the Internet and how the Internet functions.