Posts tagged ‘image of computing’
Audrey Watters’ excellent post on Learning to Code in 2012 pointed me to Jeff Atwood’s piece (linked at the bottom). I want everyone to learn code, so I am in direct contradiction to his position, “Please don’t learn to Code.” Jeff and I disagree primarily on two points, both of which are issues of definition:
- Most people who write code are not trying to create code solutions. Most people who write code are trying to find solutions or create non-code solutions. By “most people,” I do mean quantitatively and I do mean all people, not just professional programmers. We know that there are many more people who write code to accomplish some task, as compared to professional programmers. When I visited the NASA Goddard Visualization Lab last month, I met the director Horace Mitchell, who told me that everyone there writes code, whether they are computer scientists or not. They write code in order to explore their data and create effects that they couldn’t given existing visualization systems. They are trying to create great visualizations, not great code. They simply throw the code away afterward. This is a critical difference between what Jeff is describing and what I hope to see. We agree that the goal is a solution. I want everyone to have the possibility of using code to create their solution, not to create code as the solution.
- Most people who program are not and don’t want to be software developers. Most of the people that I teach (non-CS majors, high school teachers) have zero interest in becoming programmers. They don’t want to be “addicted to code.” They don’t want a career that requires them to code. They want to use coding for their own ends. Brian Dorn’s graphic designers are a great case in point. Over 80% of those who answered his surveys said “No, I am not a programmer,” but everyone who answered his surveys wrote programs of 100 lines or more. Not everyone who “programs” wants to be known as a “programmer.”
The problem is that we in computer science often have blinders on when it comes to computing — we only see people who relate to code and programming as we do, as people in our peer group and community do. There are many people who code because of what it lets them do, not because they want the resulting code.
“You should be learning to write as little code as possible. Ideally none.” And people who want to do interesting, novel things with computers should just wait until a software developer gets around to understanding what they want and coding it for them? I could not disagree more. That’s like saying that the problem with translating the Bible is that it made all that knowledge accessible to lay people, when they should have just waited for the Church to explain it to them. ”Please don’t learn to code” can be interpreted as “Please leave the power of computing to us, and we’ll let you know when we’ll make some available to you.”
It assumes that more code in the world is an inherently desirable thing. In my thirty year career as a programmer, I have found this … not to be the case. Should you learn to write code? No, I can’t get behind that. You should be learning to write as little code as possible. Ideally none.
It assumes that coding is the goal. Software developers tend to be software addicts who think their job is to write code. But it’s not. Their job is to solve problems. Don’t celebrate the creation of code, celebrate the creation of solutions. We have way too many coders addicted to doing just one more line of code already.
Mike Hewner may be the most technically adept student with whom I’ve worked — he’s a former Senior Software Engineer from Amazon. He’s written probably the most intensely qualitative dissertation of any student with whom I’ve worked. Mike used a grounded theory approach with 37 interviews. The amount of analysis and coding he did is staggering.
His question is one that impacts all computer science teachers. We know (from lots of sources) that students don’t really understand computer science. Mike set out to document how students’ misunderstandings lead them astray in their CS undergraduate degree program, e.g., avoiding some classes because they misunderstood what they were about, or pursuing some specialization because they thought it was something that it really wasn’t. The surprising result was that he didn’t really find evidence of that. Instead, students simply trusted the curriculum — they didn’t know what was coming, but they didn’t worry about it.
As I learned from Mike’s process, grounded theory results in a “theory,” i.e. a description of a mechanism. Mike’s theory describes how students make educational decisions. His theory tells us that factors that shouldn’t really matter (like whether the intro course is at 8 am) do impact decisions like whether to pursue CS as a major. I’ll give away Mike’s punchline: Students use “enjoyment” to decide if they have an affinity for a subject. They turn the question “Should I be a CS major? Am I good at it?” into “Did I enjoy my CS class? Did I enjoy another class more?” They don’t really distinguish between “I have a hard time understanding functions” and “The class was at 8 am” or “That was a lousy teacher.” Not enjoyment means no affinity, which means look for something else. Once students decide that they have an affinity for something, they do develop a more goal-based decision making process — they’ll stick through the hard classes, because it helps them achieve the goal of the degree that they’ve decided that they have an affinity for.
Mike is defending on Friday — I’m really looking forward to it. I heard the practice talk Tuesday and was impressed. Assuming all goes well, Mike will be joining Rose-Hulman in the Spring.
Title: Student Conceptions About the Field of Computer ScienceMichael HewnerHuman-Centered ComputingSchool of Interactive ComputingCollege of ComputingGeorgia Institute of TechnologyDate: Friday, November 2, 2012Time: 1:00-4:00pmLocation: TSRB 132Committee:————-Prof. Mark Guzdial (Advisor, College of Computing, Georgia Instituteof Technology)Prof. Amy Bruckman (College of Computing, Georgia Institute of Technology)Prof. Keith Edwards (College of Computing, Georgia Institute of Technology)Prof. Ellen Zegura (College of Computing, Georgia Institute of Technology)Prof. Yasmin Kafai (School of Graduate Education, University of Pennsylvania)Abstract:————-Computer Science is a complex field, and even experts do not alwaysagree how the field should be defined. Though a moderate amount isknown about how precollege students think about the field of CS, lessis known about how CS majors’ conceptions of the field develop duringthe undergraduate curriculum. Given the difficulty of understandingCS, how do students make educational decisions like what electives orspecializations to pursue?This work presents a theory of student conceptions of CS, based on 37interviews with students and student advisers and analyzed with agrounded theory approach. Students tend to have one of three mainviews about CS: CS as an academic discipline focused on themathematical study of algorithms, CS as mostly about programming butalso incorporating supporting subfields, and CS as a broad disciplinewith many different (programming and non-programming) subfields. Ihave also developed and piloted a survey instrument to determine howprevalent each kind of conception in the undergraduate population.I also present a theory of student educational decisions in CS.Students do not usually have specific educational goals in CS andinstead take an exploratory approach to their classes. Particularlyenjoyable or unenjoyable classes cause them to narrow theireducational focus. As a result, students do not reason very deeplyabout the CS content of their classes when they make educationaldecisions.This work makes three main contributions: the theory of studentconceptions, the theory of student educational decisions, and thepreliminary survey instrument for evaluating student conceptions.This work has applications in CS curriculum design as well as forfuture research in the CS education community.
IEEE Computer Society and Educational Activities Board has launched a new website to help students understand computing and what university and career options are out there. There are also teacher resources, with alignment to various curriculum standards. Liz Burd championed the creation of the site, and its her vision and energy that made the site possible. There’s a page of interviews with career professionals, to give students concrete examples of what computing professionals do, including a couple former Georgia Tech students.
IEEE TryComputing.org is a free online pre-university computing education web site. IEEE TryComputing.org offers resources to inform and engage pre-university students, their teachers, school counselors and parents about computing and associated careers. Visitors can learn how to prepare for undergraduate computing studies and search for accredited computing degree programs around the world. They can also explore how computing careers can make a difference and meet computing professionals, students, and heroes. IEEE TryComputing.org features a variety of lesson plans on computing topics as well as tools and opportunities to support and encourage students in computing.
IEEE TryComputing.org is brought to you by the IEEE Computer Society and IEEE Educational Activities Board with funding from the IEEE New Initiatives Committee.
The NCWIT Aspirations Awards have highlighted the achievements of high school women aiming for computing careers. Last night, NCWIT started a new award, the Pioneer Award, given to women who paved the way for others in computing.
The awardees were Patricia Palumbo (left in picture) and Lucy Simon Rakov (right), who were both programmers on the Project Mercury Team. I loved their talks, not just for what they did on Project Mercury, but what they did the rest of their lives.
Patricia graduated with a mathematics degree from Barnard College, one of only two women. She was recruited by IBM and worked on the re-entry phase. I loved her story of what she did after that. She earned her Master’s degree in piano, and did work in computer music composition and image processing (Media Computation!). She has retired from computing, but still teaches piano and records in her home studio. She said that mathematics and music have always been her passions, and she saw the computer as “a general purpose tool” that could help any pursuit, any occupation, including music.
Lucy was on a team at IBM of 100 mathematicians, 10 of whom were women. They were among the programmers building the first real-time control system. She worked on the launch sequence, and in particular, worked on importing live radar data into the orbit computations. After IBM, she ran her own business, Lucy Systems Inc. (LSI) for 27 years. She encouraged the audience to follow their passions. She said that, when she’s doing mathematics and computing, she’s in “flow” and loses track of time. She told us to find those kinds of jobs.
We’ve talked here before about the issues of culture that drive women from computing. Here were two women who got into computing before the culture we know today was established, and they were driven by what the computer could do, and what they could do with a computer. That’s what we need to convey, in order to draw more diverse people into computing.
At the PACE meeting two weeks ago, we heard a presentation from Lauren Csorny, an economist with the US Bureau of Labor Statistics. She did a wonderful job, tailoring the results of the recent 10 year predictions to focus on computing.
Here’s the first and most important table: How BLS defines these jobs. The BLS doesn’t get to actually define the jobs — someone else in the Department of Labor does that. BLS counts employment within those occupation definitions.
Note carefully the distinction between Programmers and Developers! That’s a key distinction in terms of the predictions. Programmers write code that developers design. Software developers are the “creative minds behind computer programs.”
Here are predictions in terms of percentages of job growth:
The market for computer programmers is going to grow more slowly than the rest of the economy. Software developers (for both systems software and applications) are going to grow enormously fast. (Yes, grouping “Information security analysts, web developers, and computer network architects” into one job is crazy — they realize that, and that will likely be broken out in the next prediction in 2014.)
The BLS data give us a little more fine-grained view into the job growth vs. replacing existing employees in each of these categories:
Over the next ten years, there will certainly be the need to replace workers (due to age, or moving into a new category of job). But the greatest growth is in software developers. Programmers will have more replacement than growth. There will be growth (i.e., new jobs that don’t exist yet) among Software Developers.
I’ve been thinking about what these predictions mean for Computer Science. Should we be thinking about vocational concerns when considering the content of a degree program? We need to consider whether we’re preparing students for the future, for their future, and about the needs and opportunities that we can predict.
What do we want computer science graduates to do? Do we see them as filling the Computer Programmers slot, or the Software Developers slot? If CS wants to give up on the Software Developers slot, I’ll bet that IS or IT or even these new Information degree graduates would be willing to take those job.
If we in CS want to create Software Developers, how? What should we do? And how should educating Software Developers look different than educating Computer Programmers? Some specific questions:
- Do we need to teach software developers programming? I strongly believe that one can’t learn to design without learn something about one’s materials — you can’t learn to design software if you’ve never programmed software. But I’m willing to admit that I don’t have evidence for this, other than analogy. Architects learn something about strength of materials and civil engineering, but those are different degrees — the design of buildings versus the construction of buildings. But it probably depends on the kind of software developer, too. Systems software developers need to understand lower-level details than application software developers (a distinction in the BLS categories).
- Do we need to produce expert programmers? In our program here at Georgia Tech, and at many other degree programs I’ll bet, we have an explicit goal to produce graduates who have some level of expertise in coding. We teach Java in so many classes, in part, to produce excellent Java programmers. Is that important, if the programmer job is the one that is going to grow more slowly, and we have such an enormous need for software developers?
- Do we need to teach how to make data structures, or how to use them? Is it important to learn how to make linked lists and trees, or just how to use them and what their differences are? This has been a question for a long time in the SIGCSE community, and these job predictions make an argument that the low-level skills are more specialized and less generally useful now.
- Do we teach one language/paradigm, or many? The BLS predictions suggest to me, even more strongly, that we are doing our students harm by only showing them one language or style of language. ”Creative minds” know more than one way to think about a problem.
We might decide that the BLS data are not relevant for us. Andy Begel and Beth Simon did a really interesting study of new hires at Microsoft, and came away with a picture of what new software engineers do — a picture in sharp contrast with what we teach in our classes. In the four years since that study came out, I haven’t heard much discussion about changing curricula to address their issues. CS2013 may have a better chance at shaking up how we think about computer science curricula.
We’ve had Jesse Heines of U. Massachusetts at Lowell visiting with us for the last couple weeks. He gave a GVU Brown Bag talk on Thursday about his Performamatics project — which has an article in this month’s IEEE Computer! Jesse has been teaching a cross-disciplinary course on computational thinking, where he team teaches with a music teacher. Students work in Scratch to explore real music and real computing. For example, they start out inventing musical notations for “found” instruments (like zipping and unzipping a coat), and talk about the kinds of notations we invent in computer science. I particularly enjoyed this video of the music teacher, Alex Ruthmann, performing an etude through live coding.
Jesse and I talked afterward: Where does this go from here? Where could Performamatics have its greatest impact? We talked about how these music examples could be used in introductory computing courses (CS1 and CS2), but that’s not what’s most exciting. Is the greatest potential impact of computing education creating more CS majors, creating more developers? Developers do have a lot of impact, because they build the software that fuels our world (or maybe, that eats our world). But developers don’t have a monopoly on impact.
I argued that the greatest impact for computing educators is on the non-majors and their attitudes about computing. I showed him some quotes that Brian Dorn collected in his ICER 2010 paper about adult graphics designers (who have similar educational backgrounds and interests to Jesse’s non-majors) on their attitudes about computer scientists:
P2: I went to a meeting for some kind of programmers, something or other. And they were OLD, and they were nerdy, and they were boring! And I’m like, this is not my personality. Like I can’t work with people like that. And they worked at like IBM, or places like that. They’ve been doing, they were working with Pascal. And I didn’t…I couldn’t see myself in that lifestyle for that long.
P5: I don’t know a whole ton of programmers, but the ones I know, they enjoy seeing them type up all these numbers and stuff and what it makes things do. Um, whereas I just do it, to get it done and to get paid. To be honest. The design aspect is what really interests me a lot more.
These are adults, perhaps not much different than your state or federal legislators, your school administrators, or even your CEO. Brian’s participants are adults who don’t think much of computer scientists and what they do. There are a lot of adults in the world who don’t think much of computer scientists, despite all evidence of the value of computing and computing professionals in our world.
Will Jesse’s students think the same things about computer scientists 5 years after his course? 10 years later? Or will they have new, better-informed views about computer science and computer scientists? The 2005 paper by Scaffidi, Shaw, and Myers predicted 3 million professional software developers in the US by 2012, and 13 million professionals who program but aren’t software developers. That’s a lot of people programming without seeing themselves as computer scientists or developers. Would even more program if they weren’t predisposed to think that computer science is so uninteresting?
That’s where I think the greatest impact of work like Performamatics might be — in changing the attitudes of the everyday citizens, improving their technical literacy, giving them greater understanding of the computing that permeates their lives, and keeping them open to the possibility that they might be part of that 13 million that needs to use programming in their careers. There will only be so many people who get CS degrees. There will be lots of others who will have attitudes about computing that will influence everything from federal investments to school board policies. It’s a large and important impact to influence those attitudes.
I got beat up a bit after my talk at TTU Tapestry a couple weeks ago. Two teachers from the same school stopped me at lunch, after my keynote, and complained about how we at Georgia Tech run our CS1 for Engineers in MATLAB. ”How can you expect students to be able to succeed in a programming course, with no high school CS? Why don’t you offer some starter course with no programming first?” I tried to explain that students do succeed in all three of our CS1′s with no previous programming experience, and our data suggest that students learn and succeed (e.g., relatively small percentage drop-out or fail) in these courses. (This is in sharp contrast to the Peter Norvig piece about learning Java in 21 days.)
As the teachers went on with their complaints about me and Georgia Tech, more of the story came out. Some of their students had gone to Georgia Tech in Engineering, had floundered in the CS for Engineers course, and were calling these high school teachers regularly for help. ”They spend a huge amount of hours working in labs! More than others in their class, because they didn’t get the chance to take CS in high school. Some kids have band or cheerleading, and they can’t fit CS in. That shouldn’t mean that they have to spend so much extra time in lab to catch up!”
It’s that last argument that I had the most trouble with. Their students didn’t have the background knowledge in CS. It seems clear to me that those students should have to work harder than those that have the background knowledge. That the teachers thought that the extra work was unusual or extreme surprised me. There was an implicit assumption that, because these students didn’t get the background classes due to band and cheerleading, we at Georgia Tech should provide remedial classes. To be clear, it’s not that the CS wasn’t offered at their high school. Their school has two CS teachers. It’s just that cheerleading and band took priority over preparing for the Engineering program at Georgia Tech, which requires computer science.
What is the expectation of high school teachers for the workload in CS1? What is the expectation of high school teachers for what College CS classes will demand? Is it reasonable to expect Colleges to provide the introductory classes that others get in high school? Maybe it is reasonable for Colleges to provide more high school level classes, especially if we want to grow enrollment. But I do worry about the perspective that says that it’s reasonable to skip the intellectual background classes because of non-academic activities. I have nothing against non-academic activities like band and cheerleading. However, the non-academic activities are not an excuse for a lack of background knowledge for higher-education — and if you do miss the background classes, you should expect to have to work harder when you get to College.
Spending too much time in airports lately, I’ve been catching up on some of my TED video watching — the ones that everyone says I have to watch, but I didn’t have time until now. One of those that I watched recently was Stephen Wolfram’s on A New Kind of Science and Wolfram-Alpha. I realized that he’s really making a computing education argument. He explicitly is saying that computing is necessary for understanding the natural world, and all scientists need to learn about computation in order to make the next round of discoveries about how our universe works.
Thanks to Sarita Yardi for these. Talk about CS Unplugged!
The below announcement was posted by Dr. Chris Stephenson, Executive Director of the Computer Science Teachers Association (CSTA), on the SIGCSE-Members list. This is really important — the whole Running on Empty report came from a comparison of state curricula to the current model curriculum.
I am glad that the draft is available for comment and encourage everyone to review it. I’ve read through it once, and don’t quite understand it. Why is it part of computational thinking that all high schools know how to convert between decimal, binary, octal, and hexadecimal (page 23 and 60)? Is it really necessary for all students to learn how to program mobile devices and write client- and server-side scripts (page 23)? I like the bullet about representation and trade-offs on digital information, but I would have liked some specifics on what students will learn, like the kinds of error that occur. The current draft seems tied to current technology and not to big ideas or principles. (Are most K-12 standards like this? The AAAS standards aren’t, but maybe they are the anomaly.)
I’m planning to re-read it, because I might not have got the big picture. I strongly encourage all of you to read and comment on it.
Since it was first released in 2003, the ACM/CSTA Model Curriculum for K-12 Computer Science has served as the national standards for pre-college computer science education. This year, CSTA formed a committee of specialists (co-chaired by Allen Tucker and Deborah Seehorn) from all educational levels to review and revise these standards.
Based on the following definition of computer science:
Computer science is the study of computers and algorithmic processes, including their principles, their hardware and software designs, their applications, and their impact on society and includes the following elements:
• hardware design,
• databases and information retrieval,
• computer security,
• software design,
• programming languages,
• programming paradigms,
• translation between levels of abstraction,
• artificial intelligence,
• the limits of computation (what computers can’t do),
• applications in information technology and information systems, and
• social issues (Internet security, privacy, intellectual property, etc.).
The K-12 Computer Science Standards provide learning outcomes for students in grade K through 12. These learning outcomes are divided into three levels:
· Level 1 (grades K–6) Computer Science and Me
· Level 2 (grades 6–9) Computer Science and Community
· Level 3 (grades 9–12) Applying concepts and creating real-world solutions
o Level 3A: (grades 9 or 10) Computer Science in the Modern World
o Level 3B: (grades 10 or 11) Computer Science Principles
o Level 3C: (grades 11 or 12) Topics in Computer Science
The learning outcomes within each level are organized into the following strands:
· Computational Thinking
· Computing Practice
· Computers and Communications Devices
· Community, Global, and Ethical Impacts
CSTA invites you to review and submit comments on the review draft of the new CSTA K-12 Computer Science Learning Standards: Revised 2011. A copy of the document is available for download at:
This site also provides access to an online form that will be used to collect all reader comments and suggestions. The review process will be open until June 15, 2011.
Chairs, CSTA Standards Task Force
I suspect that this is a bigger issue in computer science (and computing, broadly) than in other parts of academia, since our work is so easily commoditized. It’s certainly the case that in my School, creating companies is highly valued and faculty are often encouraged to be entrepreneurs (e.g., see the article our new Dean sent to the whole faculty Saturday.)
Q: Academic research has always cost money to produce, and led to products that made money for others. How is the “commodification” of research different today than in past periods?
A: Commodification means that all kinds of activities and their results are predominantly interpreted and assessed on the basis of economic criteria. In this sense, recent academic research is far more commodified than it was in the past. In general terms, one can say that the relation between “money” and specific academic activity has become much more direct. Consider the following examples: first, the amount of external funding acquired is often used as a measure of individual academic quality; second, specific assessments by individual scientists have a direct impact on departmental budgets; for instance, if I now pass this doctoral dissertation, my department receives a substantial sum of money; if not, it ends up with a budget deficit; third, the growing practice of patenting the results of academic research is explicitly aimed at acquiring commercial monopolies. Related to these financial issues are important and substantial changes of academic culture. Universities are increasingly being run as big corporations. They have a top-down command structure and an academic culture in which individual university scientists are forced to behave like mini-capitalists in order to survive, guided by an entrepreneurial ethos aimed at maximizing the capitalization of their knowledge.
I just discovered TileStack, which is HyperCard on the Web. Very cool, but the first comment on the introductory stack is something I heard a good bit these last few weeks at my workshops:
Python, for instance, is very easy to pick up. You might make the argument that it’s much easier to learn Speak [the HyperCard-like language in TileStack], but even if it takes twice as long to learn Python to do the equivalent of making a Stack with Speak, you can at least apply what you learned in many other places other than tilestack.com. Just seems pointless for people to waste their time learning something that only applies to a single website when they could learn something that they could use for many other applications.
Based on my experience, most computer science teachers (much more at the undergraduate faculty level than at the high school level!) believe that they only things worth learning in computer science are those that can be used to make applications.
- As soon as I started teaching about JES and Jython, a set of faculty in every workshop I taught this summer (five workshops, all pretty much full!) asked me, “But how do I build applications?” or “How can I run this outside of JES?” I explained that this was all possible, but that we don’t teach in the first semester how to build standalone applications. Several faculty insisted that I show them how to run Jython with our media libraries separate from JES, and were frankly not interested in listening to anything more I had to say unless they could be convinced that what I was showing them could lead to building standalone applications.
- Several faculty asked me, “But this isn’t Python 3.0, is it? When will you be covering Python 3.0?” That one particularly got my goat. I started responding, “I’m barely covering Python 1.0 in here! I’m trying to teach computer science with the minimum language features, much less whatever special features are in the latest version of a language!” That response seemed to carry some weight.
I was really surprised about that. I hear people regularly decrying the fact that computer science in most states is classified under vocational education. But it’s certainly the case that many university faculty buy into that model! I regularly was told by faculty at these workshops that computer science is only worth learning if it leads to job skills and application-building capabilities. CS education is purely utilitarian, in this model.
Why do we teach people the difference between mitosis and meiosis, or about evolution, or that planets orbit the sun? None of those are job skills, and they certainly won’t lead to building marketable products. Isn’t knowing about computer science and one’s virtual world at least as important as understanding this level of detail about the natural world? I’m going to bet that, if someone were to do a survey, most university faculty don’t really believe in computational thinking, that knowing about computing at some beyond-applications level is important for everyone.
I’m writing from Chicago where I’m attending the International Conference of the Learning Sciences 2010. It’s pretty exciting for me to be back here. I helped co-chair the 1998 ICLS in Atlanta, but I haven’t been at this conference since 2002, when my focus shifted from general educational technology to specifically computing education. The theme this week is “Learning in the Disciplines.” I’m here at the invitation of Tom Moher to be part of a panel on Friday morning on computing education, with Yasmin Kafai, Ulrich Hoppe, and Sally Fincher. The questions for the panel are:
- What specific type of knowledge is characteristic of computer science? Is there a specific epistemology?
- Are there unique challenges or characteristics of learning in and teaching about computer science?
- What does learning about computing look like for different audiences: young children, high school, undergraduate, and beyond (e.g., professional scientists, or professionals from non-computing disciplines)? In the case of “non-computing professionals,” what do they learn, and how do they learn it (e.g.,what information ecologies do they draw upon, and how do they find useful information)?
- How do we support (broadly) learning about computer science?
In a couple weeks, I’m giving the keynote talk at the first AAI-10: The First Symposium on Educational Advances in Artificial Intelligence. I’m no AI person, but this conference has a strong computing education focus. I’m planning to use this as an opportunity to identifying challenges in computing education where I think AI researchers have a particularly strong lever for making things better. Not much travel for that one — I get to stay in Atlanta for a whole week!
In getting ready for my talk Friday, I’ve been trying to use themes from learning sciences to think about learning computing. For example, physics educators (BTW, Carl Weiman is here for the opening keynote tonight) have identified which physics concepts are particularly hard to understand. The challenge to learning those concepts is due in part to misconceptions that students have developed from years of trying to understand the physical world in their daily lives. I’ve realized that I don’t know about computing education research that’s looked at what’s hard about learning concepts in computing, rather than skills. We have lots of studies that have explored how students do (not?) learn how to program, such as in Mike McCracken’s, Ray Lister’s, and Allison Tew’s studies. But how about how well students learn concepts like:
- “All information in a computer is made up of bytes, so any single byte could be anything from the red channel of a pixel in a picture, to an instruction to the processor.” Or
- “All Internet traffic is made up of packets. So while it may seem like you have a continuous closed connection to your grandmother via Skype, you really don’t.”
Does anybody have any pointers to studies that have explored students learning conceptual (not skill-based) knowledge about computing?
I know that there is an argument says, “Computing is different from Physics because students have probably never seen low-level computer science before entering our classes, so they have few relevant preconceptions.” I believed that until I saw Mike Hewner’s data from his study of high school students in our Georgia Computes! mentoring program this last year. These are high school students who are being trained to be mentors in our younger student (e.g., middle school kids, Girl Scouts) workshops. They’re getting to see a lot of cool tools and learning a bunch about computer science. Mike found that they had persistent misconceptions about what computer science is, such as “Someone who is really great at Photoshop is a great computer scientist.” While that’s not a misconception about bytes or packets, that’s a misconception that influences what they think is relevant. The concept about bytes might seem relevant if students think that CS is all about great graphics design, but the packet concept interferes with their perception of Skype and doesn’t help with Photoshop — students might ignore or dismiss that, just as physics students say to themselves, “Yeah, in class and on exams, gravity pulls the projectile down, but I know that it’s really about air pressing down on the projectile.” So students’ misconceptions about what’s important about computing might be influencing what they pay attention to, even if they still know nothing about computer science.
I just finished reading James Gleick’s book Faster: The Acceleration of Just About Everything. It’s a 10 year old book now, but the story is still valid today. I didn’t enjoy it as much as his books Chaos or Genius. However, the points of Faster are particularly relevant for computing education.
One of Gleick’s anecdotes was on how AT&T sold Touch Tone dialing in 1964 as saving an average of ten seconds per seven-digit number dialed. Now, we have speed dialing.
In the post-Touch Tone generation, you probably have speed-dial buttons on your telephone. Investing a half-hour in learning to program them is like advancing a hundred dollars to buy a year’s supply of light at a penny discount…To save time, you must invest time.
Do some students and end-user programmers invest time in learning to program to “advance a hundred dollars to buy a year’s supply of light at a penny discount”? Are they looking to program in order to save time, to do things faster and more efficiently? Do they give up on learning to program when they realize that it doesn’t work that way?
The problem is that I don’t think that ever really happens for the individual writing code for him or herself. It’s hard to program. The time cost of programming amortizes over users. The development cost of Microsoft Office, amortized over millions of users, results in a profit for Microsoft. A few hours of a programmer’s time on some feature of Excel enables many hours of use of that feature by many users. But for any individual writing code for him or herself? Takes a lot more than 30 minutes of programming software to get the same usefulness of 30 minutes of programming speed-deal buttons.
So why program? In the Media Computation Python CS1 class, we tell students that they should program in order to create a replicable process (if you need something to be done the same way, maybe by others, many times), to create a process that many people can use (like when commercial software is created), or to communicate a process (like when trying to explain a theory of how something dynamic happens, like DNA transcription or evolution). Paul Graham tells us that hackers write software to create beauty. But few people successfully program in order to save time for themselves — you’d have to do something many times to make the benefits of use outweigh the cost of development.
Maybe it shouldn’t be that way. Maybe software development should be easier. I wonder if you could make it easier, and still keep all the fun, all the communicative power of programing languages, all the “Passion, Beauty, Joy, and Awe“?
The overall story of Faster may be relevant for understanding the decline in interest in computer science. Gleick claims that “boredom” is actually a modern word and concept. “To bore meant, at first, something another person could do to you, specifically by speaking too long, too rudely, and too irrelevantly.” Today, we are bored by simple silence — by not enough challenges, not enough multi-tasking, by too many choices. We have so many options for entertainment that we choose many at once, so that we drive, while listening to the radio, and talking on the cell phone (not texting or doing email, of course). Gleick (naturally, as an author) bemoans the death of the book, because readers are too easily bored to pay attention to a whole book, and always have the options of magazines or blogs or just 140 character “tweets.” Why would anyone make a career choice like “computer science” when there are so many other choices that are less boring, take less concentrated focus, take less time?
Gleick provides an afterword for the electronic version of the book (I read it on my Kindle), where he speaks to some of these concerns:
I believed when I began Faster, and believe now more than ever, that we are reckless in closing our eyes to the acceleration of our world. We think we know this stuff, and we fail to see connections. We struggle to perceive the process of change even as we ourselves are changing.
Powered by Qumana
Budget cuts and low enrollment have led to this:
In similar letters from Paul Tobias (Chairman, Albion College Board of Trustees) sent to the Albion faculty and the Albion family, the Board of Trustees reported that they have eliminated computer science as a major at Albion College and that Albion College may continue to offer a computer science minor. In the process, an untenured Assistant Professor has been notified his position will be discontinued after the 2010-2011 academic year. The letter to students also indicated “Students who are currently enrolled in the affected programs will receive personalized advising to enable them to accomplish their academic goals and fulfill their graduation requirements for their major in a timely manner.”
In other news coverage, they detail the cuts overall:
Majors in computer science and physical education and minors in dance, journalism and physical education will not be part of the college’s curriculum moving forward — a reduction strategy that will eliminate about 12 courses, said Dr. Donna Randall, the college’s president.
That comparison point really hit home. Newspapers are dying, so journalism is less valued and on the chopping block. Okay, I get that. Physical education is the least rigorous field of education to prepare teachers for, so if you have to chop one, that’s the least valued. And computer science is in that group.
To me, this is a sign of the dire straits of computer science and university budgets these days. More than that, it’s a sign that computing literacy among the general public is at an all time low. The uproar about these decisions is that they were made by a governing board, against the wishes of the faculty. This governing board sees computer science as being so useless, so lacking in value? The board made this decision based on “”how do we best prepare our students for meaningful … work in the 21st century?” What do they think computer science is?