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.
Repeatability presumes evidence (which can be repeated). Computer scientists have not valued evidence and repeatability as much as we need to for rigor and scientific advancement — in education, too. One of my favorite papers by Michael Caspersen is his Mental models and programming aptitude ITICSE 2007 paper where he and his colleagues attempt to replicate the results of the famous and controversial Dehnadi and Bornat paper (see here). Michael and his colleagues are unable to replicate the result, and they propose a research method for understanding the differences. That’s good science — attempting to replicate another’s result, and then developing the next steps to understand the differences.
Science advances faster when we can build on existing results, and when new ideas can easily be measured against the state of the art. This is exceedingly difficult in an environment that does not reward the production of reusable software artifacts. Our goal is to get to the point where any published idea that has been evaluated, measured, or benchmarked is accompanied by the artifact that embodies it. Just as formal results are increasingly expected to come with mechanized proofs, empirical results should come with code.
If a paper makes, or implies, claims that require software, those claims must be backed up.
Nice story and presentation from Katie Cunningham about how she informed her faculty about why there are so few women in CS, and what they can do about it.
I based the main arc of my presentation on a book chapter by Whitecraft and Williams that Greg Wilson of Software Carpentry was kind enough to forward to me. It’s an evenhanded look at much of the research in this area, including theories that are often out of favor in most places I frequent. It served as a great overview, though I felt it could have focused more on issues involving differences in prior programming experience pre-college and intimidation brought on by “nerdy strutting“. (Update: I just discovered a fantastic 2012 report by NCWIT that can also serve as a great overview. It covers cultural issues more comprehensively, with more recent research and more focus on the pre-college years.)
Back in September 2011, I announced that we received NSF funding to try to “beat the book.” (See post here.) Could we create an electronic (Web-based) book that was better for CS teacher learning than reading a physical book? Took us three years, but I’m confident that the answer is now, “Yes.”
Our ebook is hosted by Brad Miller’s Runestone tools and site. We use worked examples (as mentioned here) interleaved with practice, as Trafton and Reiser recommend. We have coding in the book as well as Philip Guo’s visualizations. There are audio tours to provide multi-modality code explanations (see modality effect), and Parson’s problems to provide low cognitive load practice (see mention here). We support book clubs that set their own schedule, in order to create social pressure to complete, but at a scale that makes sense for teachers.
2011 was a long time ago. That original post didn’t even mention MOOCs. We ran two studies in the Fall, one on learning with novices and one on usability (which involved several of you — thank you for responding to my call for participants!). I’m not going to say anything about those results here, pending review and publication. We have updated the book based on the results of those studies. I don’t know if we beat the MOOC. We’re running at about a 50% completion rate, but we’ll only really know when we go to scale.
I am pleased to announce the book is ready for release!
Please send this url to any teacher you think might want to learn about teaching CS (especially for the AP CS Principles — see learning objectives here) in Python: http://ebooks.cc.gatech.edu/TeachCSP-Python/ Thanks!
Our next steps are to develop a student ebook. By Fall, we hope to have a teacher and a student CSP ebook, which may make for an additional incentive for teachers to complete.
The comments from students in the article below from Duke are just like the ones I hear from my students when I ask them how our introductory class is going. “Way better than I expected” and “I thought it would be all geeky” and “I can see using this!” You’d think with all the press about computing education these days that we would wouldn’t still have to explain all of this, but yeah, we do.
“I thought I would be surrounded by tech geeks who sat alone at their computers all day,” Walker said. “But I came to realize that computer science lets you do things that are applicable to all sorts of fields.”
Now she’s using her new computational savvy to expand a nonprofit she founded in high school to raise money for an elephant sanctuary in Thailand.
“You wouldn’t think that running a nonprofit requires a lot of technical skills, but it does,” she said. “You get a problem and you think, ‘I could solve this on paper and it would take me 25 hours, or I can write one line of code and all of a sudden there’s my answer.’ The efficiency of it is super cool.”
The article linked below makes the argument that then-Governor Ronald Reagan changed perception higher education in the United States when he said on February 28, 1967 that the purpose of higher education was jobs, not “intellectual curiosity.” The author presents evidence that date marks a turning point in how Americans thought about higher education.
Most of CS education came after that date, and the focus in CS Education has always been jobs and meeting industry needs. Could CS Education been different if it had started before that date? Might we have had a CS education that was more like a liberal education? This is an issue for me since I teach mostly liberal arts students, and I believe that computing education is important for giving people powerful new tools for expression and thought. I wonder if the focus on tech jobs is why it’s been hard to establish computing requirements in universities (as I argued in this Blog@CACM post). If the purpose of computing education in post-Reagan higher education is about jobs, not about enhancing people’s lives, and most higher-education students aren’t going to become programmers, then it doesn’t make sense to teach everyone programming.
The Chronicle of Higher Education ran a similar piece on research (see post here). Research today is about “grand challenges,” not about Reagan’s “intellectual curiosity.” It’s structured, and it’s focused. The Chronicle piece argues that some of these structured and focused efforts at the Gates Foundation were more successful at basic research than they were at achieving the project goals.
“If a university is not a place where intellectual curiosity is to be encouraged, and subsidized,” the editors wrote, “then it is nothing.”
The Times was giving voice to the ideal of liberal education, in which college is a vehicle for intellectual development, for cultivating a flexible mind, and, no matter the focus of study, for fostering a broad set of knowledge and skills whose value is not always immediately apparent.
Reagan was staking out a competing vision. Learning for learning’s sake might be nice, but the rest of us shouldn’t have to pay for it. A higher education should prepare students for jobs.
Oklahoma isn’t the only state picking a fight over AP US History. Georgia’s legislators just introduced a similar bill (see article here). I disagree with what they’re doing, but I do agree with the argument below. The Advanced Placement program is a kind of “national curriculum.” That’s why efforts like CS Principles are so valuable — they impact many schools across the country all at once. My PhD advisor, Elliot Soloway, argues that it’s past time to establish national curricula (see article here), and he’s probably right. The American political sentiment goes strongly against that perspective.
For other lawmakers, however, Fisher is thinking too small. Oklahoma Rep. Sally Kern (R) claims that all “AP courses violate the legislation approved last year that repealed Common Core.” She has asked the Oklahoma Attorney General to issue a ruling. Kern argues that “AP courses are similar to Common Core, in that they could be construed as an attempt to impose a national curriculum on American schools.”