Posts tagged ‘MediaComp’
I was excited to read this in Katrina Falkner’s blog at the beginning of the year. They’re teaching a Media Computation MOOC in Processing! I highly recommend looking at the actual blog post and the links, to see the kinds of work that the students are doing. (I wrote and scheduled this post when I first saw Katrina’s blog post, and it’s coincidence that it’s publishing when I’m with Katrina at Dagstuhl this week, discussing how we assess CS learning and attitudes.)
At the start of this year, we were also busy working on our Introductory programming MOOC, Think Create Code. We are really excited about this course, as we are have adopted the same Media Computation approach that we use in our on-campus course. We use Processing, and have built an EdX extension module to support an open art gallery where students can share their work, explore others and discuss. We will be using this course as part of our future on-campus offerings as well, allowing us to focus more of our in class time on working closely with our students. We launched Think Create Code in April, and ended up working with over 20,000 students from 177 countries. It was amazing to see the work of our students, and to see a fantastic blending between the artistic and computer science communities. The course now runs as a self-paced course open to all.
AccessComputing and DO-IT does terrific work. I get the question in the title a lot with MediaComp, since it’s a curriculum that lends itself towards producing just visual or just audio products, while exploring the same computing concepts.
With the increasing demand for computing professionals, it’s important that students with disabilities are included in computing courses. This video includes profiles of successful computing students and professionals who happen to have disabilities. Learn how accommodations, assistive technology, and universal design strategies can make computing courses accessible to students with disabilities.
Runtime: 10:24 minutes
Interesting perspective from a blogger in the Scratch community, liked below. I do frequently hear the pattern described in the post quoted below. “I’ve started by daughter/niece/local-school on Scratch, and now I want to know how to move them into something ‘real’ (e.g., text).” I typically point them to amazing things that can be done in Scratch (like Alex Ruthmann’s beautiful livecoding of music in Scratch).
I recently got a chance to play with GP, a new programming language from John Maloney (of Scratch fame), where all blocks and texts are isomorphic. There’s a slider that lets you switch from one to the other. Even the debugger and class browser show up with tiles. Where does that play out in this debate? GP is the first blocks-based language I’ve used with the right primitives to do MediaComp, so I built one of my examples in it. Took me about three times as much time to write and four times as much space (in screen real estate) as in Python (even with John looking over my shoulder guiding me). Maybe that’s not a bad thing — maybe that encourages a different style of use. Next time I try something like that, I’m far more likely to think about building my own blocks and using more abstraction to save on dragging-and-fitting effort.
I’ve been a part of the Scratch community for about 8 years now (yes, really). During this time, I’ve noticed a pattern that seems to apply to a lot of people:
join Scratch => create projects => discover text-based programming => quit Scratch because of “real programming”
Note the scare quotes around “real programming”. Generally, a “real” programming language is text-based (C, Python, etc.) and apparently qualifies as real because it’s used by well-known developers for something.
Obviously I disagree with disqualifying Scratch as a real programming language.
JES 5.02 is now released at https://github.com/gatech-csl/jes/releases/tag/5.020. I have links to all the main downloads at http://mediacomputation.org .
Fixes in JES 5.02 (with many thanks to HenryStevens and sportsracer48 for fixes):
- Fixes a problem if you quit during raw_input that you can’t do another raw_input
- Makes the Sound explorer fully functional again
- Fixes colorizing
- Makes autosave work again
- Fixes a threading error if you hit return too rapidly in the Command Area
- Unicode characters in input file get flagged. (Jython can’t execute a line with unicode characters on it.)
You can find all the fourth edition Powerpoint slides (including a 68Mb zip of all of them) at http://coweb.cc.gatech.edu/mediaComp-teach/60. I’ve put some of the Peer Instruction question slides into the chapter PPT slide decks, but you can find more at the instructors-only website (see the Media Computation website for more on the teacher website).
Most of the changes are in the early chapters. Chapter 3 on text and language manipulation is all new. The latter chapter PPT slide decks have a few new slides in each deck, including:
- Creating state-preserving versions of picture manipulation functions in Chapter 16 on Functional Programming
- Subclassing Picture and Sound to move functions into methods in Chapter 17 on Object-oriented Programming
- Recursive turtle patterns, which are possible with an improved Turtle class in JES 5 in Chapter 17
In the Preface to the new 4th ed book, I wrote a bit about what we know about how to teach computer science using Media Computation. These are probably useful in most CS classes, even without Media Computation:
Over the last 10 years, we have learned some of the approaches that work best for teaching Media Computation.
- Let the students be creative. The most successful Media Computation classes use open-ended assignments that let the students choose what media they use. For example, a collage assignment might specify the use of particular filters and com- positions, but allow for the student to choose exactly what pictures are used. These assignments often lead to the students putting in a lot more time to get just the look that they wanted, and that extra time can lead to improved learning.
- Let the students share what they produce. Students can produce some beautiful pictures, sounds, and movies using Media Computation. Those products are more motivating for the students when they get to share them with others. Some schools provide online spaces where students can post and share their products. Other schools have even printed student work and held an art gallery.
- Code live in front of the class. The best part of the teacher actually typing in code in front of the class is that nobody can code for long in front of an audience and not make a mistake. When the teacher makes a mistake and fixes it, the students see (a) that errors are expected and (b) there is a process for fixing them. Coding live when you are producing images and sounds is fun, and can lead to unexpected results and the opportunity to explore, “How did that happen?”
- Pair programming leads to better learning and retention. The research results on pair programming are tremendous. Classes that use pair programming have better retention results, and the students learn more.
- Peer instruction is great. Not only does peer instruction lead to better learning and retention outcomes, but it also gives the teacher better feedback on what the students are learning and what they are struggling with. We strongly encourage the use of peer instruction in computing classes.
- Worked examples help with learning creativity. Most computer science classes do not provide anywhere near enough worked-out examples for students to learn from. Students like to learn from examples. One of the benefits of Media Computation is that we provide a lot of examples (we’ve never tried to count the number of for and if statements in the book!), and it’s easy to produce more of them. In class, we do an activity where we hand out example programs, then show a particular effect. We ask pairs or groups of students to figure out which program generated that effect. The students talk about code, and study a bunch of examples.
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.
Dr. Gary May, Dean of the College of Engineering at Georgia Tech, is one of my role models. I’ve learned from him on how to broaden participation in computing, what academic leadership looks like, and how to make sure that education gets its due attention, even at a research-intensive university.
He wrote an essay (linked below) critical of the idea of “STEAM” (Science, Technology, the Arts, and Mathematics). I just recently wrote a blog post saying that STEAM was a good idea (see link here). I’m not convinced that I’m at odds with Gary’s point. I suspect that the single acronym, “STEM” or “STEAM,” has too many assumptions built into it. We probably agree on “STEM,” but may have different interpretations of “STEAM.”
The term “STEM” has come to represent an emphasis on science, technology, engineering, and mathematics education in schools. A recent Washington Post article critiques exactly that focus: Why America’s obsession with STEM education is dangerous.
From Gary’s essay, I think he reads “STEAM” to mean “We need to integrate Arts into STEM education.” Or maybe, “We need to emphasize Arts as well as STEM in our schools.” Or even, “All STEM majors must also study Art.” Gary argues that STEM is too important to risk diffusing by adding Art into the mix.
That’s not exactly what I mean when I see a value for STEAM. I agree that STEM is the goal. I see STEAM as a pathway.
Media Computation is a form of blending STEM plus Art. I’m teaching computer science by using the manipulation of media at different levels of abstraction (pixels and pictures, samples and sounds, characters and HTML, frames and video) as an inviting entryway into STEM. There are many possible and equally valid pathways into Computing, as one form of STEM. I am saying that my STEAM approach may bring people to STEM who might not otherwise consider it. I do have a lot of evidence that MediaComp has engaged and retained students who didn’t used to succeed in CS, and that part of that success has been because students see MediaComp as a “creative” form of computing (see my ICER 2013 paper).
I have heard arguments for STEAM as enhancing STEM. For example, design studio approaches can enhance engineering education (as in Chris Hundhausen’s work — see link here). In that sense of STEAM, Art offers ways of investigating and inventing that may enhance engineering design and problem-solving. That’s about using STEAM to enhance STEM, not to dilute or create new course requirements. Jessica Hodgins gave an inspiring opening keynote lecture at SIGCSE 2015 (mentioned here) where she talked about classes that combined art and engineering students in teams. Students learned from each other new perspectives that informed and improved their practice.
“STEM” and “STEAM” as acronyms don’t have enough content to say whether we’ve in favor or against them. There is a connotation for “STEM” about a goal: More kids need to know STEM subjects, and we should emphasize STEM subjects in school. For me, STEM is an important goal (meaning an emphasis on science, technology, engineering, and mathematics in schools), and STEAM is one pathway (meaning using art to engage STEM learning, or using art as a valuable perspective for STEM learners) to that goal.
No one — least of all me — is suggesting that STEM majors should not study the arts. The arts are a source of enlightenment and inspiration, and exposure to the arts broadens one’s perspective. Such a broad perspective is crucial to the creativity and critical thinking that is required for effective engineering design and innovation. The humanities fuel inquisitiveness and expansive thinking, providing the scientific mind with larger context and the potential to communicate better.
The clear value of the arts would seem to make adding A to STEM a no-brainer. But when taken too far, this leads to the generic idea of a well-rounded education, which dilutes the essential need and focus for STEM.