Posts tagged ‘Media Computation’
Updates: Workshop on Contextualized Approaches to Introduction to Computing, from the Center for Inclusive Computing at Northeastern University
From Nov 2020 to Nov 2021, I was a Technical Consultant for the Center for Inclusive Computing at Northeastern University, directed by Carla Brodley. (Website here.) CIC works directly with CS departments to create significant improvements in female participation in computer science programs. I’m no longer in the TC role, but I’m still working with CIC and Carla. I’ll be participating in a workshop that they’re running on Monday March 21. I’ll be talking about Media Computation in Python, and probably show some of the things we’re working on for the new classes here at Michigan.
https://www.khoury.northeastern.edu/event/contextual-approaches-to-introduction-to-computing/
Contextual Approaches to Introduction to Computing
Monday 3/21/22, 3pmEST/12pmPST
Moderator: Carla Brodley; Speakers: Valerie Barr, Mark Guzdial, Ben Hescott, Ran Libeskind-Hadas, Jakita Thomas
Brought to you by the Center for Inclusive Computing at Northeastern University
In this 1.5 hour virtual workshop, faculty from five different universities in the U.S. will present their approach to creating and offering an introductory computer science class (CS0 or CS1) for students with no prior exposure to computing. The key differentiator of these approaches is that the introduction is contextualized in one area outside of computing throughout the semester. Using the context of areas such as cooking, business, biology, media arts, and digital humanities, these courses appeal to students across the university and have realized spectacular results for student retention in CS0/CS1, persistence to taking additional CS courses, and declaring a major or minor in computing. The importance of attracting students to computing after they enter university is critical to moving the needle on increasing the demographic diversity of students who graduate in computing. Interdisciplinary introductory computing classes provide a pathway to students discovering and enjoying computing after they start university. They also help students with no prior coding experience gain familiarity with computing before taking additional courses required for the CS major. The workshop will begin with a short presentation by each faculty member on their approach to contextualized CS0/CS1 and will touch upon the university politics involved in its creation, the curriculum, and the outcomes. We will then split into smaller breakout sessions five times to enable participants to meet with each of the five presenters for questions and more in-depth conversations.
Media Computation today: Runestone, Snap!, Python 3, and a Teaspoon Language
I don’t get to teach Media Computation1 since I moved to the University of Michigan, so I haven’t done as much development on the curriculum and infrastructure as I might like if I were teaching it today. I did get a new version of JES (Jython Environment for Students) released in March 2020 (blog post here), but have rarely even started JES since then.
But using Jython for Media Computation is so 2002. Where is Media Computation going today?
I’ve written a couple of blog posts about where Media Computation is showing up outside of JES and undergraduate CS. Jens Moenig has been doing amazing things with doing Media Computation in Snap! — see this blog post from last year on his Snap!Con keynote talk. SAP is now offering a course From Media Computation to Data Science using Snap! (see link here). Barbara Ericson’s work with Runestone ebooks (see an example blog post here) includes image manipulation in Python inside the browser at an AP CS Principles level (see example here). The amazing CS Awesome ebook that Beryl Hoffman and Jen Rosato have been doing with Barb for AP CS A includes in-browser coding of Java for the Picture Lab (see example here).
I was contacted this last January by Russ Tuck and Jonathan Senning. They’re at Gordon College where they teach Media Computation, but they wanted to do it in Python 3 instead of Jython. You can find it here. It works SO well! I miss having the image and sound explorers, but my basic demos with both images and sounds work exactly as-is, with no code changes. Bravo to the Gordon College team!

Most of my research these days is grounded in Task-Specific Programming languages, which I’ve blogged about here (here’s a thread of examples here and here’s an announcement of funding for the work in social studies). We now refer to the project as Teaspoon Computing or Teaspoon Languages — task-specific programming => TSP => Teaspoon. We’re adding a teaspoon of computing into other subjects. Tammy Shreiner and I have contributed a chapter on Teaspoon computing to a new book by Aman Yadav and Ulf Dalvad Berthelsen (see announcement of the book here).
We have a new Teaspoon language, Pixel Equations, that uses Media Computation to support an Engineering course in a Detroit Public School. Here, students choose a picture as input, then (1) enter the boolean equations for what pixels to select and (2) enter equations for new red, green, and blue values for those pixels. The conditionals and pixel loops are now implicit.
In several of our tools, we’re now exploring bilingual or multilingual interfaces, inspired by Sara Vogel’s work on translanguaging (see paper here) and Manuel Pérez-Quiñones’s recent work on providing interfaces for bilingual users (see his TED talk here and his ACM Interactions paper here). You can see in the screenshot below that colors can be referenced in either English or Spanish names. We’re now running participatory design sessions with teachers using Pixel Equations.

