Posts tagged ‘computing education’
Ian Bogost believes that an “algorithmic society” is a myth, and believes that we treat algorithms as a religion.
I don’t want to downplay the role of computation in contemporary culture. Striphas and Manovich are right—there are computers in and around everything these days. But the algorithm has taken on a particularly mythical role in our technology-obsessed era, one that has allowed it wear the garb of divinity. Concepts like “algorithm” have become sloppy shorthands, slang terms for the act of mistaking multipart complex systems for simple, singular ones. Of treating computation theologically rather than scientifically or culturally.
This attitude blinds us in two ways. First, it allows us to chalk up any kind of computational social change as pre-determined and inevitable. It gives us an excuse not to intervene in the social shifts wrought by big corporations like Google or Facebook or their kindred, to see their outcomes as beyond our influence. Second, it makes us forget that particular computational systems are abstractions, caricatures of the world, one perspective among many. The first error turns computers into gods, the second treats their outputs as scripture.
I respond with another quote:
“And this is that decision which are going to affect a great deal of our lives, indeed whether we live at all, will have to be taken or actually are being taken by extremely small number of people, who are normally scientists. The execution of these decisions has to be entrusted to people who do not quite understand what the depth of the argument is. That is one of the consequences of the lapse or gulf in communication between scientists and nonscientists. There it is. A handful of people, having no relation to the will of society, having no communication with the rest of society, will be taking decisions in secret which are going to affect our lives in the deepest sense.”
That’s C.P. Snow in 1961 (Computers and the World of the Future, ed Martin Greenberger, MIT Press), talking about why everyone on campus should (explicitly) learn algorithms. He foresaw the “algorithmic culture” where algorithms control “a great deal of our lives, indeed whether we live at all.” He had two concerns. One was that the people writing those algorithms are making decisions when they implement them that don’t reflect social or political will. The second was that the “nonscientists” were unwilling to learn the algorithms. Explicitly, Snow’s argument was that those who don’t understand algorithms are at the mercy of those who do. His book, The Two Cultures, blamed the nonscientists for not making the effort to learn the science and algorithms so that they could participate in scientific discourse.
Today, Snow might agree with Bogost. When we don’t understand the algorithms that control our lives, we might see them as divine or magical. Arthur C. Clarke famously said, “Any sufficiently advanced technology is indistinguishable from magic.” The corollary (see here) is a better explanation of the phenomena that Bogost describes, ” Any technology, no matter how primitive, is magic to those who don’t understand it.”
I use the above quote in my talks on why we need computing for everyone. Snow is arguing that CS Education is a critical part of a functioning “algorithmic society.” If our social processes and rules are built into the software, not understanding algorithms keeps you from understanding and influencing the algorithms that control your life. Thomas Jefferson said, “An educated citizenry is a vital requisite for our survival as a free people.” Knowledge about computing is part of that education that keeps the citizenry free in today’s algorithm-driven world.
The onus to enable citizens to be free in an algorithm-driven world is on us in computer science, not on the citizenry alone. We have too much power to hide our algorithms behind interfaces and firewalls. We have a responsibility to make the computational world (and the algorithms that run it) accessible and understandable. As Diana Franklin said in her recent CACM essay (which I mentioned here), it’s up to computer science to make computing education work.
Nice (short) interview with Mehran Sahami — addresses several issues around computing education and about Stanford’s CS department.
How did you convince Mark Zuckerberg to come to your class every year for the last four years to lead a Q&A with students?
The last assignment I usually give in my introductory programming class is called “FacePamphlet,” as it’s supposed to be a very simple version of Facebook. I thought it would be great if Mike Schroepfer, the CTO at Facebook and a long-time friend and Stanford alum, would talk to my class about Facebook and, more broadly, the ways in which computer science can have an impact in the world.
When I first invited him to come a few years ago, he responded by asking if I’d like him to bring Mark Zuckerberg to the class too. I was thrilled at the possibility. As you can imagine, their visit to the class was a huge hit, and they spent the whole hour engaged with the students, answering a broad range of questions. They have been so kind as to continue that tradition, visiting the course to do Q&A with the students for four years in a row—their last visit drew over 700 students.
Both Mark and Mike are very committed to promoting computer science education, and I feel fortunate that coming to my class is one of the many ways they have encouraged students to pursue computer science. Interestingly enough, my young kids learned some of the basics of programming from Mark through the videos he did for code.org. I think he was a bit surprised at first when I thanked him for helping teach my kids to code on one of his more recent visits to my class.
A new survey from both CSTA and Oracle. None of the findings are too surprising. What’s probably surprising is that this picture doesn’t seem too different from past CSTA surveys (see list of all of them here). Efforts like the Hour of Code are reaching lots of students, but may not yet be making much impact on most schools and districts.
In addition, participants applied the term “computer science” to a vast array of topics and courses, many of which were submitted as “other” courses in response to the topics that were provided in the survey. Participants classified studies in business management, yearbook layout, artificial intelligence, robotics, office applications, and automated design as computer science courses. This broad use of “computer science” to encompass curriculum and courses that would not be considered “computer science” at a college/university or professional level indicates a need for educational community consensus on a common definition of computer science education and curricular content, lest we lead students or teachers to believe they are preparing students for college and careers when in fact, they are not. This perhaps begs the question whether “computer science” as a designation is being applied inappropriately for funding or other reasons.
Administrators stated that the most prevalent computer science course offered was Web Design and Development, followed by Intro to Computer Science with 54% of the schools offering it in grade 9, 47% offering it in grade 10, 39% offering it in grade 11, 37% offering it in grade 12, and only 27% offering at least one intro to CS course all four years. These were followed by computer graphics and programming. The top four content areas covered in computer science courses were listed as problem solving at 65%, ethical and social issues and graphics tied at 57%, and web development at 51%. However, analysis of algorithms came in at 35% as did testing and debugging. Each of these content areas are core to computer science and in particular programming.
One of the most important findings from the study suggests that better-funded schools are offering CS to their students at a far higher rate than low-income schools. This research verifies what was only previously suspected. Of the 27% of schools where the majority of students qualify for free or reduced lunch, 63% offer computer science courses. Of the 44% of schools where the majority of students do not qualify for free lunch, 84% offer computer science courses.
via CSTA – OracleSurvey.
I wrote my Blog@CACM post for January on the rising enrollment in computer science and how that is making irrelevant our advances in retaining students (see article here). Retention is simply not the problem in US CS programs today.
But thinking about the 1980’s and today (as described in this blog post), I began wondering if our boom-and-bust cycles might be related to our inability to manage the boom.
- First, we get a huge increase in enrollment due to some external factor (like the introduction of the personal computer).
- Then, we have to manage the rise in enrollment. We try to hire faculty, but we can’t bring them in fast enough. We stop worrying about high-quality, high-retention education — we need the opposite! We set up barriers and GPA requirements.
- Word gets out: CS is hard. The classes are too difficult. It’s too competitive. Minority group students suffer from the imposter phenomenon and leave faster than majority students.
- Result: Enrollment drops. Diversity decreases.
- Then the next external factor happens (like the invention of the graphical Web browser), and we start the sequence again.
If we could give everyone a seat who wanted one, and we continued to focus on retention and high-quality education, might we actually have a steady-state of a large CS class? Could our inability to manage the load actually be causing the bust side of the cycle?
Why there’s no such thing as an ‘F’ in computer science: The Fear Factor in CS (and other things we learn)
Nice article by my colleague Ayanna Howard and Oracle’s Alison Derbenwick Miller. I’m teaching Media Computation again this semester, and it seems to me that the biggest barrier for my students is simply fear. They don’t type code because they’re afraid of failure. They don’t try to understand the code because they’re afraid they can’t.
It’s not just CS, of course. At my last ukulele meetup, I sat next to a woman who brought her ukulele, but wouldn’t take it out of the case. She just sang the songs along with us. When I encouraged her to bring it out, she said, “I’m just a beginner. I’ll learn to play it first, then I’ll play along.” That gets the process wrong — it’s playing along that leads to learning to play it. But I was struck by her body language and voice when she made the statement. She was deeply frightened — of making mistakes and being ridiculed for it, I guess.
I get that. I did my first public performance singing and playing the ukulele in December. (Christmas carols are pretty easy, and are completely acceptable at a December open mic night.) I was so frightened. I finished one song (“Silent Night”), then invited my daughters up to sing with me (“Jingle Bells”) to help me get through it (thanks to them for the support!), but still couldn’t get past one verse. My legs and arms were shaking so badly I didn’t think I could go on. Fear is powerful.
Ayanna and Alison point out something important and real that we have to help students get past.
They will give you myriad reasons, among them that the work just isn’t interesting, that the cool kids don’t do it, and fear – fear it’s too hard, fear they’ll be ridiculed as “nerds,” fear of being exposed as an intellectual fraud, or ironically, as the “too smart kid,” fear of failure.
Fear is an awful thing. It’s a four-letter “f” word that holds incredible power – power to keep us from doing what is good, what is right. Power to stop us from taking risks. Power to maintain the status quo, to stop disruption, to inhibit change. Power to stymie innovation, and to limit opportunity.
Fear is bad. Fear stands between us and a better world. It stands between us and our better selves.
I liked Gary Stager’s argument in the post below about what’s important about the Maker Movement for schools: it’s authentic in a physical way, and it contextualizes mathematics and computing in an artistic setting.
For too long, models, simulations, and rhetoric limited schools to abstraction. Schools embracing the energy, tools, and passion of the Maker Movement recognize that, for the first time in history, kids can make real things – and, as a result, their learning is that much more authentic. Best of all, these new technologies carry the seeds of education reform dreamed of for a century. Seymour Papert said that John Dewey’s educational vision was sound but impossible with the technology of his day. In the early- to mid-20th century, the humanities could be taught in a project-based, hands-on fashion, but the technology would not afford similarly authentic opportunities in mathematics, science, and engineering. This is no longer the case.
Increasingly affordable 3-D printers, laser cutters, and computer numerical control (CNC) machines allow laypeople to design and produce real objects on their computers. The revolution is not in having seventh-graders 3-D print identical Yoda key chains, but in providing children with access to the Z-axis for the first time. Usable 3-D design software allows students to engage with powerful mathematical ideas while producing an aesthetically pleasing artifact. Most important, the emerging fabrication technologies point to a day when we will use technology to produce the objects we need to solve specific problems.
Fourth edition of Python Media Computation released today: Teacher resources and desirable difficulties
According to Amazon, the Fourth Edition of the Python Media Computation book is released today (see page here). That’s the new cover above. I’ve been working on the 4th edition for most of the summer. Some of the bigger changes are:
- Before we manipulate pictures, we manipulate letters, words, and language, e.g., build “MadLib” and “koan” generators, and encoding and decoding keyword ciphers. Language is a medium, too, and it’s easier to get started (for some folks) with the smaller-iteration loops of text before getting to the thousands-of-iterations loops of pixels in a picture. It’s an optional chapter — everything introduced there gets introduced again later.
- Since the new version of JES fixed a round-off error in the Turtle class, we can do recursive turtle manipulations now (which tended to get messed up in earlier forms of JES).
- I juggled content around so that we do more with conditionals and querying the pixel for its position, before we introduce nested loops. Nested loops are really hard for students, and I learned (from seeing the code that my students wrote) that they can do far more than I’d guessed with single loops — even with multiple pictures. I included more of that.
- I have tried (for the last two editions) to provide screen-scraping examples, e.g., writing code to pull weather, news, or friends’ information from websites. It’s getting harder and harder to write that kind of code. Instead, I decided to provide more code that parses CSV files, as can be found at Open Data Journalism sites (like at The Guardian) and sources like the US Census. The examples are still about parsing out useful information, but it’s a lot easier to parse CSV and encouraged at these sites.
- There are more end of chapter problems, and new pictures. And trying to catch all the errors in the Third Edition that master teachers like Susan Schwartz (at West Point) found.
We’re working on teacher resources now. Currently in development (aiming to have ready in the next couple months) the Powerpoint slides for each chapter of the book, a collection of all the code in the book for teachers, and a solutions manual for every end of chapter problem. These are surprisingly controversial. There are lots (mostly University) teachers who think that I shouldn’t provide any of these resources — teachers should be able to develop all of those themselves. Most of the high school and community college teachers I know appreciate having them.
In searching for the Fourth Edition on Amazon, I read the comments on the Third Edition (see here). Authors probably shouldn’t read the reviews of the book — they’re painful. But I did, and even worse, I actually responded.
Here is a quote from one, titled “False Advertising.”
Its biggest problem: false advertising. This is NOT a book on Python, it’s about JYTHON – A Java based imitation of Python.
Why? Well, there’s some pretty software, available to download, which uses the the JRE. The author chose to stick with this “easy learning environment” and basically cripple anyone wanting to write Python code for Blender, Maya, Android etc.
You may learn to program from this text, but don’t expect a trouble-free life when you get exposed to the real language.
Here was my response:
Everything in this book is useful when wanting to write Python code for Blender, Maya, Android, etc. This is an introductory book on data, loops, conditionals, and objects. Those parts of Python are identical in this book and in the Python that you’ll use in Blender, Maya, and Android. For introductory Python programming, Jython and CPython are exactly the same.
I was surprised to see the original commenter responded. His point was that some kinds of friction, in dealing with the “real world” is desirable:
As an introductory book, I would expect a section on how to install and configure Python. Written covering Windows, Linux, and the Mac OSX. There is no such section; the whole point of Jython is to “hide” this technical level. Which is fine for learning loops etc. but leaves a student lost when encountering Python out in the real world.
It’s an interesting perspective, kind of a “rugged individualism” approach. I do agree with the notion of desirable difficulties in learning (see more here), but don’t agree that installing Python is one of those. Do most Python programmers install Python themselves, or is it already installed on the servers, computers, etc. that they will be programming? Is it a critical part of learning a language? Is it significantly different than installing JES (try that here)? Are you “lost” and unable to program if you don’t install it yourself first?
A sad addendum to this story: Our Media Computation data structures book (see the Amazon page here) has gone out of print. The publisher didn’t notify us. Someone approached us about using the book, and was told that it was out of print. When I queried Pearson, they admitted it. More, because it’s not out of print everywhere (I guess it’s available in some non-US markets), Pearson won’t let us post the content anywhere. It’s a dead book now.