Posts tagged ‘CS:Principles’
Guest blog post from Barbara Ericson, copying a message from Paul Tyman:
Please consider signing up to an an AP CS Level A or CS Principles reader. We will need lots of new readers for the CSP exam. I did the pilot reading last year and it was interesting to see what the students submitted for their paper about a computing innovation and their code for the create task. The readings are really a great professional development opportunity for you. There is always an invited speaker and demos in the evenings. You will meet lots of great people who care about computer science education, both in high school and higher education teaching. We have a social space in the evenings which is quite busy with lots of card games, board games, and music. There are also groups who walk, do yoga, run, etc. They pay for your travel, hotel, meals, and pay you a stipend as well.
From: Paul Tymann <firstname.lastname@example.org>
Sent: Saturday, October 1, 2016 9:54 AM
Subject: CSP Readers Needed!!
Current estimates indicate that we will need more than 200 readers to score the AP CS Principles exam that will be administered in May 2017. I need your help recruiting new readers. Could you reach out to a couple of your colleagues and encourage them the apply to be readers? As former readers you are in an unique position to explain the reading process and the benefits of participating.
Potential readers can find out more information about becoming an AP CSP reader, and more importantly can sign up to become a reader, by pointing a browser to:
Please contact me if you have any questions. I hope to, no will, see you in Kansas City!!
My Blog@CACM post this month is A Call to Action for Higher Education to make AP CS Principles Work. The Advanced Placement course on CS Principles becomes “real” this Fall 2016, and the first offering of the exam will be Spring 2017. I expect that we in academic CS departments in the United States will soon be getting phone calls, “If we offer AP CSP and our students pass the exam, what will it count for at your school?”
When I talk to people who have worked on CSP about this issue, the question I get back in response is, “But there’s the attestation!” Over 80 schools supported creation of the AP CS Principles course — see the list here. The wording of the attestation varied by school, but makes these five points (taken from Larry Snyder’s page):
- It’s a substantive, important project — keep up the good work!
- We intend to give successful students credit at our school
- We intend to offer a comparable, content-rich course
- We intend to give successful students placement in a sequent course at our school
- [Optional] We are willing to have our school listed as supporting AP CS Principle
I don’t know. My school currently has no plans for #2, 3, or 4, but we did sign the attestation. (I’m working on coming up with a plan at Georgia Tech, but am not getting much traction.) I don’t know about the status at other schools that signed the attestation. I expect that Duke and Berkeley are going to follow-through, since they have done #3. Some schools don’t give any or much credit for AP, so #2 may be out of the CS departments hands. I don’t know if there’s any legal requirement to follow through on the attestation.
My CS Ed research class did lots of reading in the first half, and then are developing research plans in the second half. In between, I asked the students to develop research questions (faces deliberately obscured in picture of the class above), and several colleagues asked me, “Please share what they came up with!”
- Do we need to teach CS to everyone?
- How do we make CS education ubiquitous, and what are the costs and benefits of doing so?
- How effective is Media Computation (and like courses) in “tech” schools vs. liberal arts schools?
- How do we make individualistic (contextualized, scaffolded, etc.) CS experiences for everyone?
- What are equal vs just interventions?
- What is the economic cost of not teaching computing to all?
- How do we create a community of practice among non-practitioners?
- How to make CS teachers adopt better teaching practices?
- How we incorporate CS learning into existing engineering courses vs. create new courses for engineers?
- How does teaching to all high school students differ from teaching undergraduates?
- How do people learn CS? Define a CS learning progression.
- Are those AP CS Principles skills transferable to college CS courses? Or anywhere else?
- How does programming apply to everyone?
- What are the enduring computer science/splinter areas?
- How does the content and order of teaching computing concepts affect retention and transfer to other disciplines?
- How do we scaffold from problem-based learning to culturally relevant computing projects?
- What characteristics do successful CS teachers who transition from other disciplines exhibit?
- Is metaphor useful in learning CS? Which metaphors are useful?
I’ve been looking forward to seeing this article appear in CACM for over a year. Last January and May, I heard Sally Fincher give two talks about computing education research (CER), where she started by describing (failed) efforts to teach reading over the last hundred years. She created a compelling analogy. What educators were doing when they simplified the learning of reading seem analogous to our efforts today to simplify the learning of programming — but those efforts to teach simplified reading led to significant harm to the students. What harm are we doing to students when we teach programming in these new ways? She is not calling for an end to these efforts. Rather, she’s calling for research to figure out what we’re doing and to investigate the effects. She agreed to write up her story for Viewpoints, which is published this month in CACM. Thanks, Sally!
Other approaches believe it is more appropriate to use real syntax, but constrain the environment to a particular (attractive) problem domain so learners become fluent in a constrained space. Event-driven environments (such as Greenfoot) or scaffolded systems (like Processing.js) aim for the learner to develop an accurate mental model of what their code is doing, and ultimately transfer that to other environments. Although whether they actually do so remains unclear: we may be restricting things in the wrong way.
Still others hold that coding—howsoever approached—is insufficient for literacy and advocate a wider approach, taking in “computational thinking,” for instance as embedded in the framework of the “CS Principles”: Enduring Understandings, Learning Objectives, and Essential Knowledge.
What is resolutely held common with traditionally formulated literacy is that these approaches are unleashed on classrooms, often whole school districts, even into the curriculum of entire countries—with scant research or evaluation. And without carrying the teachers. If we are to teach computing in schools we should go properly equipped. Alongside the admirable energy being poured into creating curricular and associated classroom materials, we need an accompanying set of considered and detailed programs of research, to parallel those done for previous literacies.
Cool example of using JES to access external data!
I’ve been teaching CCT 374: Technologies for Knowledge Media course this term. It seemed a natural fit to use a Media Computation approach to teach Python programming. The students have a term project where they had to design an application that uses City of Toronto Open Data. Just about every team decided to make something that involved displaying something on a map. So, I had to figure out how to display arbitrary maps programmatically, as simply as possible. Using the Google Maps API would have been beyond most of the students. Then I found a blog post with a Python program to retrieve static images from Google Maps.
I have adapted the code from the blog post to work within JES (Java Environment for Students) using the Media Computation libraries. I’ve made the code available on a gist.
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.
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.