I’m planning a series of blog posts on all our Teaspoon languages work, but it’ll take a while until I get there.
- For new readers, Media Computation is a way of introducing computing by focusing on data abstractions used in digital media. Students write programs to manipulate pixels of a picture (to create photo filters), samples of a sound (e.g., to reverse sounds), characters of a text, and frames of a video (for video special effects). More at http://mediacomputation.org ↩
HyperBlocks come to Snap! — UX for PX in CS4All
Jens Moenig kindly shared with me a video announcing HyperBlocks that he’s added to the next version of Snap! The idea of hyperblocks is to support vector and matrix operations in Snap!, as in APL or MATLAB.
I’m interested in the research question whether vector operations are easier or harder for students, including considering who the students are (e.g., does more math background make vector operations easier?) and how we define easier or harder (e.g., is it about startup costs, or the ability to build larger and more sophisticated programs?). My suspicion based on the work of folks like L.A. Miller, John Pane, Diana Franklin, Debbie Fields, and Yasmin Kafai is that vector operations would be easier. Students find iteration hard. Users have found it easier to describe operations on sets than to define a process which applies the operation to specific elements. It’s a fascinating area for future research.
And, you can do Media Computation more easily (as Jens shows) which is a real win in my book!
They also have an online course, on using Snap! from Media Computation to Data Science: https://open.sap.com/courses/snap2
Soon after Jens sent me this video, I got to see him do this in real-time at Snap!Con, and then he and Brian Harvey won the NTLS Education Leadership Award for their work on Snap! (see link here). Congratulations to them both!
So here’s the question that I wonder: Who does Snap! work for, and who doesn’t it?
- I find Snap! fascinating but not usable for me. I have tried to do what I see Jens doing, but have to keep going back and forth from the video to the tool. It’s not obvious, for example, where to get the camera input and how to use it. I’m sure if I spent enough time using Snap!, I’d get it. What teachers and students are willing to pay that cost? Obviously, some are — Snap! is popular and used in many places. Who gets turned off to Snap!? Who doesn’t succeed at it?
- I attended some of the sessions at Snap!Con this summer: https://www.snapcon.org/conferences/2020. I was particularly struck by Paul Goldenberg’s session. He showed videos of a young kid (somewhere in 8-10) using Snap!. He was struggling to place blocks with a trackpad. Think about it — press down at the right place, drag across the trackpad without lifting up, release at the right place. This is hard for young kids.
These are important questions to consider in pursuit of tools that enable CS for All. UX for PX – how do we design the user experience of the programming experience.
P.S. Jens just sent me the link to his Snap!Con talk video: https://youtu.be/K1qR4vTAw4w
Final (likely) version of JES released, 18 years after first release
JES 6.0 is now available at https://github.com/gatech-csl/jes/releases/tag/6.0. JES is the Jython Environment for Students — it’s a Python IDE implemented in Java and with support for Media Computation built in. It was a lot of work for a bunch of people. Here are the notes from the release as a summary and acknowledgement for all the effort that brought this version fruition.
This is likely the final version of JES, unless a Jython 3.0 is developed.
This version was brought to completion by Nigel Charleston, based on the beta work of Veronica Day and Audrey Zhang (see discussion at this blog post https://computinged.wordpress.com/2019/07/22/beta-release-of-new-jes-jython-environment-for-students-now-available-media-computation-for-python-ide/). Many thanks to R. Benjamin Shapiro for helping us with many technical questions.
JES 6.0 updates Jython to 2.7beta, uses the latest version of JMusic (from https://jythonmusic.me/), fixes many bugs, will run with Java 8, and creates a new facility to generate pictures from a collection of pixels and sounds from a collection of samples.
The Mac version is a little more complicated to run than usual. You will need to have Java 8 installed to run JES. Thanks to Brian Howard and Michael Stewart for helping to figure this out.
The rest of the Mac version installation instructions can be found at the release page.
JES was originally written by a team of Georgia Tech undergraduates taking Senior Design in Summer 2002. It’s been in use and (sporadic) development for almost 18 years now. The previous version of JES was downloaded over 71K times (see counts here). I would not have predicted in 2002 that JES would still be used in 2020, with little maintenance and no additional funding. Software has to be continually maintained, right? I claim no great genius behind the design. How did it happen that it’s still working and being used?
An even more interesting example is our Squeak-based Wikis (Swikis) which were first developed in 1997. Jeff Rick created the version that we used in classes, and wrote about the process in what I think is the first ACM publication on wikis in 2000. Even after he graduated in 2007, they just kept going. The server http://coweb.cc.gatech.edu/ is still running today — I can find at least one Swiki there dating from 2002. I’ve patched the Swiki software only once or twice since Jeff graduated. Jeff did a great job designing Swiki, but I suspect that even he’d be surprised at how long they’ve run with essentially no maintenance.
What are the characteristics of educational technology that remains viable and usable (i.e., useful and actively used) with very little maintenance for well over a decade? Schools are under-resourced, as I talked about in the Thorndike vs Dewey blog post. It’s great to have educational software that just keeps going without maintenance. Maybe that it’s a certain class of software that works like this. Is it that JES and Swiki do so little, such that they’re really just frameworks on which to hang others’ content? Maybe that’s why they’ve been able to keep going for so long?
Your thoughts would be welcome.
Beta release of new JES (Jython Environment for Students) now available: Media Computation for Python IDE
Veronica Day and Audrey Zhang are two undergraduate researchers with whom I have been working here at University of Michigan to update JES (Jython Environment for Students), the Python IDE for Media Computation. We last updated it in 2015 (see announcement post here), so it’s long overdue. The last version has been downloaded over 50K times (see counts here). I’m grateful to Veronica and Audrey for their hard work.
Besides working their way through the bug list on GitHub, and adding contributed features into the main trunk (like Ben Shapiro’s support for Mac retina displays – many thanks, Ben!), they have added support that I’ve been wanting for awhile. We can now create pictures from a collection of pixels and sounds from a collection of samples. This allows for a more functional style of media manipulations. In the example below, we makePicture by filtering for only certain pixels with a list comprehension ([px for px in getPixels(p) if getRed(px)<120]).
Please try out the beta version of JES and let us know of errors. Thanks
http://web.eecs.umich.edu/~mjguz/uploads/jes-5.02b5/
We plan to update a few more parts of this version before the 6.0 release. In particular, we’d like to upgrade to the latest Jython and the latest JMusic. I’m expecting some of our regression tests to fail on that, so there will be some tweaks yet.
This may be our last release of JES. Jython is no longer in development (see post here). I’ll have to try again to get Media Computation to work in CPython (see last try here) and/or move to one of the browser-based Python implementations.
Where to find Guzdial and Ericson Web Resources post-Georgia Tech: Bookmark this post
Georgia Tech has now shut down the web servers that Barbara Ericson and I have been using to share resources for the last umpteen years. They warned us back in the Fall that they were going to, so we have been moving Web resources over to the University of Michigan.
Here are links to where to find some of our most often accessed resources (not all links and images will work, since some were hardcoded to Georgia Tech URLs):
- Barbara’s Institute for Computing Education resources (summer camps, recruitment letters, etc.), and the newer one at home.cc here.
- Media Computational resources (http://mediacomputation.org already points here.)
- If you use the MediaComp teachers resources (slides, answers to exercises in the books), please contact me at mjguz@umich.edu, and I can send you the access information.
- Media Computation in GP
- My CSL Group’s webpage
We do not have everything moved over. I believe that there were FERPA concerns about some of our websites (that we might be referencing student names), so we were not able to download those. We are recreating those resources best we can. Barbara has now set up a new blog for her AP CS A tracking data (see http://cs4all.home.blog), and I have uploaded my Computational Freakonomics slides and coursenotes to U-M.
Bookmark this post, and as I find more resources in the stash I downloaded, I’ll link them from here.
Come to my workshop on CS Education at ASEE June 16!
I am attending my first American Society for Engineering Education (ASEE) Conference this year — see the website here: https://www.asee.org/conferences-and-events/conferences/annual-conference/2019.
I’m still figuring out Engineering Education Research, so I’ll be offering a workshop based on our work at Georgia Tech: Techniques for Improved Engagement and Learning of Programming. The workshop is Sunday, June 16, 2019 from 9:00 am to noon. Please come, and please pass this on to others you know who are attending ASEE and might be interested.
Computing education research at Georgia Tech over the last 15 years has led to techniques for teaching programming which improve student learning. Learning is enhanced through greater engagement and reduced cognitive load.
These techniques are:
- Media computation: Teaching programming through manipulation of digital media which improves students’ sense of utility and relevance leading to greater engagement;
- Worked examples: Using worked examples in peer instruction and for prompting for predictions that improve learning;
- Subgoal labeling: Structuring and labeling worked examples to improve immediate learning, retention over time, and transfer to new problems.
The learning objectives for this workshop are for participants to experience these techniques so that they might be able to judge which are most useful for their own practice. Participants will:
- Manipulate digital media with programs that they write during the workshop (laptops required).
- Participate in peer instruction questions using worked examples.
- Compare worked examples with and without subgoal labeling.
Georgia Tech Receives CMD-IT University Award for Retention of Minorities and Students With Disabilities in Computer Science
I have not been directly involved in the computer science undergraduate major at Georgia Tech since “Georgia Computes!” started (and ECEP continued). Today, I teach graduate courses in the Human-Centered Computing PhD program and the undergraduate non-CS majors course Introduction to Media Computation, and only rarely teach CS undergraduates.
So, I am pleased that this award to the undergraduate program in the College of Computing mentioned things that Barb and I were part of. The College of Computing won the award in part for Threads (I co-chaired the implementation committee), “Georgia Computes!” (which was mostly Barb and me), Project Rise Up 4 CS (which is Barb’s invention which she developed for ECEP), and our three mandatory CS classes, one of which is the Media Computation class I created. I feel like Barbara and I had a role in this.
The CMD-IT University Award decision was based on both Georgia Tech’s impressive quantitative reported results, which reflected high retention and graduation rates and qualitative reporting on their various retention program. In particular, Georgia Tech highlighted the following four programs highlighted as directly impacting retention and graduation:
-
Threads Undergraduate Curriculum: Students are given the opportunity to take control over their curriculum by choosing two of eight Threads to create their degree plan which gives them more than 28 different degree plans to follow. This resulted in students feeling they have more control and a better understanding of their degree plan.
-
Georgia Computes and Project Rise Up: The two programs are spearheaded by Georgia Tech to help increase engagement in computing by broadening participation in computer science at all educational levels by underrepresented groups. These programs increase interest in Computer Science.
-
Mandatory Introductions to Computer Science classes: All students enrolled in Bachelor’s degree programs at Georgia Tech must take one of three computer science classes. The three programs enable students to take courses that fit their level of experience in Computer Science.
-
Travel Scholarships to Conference: Georgia Tech provides between 40 and 120 travel scholarships to leading tech conferences with a diversity focus. Students build networks of support and return with a feeling of renewed commitment to their degree program.
Attending the amazing 2017 Computing at School conference #CASConf17
June 17, Barbara and I attended the Computing at School conference in Birmingham, England (which I wrote about here). The slides from my talk are below. I highly recommend the summary from Duncan Hull which I quote at the bottom.
CAS was a terrifically fun event. It was packed full with 300 attendees. I under-estimated the length of my talk (I tend to talk too fast), so instead of a brief Q&A, there was almost half the time for Q&A. Interacting with the audience to answer teachers’ questions was more fun (and hopefully, more useful and entertaining) than me talking for longer. The session was well received based on the Tweets I read. In fact, that’s probably the best way to get a sense for the whole day — on Twitter, hashtag #CASConf17. (I’m going to try to embed some tweets with pictures below.)
Barbara’s two workshops on Media Computation in Python using our ebooks went over really well.
I enjoyed my interactions all day long. I was asked about research results in just about every conversation — the CAS teachers are eager to see what computing education research can offer them. I met several computing education research PhD students, which was particularly exciting and fun. England takes computing education research seriously.
Miles Berry demonstrated Project Quantum by having participants answer questions from the database. That was an engaging and fascinating interactive presentation.
Linda Liukas gave a terrific closing keynote. She views the world from a perspective that reminded me of Mitchel Resnick’s Lifelong Kindergarten and Seymour Papert’s playfulness. I was inspired.
The session that most made me think was from Peter Kemp on the report that he and co-authors have just completed on the state of computing education in England. That one deserves a separate blog post – coming Wednesday.
Check out Duncan’s summary of the conference:
The Computing At School (CAS) conference is an annual event for educators, mostly primary and secondary school teachers from the public and private sector in the UK. Now in its ninth year, it attracts over 300 delegates from across the UK and beyond to the University of Birmingham, see the brochure for details. One of the purposes of the conference is to give teachers new ideas to use in their classrooms to teach Computer Science and Computational Thinking. I went along for my first time (*blushes*) seeking ideas to use in an after school Code Club (ages 7-10) I’ve been running for a few years and also for approaches that undergraduate students in Computer Science (age 20+) at the University of Manchester could use in their final year Computer Science Education projects that I supervise. So here are nine ideas (in random brain dump order) I’ll be putting to immediate use in clubs, classrooms, labs and lecture theatres:
Source: Nine ideas for teaching Computing at School from the 2017 CAS conference | O’Really?
My talk slides:
Embedding and Tailoring Engineering Learning: A Vision for the Future of Engineering Education
In the last couple of months, I have had the opportunity to speak to groups of Engineering Education Researchers. That doesn’t happen often to me, and I feel very fortunate to get that chance.
I was asked to speak about my vision for the future of Engineering Education, from my perspective as a Computing Education Researcher. What I said wasn’t wholly unique–there are Engineering Education Researchers who are already working on some of the items I described. The response suggested that it was at least an interesting vision, so I’m telling the story here in blog form.
For readers of this blog who may not be familiar with Engineering Education Research, the Wikipedia page on EER is pretty good. The most useful paper I read is Borrego and and Bernhard’s “The Emergence of Engineering Education Research as an Internationally Connected Field of Inquiry.” I also recommend looking around the Purdue Engineering Education department website, which is the oldest Eng Ed department in the US.
Engineering has had a long relationship with computing. Engineers made computing part of their practice earlier and more pervasively than scientists or mathematicians. I love how this is described in the motion picture Hidden Figures where Octavia Spencer’s character is part of the effort to use computing as soon as possible in the American space program. Engineering educators have made computing part of the learning goals for all of today’s engineering students, again more pervasively than what I can see in science or mathematics programs.
Much of my work and my students’ work is about embedding computing education (e.g., Media Computation which embeds computing in the digital media context that students value, or Brian Dorn’s work embedding computing in a graphic design context) and tailoring computing education (e.g., high school CS teachers need something different from software developers). Computing education can be embedded in Engineering classes and tailored for Engineering students, of course. My vision is about embedding and tailoring engineering education.
There are three parts to the story below:
- Engineering Education for everyone K-16, especially for STEM learners.
- Reaching a diverse audience for engineering education.
- Recognizing the differences between Engineering Education research and teaching, and the need for more research on learning outside of the engineering classroom.
In January 2016, President Barack Obama launched the “CS for All” initiative. When he said that he wanted students to be “job-ready,” he wasn’t saying that everyone should be a software engineer. Rather, he was reflecting a modern reality. For every professional software developer, there are four-to-nine end-user-programmers (depending on the study and how you count). Most professionals will likely use some form of programming in the future. That’s an argument for “CS for All.”
We also need Engineering for All. Engineering skills like designing, planning, collaboration on diverse teams, and trouble-shooting are needed across STEM. When I look at bench science, I see the need for engineering — to design, plan, collaborate, debug, and test.
Engineering education researchers know a lot about how to teach those skills. I’d love to learn how to inculcate some engineering perspectives in my CS students. When I see Chemical Engineering students designing a plant, or Civil Engineering students designing a bridge, they predict that they made mistakes, and they look for those mistakes. There’s a humility about their process. CS students often run their program once and turn them in. If you write a hundred lines of code, odds are almost 100% that you made errors. How do we get CS students to think that way?
Engineering for All is different than what professional engineers do, in the same way that what a high school teacher needs is different than what a professional software developer needs. Both need a mental model of the notional machine. A high school teacher also needs to know how students get that wrong, and probably doesn’t need to know about Scrum or GitHub.
I believe that there is a tailored part of engineering education which should be embedded throughout K-16 STEM. The American Society of Engineering Education’s mission is focused on professional engineers, and my proposal does not diminish the importance of that goal. We need more professional engineers, and we need to educate them well. But engineering skills and practices are too important to teach only to the professionals.
Engineering should play a significant role in STEM education policy. Engineering education researchers should own that “E” in STEM. There are many research questions that we have to answer in order to achieve Engineering for All.
- What is the tailored subset of engineering that should be taught to everyone? To STEM learners?
- All technically literate US citizens should know far more about engineering than they do today. Here’s a hypothesis: If all US citizens understood what engineering is and what engineers do, we might have less crumbling infrastructure, because we citizens would know that infrastructure is critical and professional engineers design, build, and maintain infrastructure. How do we get there?
- All K-12 students should have the opportunity to fall in love with engineering. How?
- Are there limits to what we can teach about engineering in K-16? What learning and cognitive disabilities interfere with learning engineering, and what parts of engineering? I also wonder about the kinds of bias that prevent someone from succeeding in engineering, besides race and gender. For example, here in the South, there are a lot of students who don’t believe in evolution. I’m pretty sure that belief in evolution isn’t necessary for designing a bridge or a distillation column. But someone who believes in intelligent design is going to face a lot of barriers to getting through basic science to become an engineer. Is that how it should be?
- Engineering should aim to influence K-12 STEM education nationally, in every state.
The American University (particularly the Land Grant University, developed in the late 1800’s) was supposed to blend the German University focus on research and the British focus on undergraduate education. My favorite history of that story is Larry Cuban’s How Scholars Trumped Teachers, but Michael Crow also tells the story well in his book Designing the New American University. We believed that there were synergies between research and teaching. It’s not clear that that’s true.
Research and teaching have different measures of success and don’t feed directly into one another.
Teaching should be measured in terms of student success and at what cost. Cost is always a factor in education. We know from Bloom’s two-sigma 1984 study (and all the follow-ups and replications) that the best education is an individual human tutor for each subject who works with a student to mastery. But we as a society can’t afford that. Everything else we do is a trade-off — we are trying to optimize learning for the cost that we are willing to bear.
Research should be measured in terms of impact — on outcomes, on the research community, on society.
It’s quite likely that the education research on a given campus doesn’t influence teaching practice on the same campus.
I see that in my own work.
- The best of Media Computation is no longer at Georgia Tech. Beth Simon and Leo Porter at UC San Diego have done better studies and are inventing cool interventions like MediaComp art galleries. Cynthia Lee at Stanford has created MediaComp for multiple languages. Celine Latulipe built on Beth and Leo’s work to implement lightweight teams in her MediaComp course.
- Subgoal labeling totally works (see Lauren’s dissertation or Briana’s dissertation). Coursera uses it in some of their videos. Rob Miler at MIT has picked it up. But there are very few CS classes using it.
We can see the transition for education research idea to impact in teaching practice as an adoption curve. Boyer’s “Scholarship Reconsidered” helps to explain what’s going on and how to support the adoption. There is traditional Scholarship of Discovery, the research that figures out something new. There is Scholarship of Teaching that studies the practice of teaching and learning.
Then there’s Scholarship of Application, which takes results from Discovery into something that teachers can use. We can’t expect research to influence teaching without scholars of application. Someone has to take the good ideas and carry them into practice. Someone has to figure out what practitioners want and need and match it to existing research insights. Done well, scholarship of application should also inform researchers about the open research questions, the challenges yet to be faced.
High-quality teaching for engineering education should use the most effective evidence-based teaching methods.
Good teachers balance teaching for relevance and motivation with teaching for understanding. This is hard to do well. Students want authenticity. They want project-based learning and design. I was at the University of Michigan as project-based learning for science education was first being developed, and we knew that it very often didn’t work. It’s often too complex and leads to failure, in both the project and the learning. Direct instruction is much more efficient for learning, but misses out on the components that inspire, motivate, and engage students. We have to balance these out.
We have to teach for a diverse population of students, which means teaching differently to attract women and members of under-represented groups. In our ICER 2012 paper, we found that encouragement and self-perception of ability are equally important for white and Asian males in terms of intention to persist in computing, but for women and under-represented group students, encouragement matters more than ability in terms of how satisfied they are with computing and intention to persist. This result has been replicated by others. Encouragement of individual students is critical to reach a diverse audience.
An important goal for a first year Engineering program is to explain the relevance of the classes that they’re taking. Larry Cuban tells us that a piece of the British system that got lost by the early 1920’s in the American University was having faculty advisors who would explain how all the classes fit together for a goal. The research on common first year Engineering courses (e.g., merging Physics, Calculus, Engineering in a big 12 credit hour course) shows that they worked because they explained the relevance of courses like Calculus to Engineering students. I know from my work that relevance is critical for retention and transfer.
Do students see relevance of first year Engineering programs? Most first year programs emphasize design and team problem-solving. First year Engineering students don’t know what engineers do. When they’re told “This is Engineering” in their first year, do they believe it? Do they cognitively index it as “real Engineering”? Do they remember those experiences and that learning in their 3rd and 4th years when they are in the relevant classes? I hope so, but I don’t know of evidence that shows us that they do.
Engineering education research, like most discipline-based education research (DBER), is focused on education. I see the study of “education” as being about implementation in a formal system. Education is a design discipline, one of Simon’s Sciences of the Artificial. Robert Glaser referred to education as psychology engineering.
We need more research on Engineering Learning. How do students learn engineering skills and practices, even outside of Engineering classes? How do those practices develop, even if it’s STEM learners and teachers using them and not professional engineers? How should we best teach engineering even if it’s not currently feasible?
That last part is much of what drives my work these days. We’re learning a lot about how great Parsons Problems are for learning CS. Very few CS classes use them. There are reasons why they don’t (e.g., they’re emphasizing the project side of the education spectrum). I’m figuring out how to teach CS well, even if it’s not feasible in current practice. CS teaching practice will eventually hit a paradigm shift, and I’ll have evidence-based practices to offer.
To focus on engineering learning requires work outside the classroom, like Multi-Institutional, Multi-National (MIMN) studies that we use in computing education research, or even laboratory studies. A focus on Engineering Learning creates new opportunities for funding, for audience, and for impact. For example, I could imagine engineering education researchers seeking science education funding to figure out how to teach high school science teachers the engineering that they ought to teach their students — not to introduce engineering, but to make their students better in science.
My vision for engineering education has three parts:
- K-16 STEM learners need Engineering for All. Engineering education has more to contribute than just for producing more professional Engineers. Engineering education ought to own the “E” in STEM education policy. Engineering skills and practices can be tailored to different audiences and embedded in STEM education.
- Reaching a diverse audience is critical for both research and teaching. For me, that diversity includes the people who need engineering education who aren’t going to become professional engineers, but also people who look different or even have different beliefs.
- Finally, research and teaching are different activities, with different measures of success. Teaching should be informed by evidence and be as efficient and effective as possible for a given cost. We need evidence for what we’re doing, and we should gather evidence if we don’t know if what we’re doing is working. Research should focus on what’s possible and on having impact, even if that impact isn’t in the on-campus classrooms. We shouldn’t expect research to impact teaching without explicit investment in adaptation to support adoption.
(Thanks to Barb Ericson, Beth Simon, Leo Porter, and Wendy Newstetter for advice on drafts of this piece.)
Every University Student should Learn to Program: Guzdial Arguing for CS for All in Higher Education
A colleague recently approached me and said, “It would be useful if Universities got involved in this CS for All effort. All Universities should offer courses aimed at everyone on campus. There should be a systematic effort to get everyone to take those classes.”
I agree, and have been making this argument for several years now. I spent a few minutes gathering the papers, blog posts, and book where I’ve made that argument over the last decade and a bit.
In 2002, Elliot Soloway and I argued in CACM that we needed a new way to engage students in intro programming: Teaching the Nintendo Generation to Program.
In 2003, I published the first paper on Media Computation: A media computation course for non-majors.
In 2004, Andrea Forte led the team studying the Media Computation class at GT:Computers for communication, not calculation: Media as a motivation and context for learning and A CS1 course designed to address interests of women.
In 2005, Andrea Forte and I presented empirical evidence about the courses we’d designed for specific audiences: Motivation and nonmajors in computer science: identifying discrete audiences for introductory courses. I published a paper in CACM about how the courses came to be at Georgia Tech: Teaching computing to everyone.
In 2008, I offered the historical argument for teaching everyone to program: Paving the Way for Computational Thinking.
We’ve published several papers about our design process: Imagineering inauthentic legitimate peripheral participation: an instructional design approach for motivating computing education and Design process for a non-majors computing course.
My 2013 ICER paper was a review of a decade’s worth of research on Media Computation: Exploring hypotheses about media computation
My keynote at VL/HCC 2015 was on how computing for all is a requirement for modern society: Requirements for a computing-literate society
My 2015 book is, to a great extent: an exploration of how to achieve CS for All: Learner-Centered Design of Computing Education: Research on Computing for Everyone.
In blog posts, it’s been a frequent topic of conversation:
- In 2011, I argued that it makes more sense to require CS at universities before pushing into K-12, because then all pre-service teachers have some CS which makes later PD much easier and cheaper: https://computinged.wordpress.com/2015/11/30/require-cs-at-universities-before-k-12-computational-community-for-everyone/ and https://computinged.wordpress.com/2011/05/17/if-you-want-cs-in-high-school-require-cs-in-college/
- In 2013, I pointed out that CS is becoming increasingly valuable outside of CS: https://computinged.wordpress.com/2013/12/10/why-are-english-and-lots-of-other-majors-studying-computer-science/
- One of my earlier Blog@CACM posts was on how students learn things in MediaComp that informs them about their world, not just about CS: http://cacm.acm.org/blogs/blog-cacm/26343-media-computation-for-creativity-and-surprises/fulltext
- On how CS is a value-added to a liberal education: http://cacm.acm.org/blogs/blog-cacm/101738-computer-science-as-value-added-to-a-liberal-education/fulltext
I don’t know how to convince University CS departments to do just about anything, but here are my contributions to the dialogs that I hope are happening at Colleges and Universities worldwide about how to prepare students to engage in computational literacy.
Where are the Python 3 Libraries for Media Computation
My Blog@CACM post for this month is on JES, the Jython Environment for Students, which at 14 years old and over 10,000 downloads, is probably one of the oldest, most used, and (by some definition) most successful pedagogical Python IDE’s.
The SIGCSE Members list recently had a discussion about moving from Python 2 to Python 3. Here’s a description of differences. Some writers asked about MediaComp. With respect to the Media Computation libraries, one wrote:
I’m sad about this one, because we use and like this textbook, but I think it’s time to move to Python 3. Is there a compatible library providing the API used in the text?
Short answer: No. There are no compatible Media Computation libraries for CPython 2 or 3.
We keep trying. The latest attempt to build Media Computation libraries in CPython is here: https://github.com/sportsracer48/mediapy. It doesn’t work on all platforms yet, e.g., I can’t get it to load on MacOS.
We have yet to find a set of libraries in Python that work cross-platform identically for sample-level manipulations of sounds. For example, PyGame’s mixer object doesn’t work exactly the same on all platforms (e.g., sampling rates aren’t handled the same on all platforms, so the same code plays different speed output on different platforms). I can do pixel-level manipulations using PIL. We have not yet tried to find libraries from frame manipulations of video (as individual images). I have just downloaded the relevant libraries for Python 3 and plan to explore in the future, but since we can’t make it work yet in Python 2 (which has more mature libraries), I doubt it will work in Python 3.
I complained about this problem in my blog in 2011 (see post here). The situation is better in other languages, but not yet in Python.
- I have been building Media Computation examples in GP, a blocks-based language (see post here).
- Jeff Gray’s group at U. Alabama has built Blockly-like languages Pixly and Tunely for pixel and sample level manipulations.
- Cynthia Lee at Stanford has been doing Media Computation in her classes in MATLAB and in C++
- The Calico project supports Media Computation in IronPython (based on Python 3) and many other languages, because it builds on .NET/MONO which has good multimedia support.
- We’re able to more and more in JavaScript-based Python implementations (like Pythy and Runestone), because JavaScript has excellent cross-platform multimedia support.
When we did the 4th edition of our Python Media Computation textbook, I looked into what we’d have to change in the book to move to Python 3. There really wasn’t much. We would have to introduce print
as a function. We do very little integer division, so we’d have to explain that. The focus in our course (non-technical majors, first course) is at a higher level than the differences between Python 2 and 3. I am confident that, at the end of our course, the majority of our students would understand the differences between Python 2 and 3. As we move more to browser-based IDE’s, I can support either Python 2 or 3 syntax and semantics. Preparing students for industry jobs using exactly CPython 3 is simply not a priority in our course.
The Future of Computing Education is beyond CS majors: Report from Snowbird #CSforAll
Last week, I attended the Computing Research Association (CRA) Snowbird conference of deans and chairs of computing. (See agenda here with slides linked.) I presented on a panel on why CS departments should embrace computing education research, and another on what CS departments can do to support the CS for All initiative. I talked in that second session about the leadership role that universities can play in creating state partnerships and influencing state policy (see the handout for my discussion table).
Amy Ko was in both sessions with me, and she’s already written up a blog post about her experiences, which match mine closely (including the feeling of being an imposter). I recommend reading her post.
Here, I’m sharing a key insight I saw and learned at Snowbird. Before the conference even started, our Senior Associate Dean for the College of Computing, Charles Isbell, challenged me to name another field that is overwhelmed with majors AND offers service courses to so many other majors. (Maybe biology because of pre-meds?) Computer Science is increasingly the provider of courses to non-CS majors, and those majors want something different than CS majors.
The morning of the first day was dedicated to the enrollment surge. CRA has been gathering data at many institutions on the surge, and Tracy Camp did a great job presenting some of the results. (Her slides are now available here, so you don’t have to rely on my pictures of her slides.) Here’s the bottomline: Student growth has been enormous (across different types of institutions), without a matching growth in faculty. The workload is increasing.
But here’s the surprise: Much of the growth in course enrollment is not CS majors. A large percentage of the growth is in other majors taking CS classes. The below graph is for “mid-level” CS courses, and there are similar patterns in intro and upper-level courses.
Tracy also presented a survey of students (slides available here), which was really fascinating. Below is a survey of (a lot) of intro students at several institutions. All the differences described are significant at p<0.05 (not 0.5 as it says). The difference in what non-majors want and CS majors was is interesting. Majors want (significantly more than non-majors) to “make a lot of money.” Non-majors more significantly want to “Give back to my community” and “Take time off work to care for family.”
U. Illinois has the most innovative program I have heard of for meeting these new needs. They are creating a range of CS+X degree programs. First, these CS+X programs are significant parts of the “X” departments.
But these stats blew me away: CS+X is now 30% of all of CS at U. Illinois (which is a top-5 CS department), and 50% of all admitted first years this year! And it’s 28% female.
It’s pretty clear to me that the future of computing education is as much about providing service to other departments as it is about our own CS major. We have suspected that the growth is in the non-majors for awhile, but now we have empirical evidence. I’ve been promoting the idea of contextualized-computing education, and the notion that other majors need a different kind of CS than what CS majors need. We need to take serious the education of non-CS majors in Computer Science.
How Can We Include Students with Disabilities in Computing Courses?: DO-IT Video
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.
Year: 2015
Runtime: 10:24 minutes
via How Can We Include Students with Disabilities in Computing Courses?: DO-IT Video.
JES 5.02 Now Released, and Media Computation 4th Edition Slides Available
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.)
In addition,
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
Recent Comments