Since I’ve been using blocks-based languages lately (see my posts on GP and MOHQ), I’ve been thinking more about the challenges of using blocks-based languages, and programming and learning CS more generally, when legally blind. One of our PhD students in the Human-Centered Computing PhD program is legally blind, and he generously came to visit me and brought with him one of his students who is legally blind and learning programming.
The first and biggest surprise for me was that most (about 85%) legally blind people can actually see. One of the people I worked with can see light/dark (which doesn’t help with programming, but does help him with way-finding and spatial navigation). The other one loves to program in App Inventor using high magnification on her Mac. She’s low-vision and finds the large splotches of color useful in figuring out her code.
The implication, they explained to me, is that some tactile-based affordances for blind people don’t work because low-vision blind people would prefer to use audio and what sight they have, rather than learn a touch-based encoding. I was surprised to learn that most blind people don’t learn Braille because it’s a complicated code, and low vision people would rather magnify the screen than learn the encoding.
Blind programmers who know Braille will often use an audio screen reader along with a Braille reader for a single line of text. It’s easier to scan a line (especially for syntax errors) with Braille than with a screen reader.
The second surprise was about their tools. They showed me Visual Studio and EdSharp, a plain text editor developed by a blind programmer for blind programmers. I asked what features made an editor good for blind programmers. They said, “It works with screen readers.” And really, that’s it. They don’t want specialized tools with non-standard interfaces because of the cognitive load of switching between the standard screen reader interfaces and a novel interface.
I didn’t realize how few tools go to the trouble of accessing the screen reader API’s and providing good mappings from the interface to text. Processing (all platforms) and NetBeans (on Windows) are completely unusable for blind people because they are inaccessible by screen readers. Visual Studio has become a new favorite IDE, not because of any special features, but because it does “it doesn’t crash and I can access it with a screen reader.”
I was particularly interested in the low-vision programmer’s use of App Inventor. We talked about what didn’t work for her and brainstormed what would make it better. One of the tougher parts of block-based languages is that scripts could be anywhere in a 2-D space. It’s hard to scan a 2-D space with a zoomed interface, and there’s no obvious interface for screen-readers. Having blocks snap to a grid would help a lot to make it easier to find scripts for both types of blind programmers.
We talked about how CS classes might be better designed for legally blind students. I was surprised to learn how much they dislike active learning activities in classrooms. They said that when the whole class breaks into small group discussions, they can’t hear their group. The definition of the group is by physical proximity, but they discern “close” by “loud.” They end up listening in to whichever group is loudest around them. They need a different kind of active learning activity.
My Blog@CACM post for July is about why I gave up on creating a CSP equivalent course at Georgia Tech — see post here. The conclusions are (a) I’m not convinced that AP is the best lever available for getting CS into Georgia schools that don’t have CS and (b) Georgia Tech already has a set of intro courses that cover CSP-like content, are contextualized for different majors, and are successful. I wish more universities had CSP-like courses.
Towards that end, I’m listing there the college-level CSP courses that I found when starting to build one for Georgia Tech. Offered here as a resource to others.
- U. California-Berkeley’s Beauty and Joy of Computing (BJC): http://inst.eecs.berkeley.edu/~cs10/su15/
- College of St. Scholastica: https://docs.google.com/document/d/1l6DkV8e3GqIi2Ws61BoZUS4aQkB6jaYjQVXOAMEu8Ys/edit
- James Madison University: https://w3.cs.jmu.edu/cs101/
- UTeach at U.Texas-Austin: https://cs.uteach.utexas.edu/
- U. Alabama: http://cs104.cs.ua.edu/
- U. Pennsylvania: https://sites.google.com/site/penncis101/
- U. Washington: https://courses.cs.washington.edu/courses/cse120/
I’m a fan of these first person female perspectives on what it was like to be a CS student. (Recall the Stanford one I posted recently.) I met Satoe at Snowbird last month.
When I approach female friends with the question “Why don’t you try computer science or computer engineering?” I often hear responses such as “I’m not good at math,” or “Do I look like a gamer boy to you?” The low participation of women in technical fields like computing can be seen as a vicious cycle: women feel as though they do not “belong” in technical fields to the degree that men do, leading women to avoid or shy away from those fields (Cheryan et al., 2009; Good et al., 2012; Lewis et al., 2016), potentially perpetuating women’s underrepresentation in technical fields. According to a report by Jane Stout, director of CRA’s Center for Evaluating the Research Pipeline and Tracy Camp, a CRA-W board member, “at all levels of the academic computing pipeline, men outnumber women by at least 3:1,” (Stout & Camp, 2014) indicating issues with mentorship and role models. In order to better examine this issue, I categorize the issue into two parts: barriers put up by the women themselves and external pressures. External pressures explain the male oriented culture and stereotyping. Women are disadvantaged by gender biases in the workplace as seen through the application process and promotion consideration. They also feel like they don’t belong in a world of ‘gamer nerds.’
We have now lost both Seymour and Marvin Minsky this year.
I met Seymour a few times, and heard him speak at several Logo conferences and at Alan Kay’s Apple Hill camps (and even contra danced next to him once!). Probably the most frightening meeting was when, as a PhD student, I sat next to Seymour at dinner, and he challenged my dissertation ideas for over an hour. At the time, one of the directions that I was exploring was the interaction of learning styles and how that might influence how we learn programming. (Yes, I was a learning styles believer, too.) Seymour did believe in styles of thinking, but didn’t buy the simplistic learning styles definition. He insisted that I read the book Neurotic Styles because he thought the psychoanalytic perspective provided more insight into how people might approach programming. I realized later that our discussion was probably just as he and Sherry Turkle were developing their paper Epistemological Pluralism and the Revaluation of the Concrete which has been one of my favorite Seymour papers.
While I had only a few direct experiences with Seymour, I have been mightily influenced by his papers, book, and most of all, his students. Yasmin Kafai, Brian Silverman, Amy Bruckman, Gary Stager, Mitchel Resnick, Uri Wilensky, Idit Harel, David Shaffer, David Cavallo, Marina Bers — I am hesitant to list them because I’m sure that I’m forgetting many. Seymour’s students have been my friends, mentors, (constructive) critics, colleagues, and co-authors. Through them, I have developed my understanding of constructionism and the power of computing as a medium for expression and learning.
What a wonderful legacy Seymour Papert has left us!
Seymour Papert, Co-Founder and Chairman of the Logo Foundation, died on July 31 at his home in Blue Hill, Maine. He has inspired millions of people around the word to be joyful and creative learners and teachers.
Source: Logo Foundation
I review for the WIPSCE conference (an international conference on K-12 computing), and found a phrase in one of the papers I was reviewing about computing education now being mandatory in the United States. Well, not really — kinda, sorta, in someplaces. It may be hard for educators outside the US to understand the decentralized nature of computing education in the US. The individual 50 states control primary and secondary school education by law, and some of those states (notably, California, Massachusetts, and Nebraska) are “local-control” — the state itself decides to shift almost all of the education decision-making to the individual school districts (easily a hundred in a small state, multiple hundreds in large ones).
Recently the National Association of State Boards of Education has come out with a policy update about CS education in the states. Useful — except for the local control states, where the state boards of education don’t really have that much power.
While educators and parents recognize computer science as a key skill for career readiness, only five states have adopted learning standards in this area. Tides are changing, however, as the Every Student Succeeds Act (ESSA) recognizes with its call on states to provide a “well-rounded education” for students, to include computer science standards. This NASBE Policy Update outlines what states need to consider as they develop computer science standards and improve instruction, highlighting several promising state efforts already under way.
How do local control states implement reforms like computing education? In California, they’re trying to pass legislation to create an advisory board about integrating CS into education. It’s all about advice and recommendation — the state can’t make the districts do much.
California legislators are reviewing a bill that would create an advisory board to integrate computer science into education.The Assembly legislation would create a 23-person panel overseen by the state Superintendent that would deliver recommendations by September 2017 on how to improve computer science education, and establish curriculum standards for grades K-12.The panel would comprise teachers, administrators and professors across K-12 and higher education, as well as representatives from government, parent associations and student advocacy organizations. The bill is backed by Microsoft and Code.org.
Massachusetts has just come out with their new state standards. I haven’t gone through them all, but from what I’ve seen (and knowing people who helped build it), I believe that they’re really high-quality. But they’re just voluntary. The districts have to be coaxed into adopting them.
Massachusetts public schools may start using new digital literacy and computer science standards as soon as this fall. The state board of elementary and secondary education unanimously approved the standards, which are voluntary, at its monthly meeting Tuesday.”Today’s vote recognizes the importance of digital literacy and computer science to modern life, work and learning,” board chairman Paul Sagan said in a statement. “These standards will help our students think about problem solving in new ways and introduce them to valuable skills they will need in today’s economy.”
I needed to look up a paper on Andreas Stefik’s page the other day and came across this fascinating new paper from him:
Phillip Merlin Uesbeck, Andreas Stefik, Stefan Hanenberg, Jan Pedersen, and Patrick Daleiden. 2016. An empirical study on the impact of C++ lambdas and programmer experience. In Proceedings of the 38th International Conference on Software Engineering (ICSE ’16). ACM, New York, NY, USA, 760-771.
(You can download it for free from his publications page: http://web.cs.unlv.edu/stefika/research.html.)
Since this is Stefik, he carefully describes what his paper is saying and what it’s not saying. For example, he and his students measured C++ lambdas vs iterators — not a particularly pleasant syntax to work with.
The results are quite interesting. This graph is what caught my eye. For professionals, iteration and lambdas work just about the same. For novices, iterators blows lambdas away. Lambda-using students took more time to complete tasks and received more compiler errors (though that might be a good thing, in terms of using the compiler to find and correct bugs). Most interesting was how the differences disappeared with experience. Quoting from the abstract:
Finally, experienced users were more likely to complete tasks, with or without lambdas, and could do so more quickly, with experience as a factor explaining 45.7% of the variance in our sample in regard to completion time.
This is an example of my “Test, don’t trust” principle (see earlier blog post). I was looking up Stefik’s paper because I received an email from someone who simply claimed, “And I’m using functional notation because it’s much easier for novices than procedural or object-oriented.” That may be true, but it ought to be tested.
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).
Andy Ko was in both sessions with me, and he’s already written up a blog post about his experiences, which match mine closely (including the feeling of being an imposter). I recommend reading his 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.