http://bit.ly/2cqfRDg June 30, 2016
I had an interesting experience recently. I agreed to run a session on computer science for the STEP (Science and Technology Entry Program) students at Union College's Kenney Community Center. The range of students was large, from 7th to 12th grade. Usually in a session like this I start by asking two things. First, in what ways are computers already in their lives? Second, what kind of problems do they think computers can help solve? There were lots of interesting answers to both questions, and I am always intrigued there are many computers in their lives that kids (and adults) do not think about. It is also fun to get sidetracked by discussion about user interfacesgo heat something up in your microwave, for example, and contemplate the fact that you can run it for 99 seconds, but 100 gets you a minute!
My overall goal is to try to get the kids to think about problems that are not obviously numeric in nature. This allows us to talk about the dual challenge of figuring out a solution to the problem and then figuring out how to get the "data" into the computer. Of course, I want things to be fun too! I have two aids I typically use: SET (a visual perception card game) and 3D Squares matching puzzles (unfortunately, no longer available for purchase). These lead us to talk about how a human might solve a problem versus what we would have to tell the computer to do. Then there is that pesky question about how to get the SET cards or the puzzle pieces "into" the computer. This is where things got interesting.
I had asked the students, as they introduced themselves, to tell me what sort of prior experience they had had with computers. Just about everyone one had done something formal either in school or in a camp setting. Several of them had programmed in Python, at least one knew some Java, and several had done robotics work, but as a group, none of them seemed to have learned anything about data representation inside the computer. Furthermore, though many of them were gamers, that experience did not seem to keep them from being surprised that you could come up with ways to represent cards or puzzle pieces inside the computer in ways that would allow a program to reason about those entities in the same ways that a human might. Certainly I do not expect K12 CS education to get deep into mechanisms for data representation, but I do expect that today's students, who as a cohort carry around devices that hold audio files, image files, and video files, should be a bit more facile with the idea that other entities, like cards and hard plastic puzzle pieces, could also be represented in some way inside the computer.
We wrapped up with a quick overview of Traveling Salesperson (always fun to ask kids where in the world they would like to go) because I like to prove to them that, as amazing as computers are, there are still problems that computers cannot solve. That concept also seemed quite surprising to them.
As a snapshot of the state of K12 CS education, my experience was not particularly encouraging, but it does make a strong case for both the coherent curricula and the formal professional development on which many in the CS community are working. I am ever optimistic that as I continue to do these sorts of sessions, I will begin to see evidence of the impact of new curricula and better-trained teachers. Stay tuned!
http://bit.ly/2aNXAnC August 10, 2016
I recently discovered that the latest version of our Python IDE for learners, JES (Jython Environment for Students), passed 10,000 downloads (see the count at http://bit.ly/2cyt1l2); 10,562 when I started writing this post. We created JES in 2002 in support of our Media Computation course at Georgia Tech, which is a required course for students in our colleges of Liberal Arts, Business, and Design. Schools that adopted our Python Media Computation textbook have also mostly adopted JES, or used options that support the same libraries, such as Pythy or Pyjama. The current download count is probably an underestimate of users, since some schools download JES only once and then distribute it across campus.
Most student Python programmers use IDLE, the integrated development environment (IDE) provided with Python. While Python is more learner-centered than many languages used by professionals (see "Five Principles for Programming Languages for Learners," http://bit.ly/2chERzG), the IDE should also be tailored for learners. Learners have different goals and needs than professional programmers. They need programming environments that take a learner-centered design approach (http://bit.ly/2cEcQnz), like JES or DrPython.
JES is likely one of the most-used pedagogical programming environments for Python, and the fact that it is still frequently used at the ripe old age of 14 suggests that it has been pretty successful. It is probably worth considering why it has worked. As lead on the team that built it and maintained it for the last 14 years, I am not a good judge for why it has worked.
Instead, I offer four brief stories about JES's development and maintenance over the last 14 years.
Keep It Simple: From DrScheme and DrJava, we took the principle to keep it simple. We did not want an interface with many options for many kinds of uses. We wanted an interface that worked very well for learners.
In JES, you can only edit one file at a time, with an interaction pane (a REPL, http://bit.ly/2cEcZrl) for testing and running code. Most Python programs by professionals use multiple files. We opted to design for the beginner who could get lost in a sea of files. Having more than one file open requires some interface for switching files. One file means no additional interface. You can build bigger things in JES, but we optimized for the most common learner case.
Imagineering Media Computation to be Normal Python: We built JES to facilitate students programming in Media Computation. Students can program anything in JES; it is a full Python implementation. We added additional features to JES to facilitate Media Computation with a minimum of cognitive load.
We imagineered a community of practice around Media Computation (a story we told in http://bit.ly/2bRCSmd). In JES, it is normal for Python to know how to make pictures with
makePicture, access individual pixels with
getPixels, change colors with
setRed, and access sound samples with
getSamples. Invisibly, we load libraries for the student so that JES is a Python that supports programming with multimedia from the first moment of class. In normal Python, you can print anything to get its value. In JES, you
explore any picture or sound to open an explorer to see color values in pictures or to visualize the samples in a sound.
Later on, we tell students there are libraries and how JES is automatically loading them. But on Day One, JES is a friendly Python that knows about pixels and pictures, sounds and samples, and frames and videos. No imported libraries, no dots, no extra details.
Sometimes, you explain errors after they occur: When we first started teaching Python to non-technical majors at Georgia Tech, students struggled with indentation errors. Even today in our ebooks (http://bit.ly/2bW119J), indentation problems in Python are among the most common and the most difficult for students to fix.
We decided to add a small feature to JES to help with indentation errors. We wanted indentation to be salient and obvious. JES draws a small blue box around the lines in the same block as the current line (containing the cursor).
Now, when students come to me with indentation errors, I ask them "Where's the blue box?" And they invariably ask, "What blue box?" I point it out to them. "Ohhhhthat blue box! Yeah, that's useful." Until students realize they have to attend to indentation, they do not see the support we are providing. Telling them that indentation is important and pointing out the blue box is not nearly as effective as encountering the error once.
Over the years, remove features: The original 2002 JES had more features in it than the most recent version. Two examples:
The lesson here is Yogi Berra's famous quote, "It's tough to make predictions, especially about the future." Some of the issues that seemed critical in the beginning simply were not all that important in actual practice later. The features with more staying power were the ones that we added in response to learner behavior. Our most successful features were the ones we added to meet real learners' needs, not what we initially imagined the needs to be.
©2016 ACM 0001-0782/16/11
Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and full citation on the first page. Copyright for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or fee. Request permission to publish from email@example.com or fax (212) 869-0481.
The Digital Library is published by the Association for Computing Machinery. Copyright © 2016 ACM, Inc.
No entries found