Posts tagged ‘image of computing’
Not sure how (if?) we can see this in the US, but it sounds really good.
A sharp, witty, mind-expanding and exuberant foray into the world of logic with computer scientist Professor Dave Cliff. Following in the footsteps of the award-winning ‘The Joy of Stats’ and its sequel, ‘Tails You Win – The Science of Chance’, this film takes viewers on a new rollercoaster ride through philosophy, maths, science and technology- all of which, under the bonnet, run on logic.
Wielding the same wit and wisdom, animation and gleeful nerdery as its predecessors, this film journeys from Aristotle to Alice in Wonderland, sci-fi to supercomputers to tell the fascinating story of the quest for certainty and the fundamentals of sound reasoning itself.
Dave Cliff, professor of computer science and engineering at Bristol University, is no abstract theoretician. 15 years ago he combined logic and a bit of maths to write one of the first computer programs to outperform humans at trading stocks and shares. Giving away the software for free, he says, was not his most logical move…
With the help of 25 seven-year-olds, Professor Cliff creates, for the first time ever, a computer made entirely of children, running on nothing but logic. We also meet the world’s brainiest whizz-kids, competing at the International Olympiad of Informatics in Brisbane, Australia.
‘The Joy of Logic’ also hails logic’s all-time heroes: George Boole who moved logic beyond philosophy to mathematics; Bertrand Russell, who took 360+ pages but heroically proved that 1 + 1 = 2; Kurt Godel, who brought logic to its knees by demonstrating that some truths are unprovable; and Alan Turing, who, with what Cliff calls an ‘almost exquisite paradox’, was inspired by this huge setback to logic to conceive the computer.
Ultimately, the film asks, can humans really stay ahead? Could today\’s generation of logical computing machines be smarter than us? What does that tell us about our own brains, and just how ‘logical’ we really are…?
Ten years ago, professors in computer science departments everywhere wondered how undergraduates from a broad range of fields could be attracted to computer science (CS). We were convinced that this material would be vital for their careers, but we were up against negative stereotypes of programmers, and the prediction that most software jobs were about to be outsourced to the third world.
The tide has turned! The graph below shows annual enrollments over the past decade for the introductory computer science courses at UC Berkeley, Stanford, and the University of Washington. At each of these schools, and at colleges and universities across the nation, the introductory computer science course is now among the most popular courses on campus, and demands for advanced computer science courses are at record-breaking highs. At Stanford, where more than 90% of undergrads take computer science, English majors now take the same rigorous introductory CS course as Computer Science majors.
Dave Patterson and Ed Lazowska have written the above-linked blog post explaining why there has been such a rapid rise in enrollments in Computer Science at Berkeley, Stanford, and U. Washington. We’re seeing the same enormous rise in CS enrollments at Georgia Tech.
Beyond the intro course, we’re seeing a dramatic increase in CS minors. At places where everyone is required to take CS (e.g., Georgia Tech, Rose Hulman, Harvey Mudd), students have the option of going beyond that first course, and because the first course is tailored for them, they’re more likely to succeed at it. At Georgia Tech, we’re seeing students take more than just the required course and pursing a credential in CS, within their major. English majors (and lots of others) are seeing that computing is valuable.
Patterson and Lazowska offer two explanations (the numbering is mine):
1. So what happened? First, today’s students recognize that “computational thinking” — problem analysis and decomposition, algorithmic thinking, algorithmic expression, abstraction, modeling, stepwise fault isolation — is central to an increasingly broad array of fields.
That may be true, but I doubt it. It would be interesting and useful to survey these students, discover what majors they’re going into, and ask why they’re taking CS. (Kind of what we did across the state of Georgia in 2010.) I don’t believe that most people are aware of “computational thinking,” and even less, new students in higher-education. As evidence of this growing awareness, the authors cite a recent quote from Richard Dawkins (in 2013), “Biology nowadays is a branch of computer science.” That’s not a new position for Dawkins. In 2007 (at the depths of declining enrollment), he told Terry Gross on NPR, “Since Watson and Crick in 1953, biology has become a sort of branch of computer science.” This isn’t a sign of a recent awareness of the importance of “computational thinking.”
2. In addition to enhancing prospects within a chosen field, surely some of the reason for interest in computer science as a major or as a minor is to enhance employment opportunities after graduation.
But my gut is a bad judge of these things. We really ought to test these claims, rather than make claims without evidence. Who is taking CS now? And why? And how does it differ between these institutions?
The authors end their piece arguing for more faculty teaching more CS classes:
In higher education, the response has been sluggish at best. Computer Science is usually found in colleges of engineering — as is the case at Berkeley, MIT, Stanford, and Washington — so one indicator of accommodation is the fraction of engineering faculty in the field. Less than a fifth of the engineering faculty at these schools teach computer science courses, a fraction nearly unchanged in the last decade.
I strongly agree with the argument. The critical issue here isn’t about growing Engineering or if CS belongs in Egnineering. The critical issue is that computing is a form of literacy, not just a specialty skill, and we have to think about how to ramp up our offering of computing education so that it’s universally accessible.
I talked about this implication of our successful CS1’s for everyone in the May 2009 Communications of the ACM:
Finally, building successful, high-demand courses for non-computing majors gives us a different perspective on the current enrollment crisis. Students want these courses. Other schools on campus want to collaborate with us to build even more contextualized classes. While we still want more majors, we have an immediate need for more faculty time to develop and teach these courses that bring real computing to all students on campus.
I have a lot more that I want to think through and share about the seminar. I’m doing a series of blog posts this week on live coding to give me an opportunity to think through some of these issues.
I saw four sets of computing education research questions in live coding. These are unusual research questions for me because they’re Vygotskian and non-Constructionist.
Live coding is about performance. It’s not an easy task. The live coder has to know their programming language (syntax and semantics) and music improvisation (e.g., including listening to your collaborator and composing to match), and use all that knowledge in real-time. It’s not going to be a task that we start students with, but it may be a task that watching inspires students. Some of my research questions are about what it means to watch the performance of someone else, as opposed to being about students constructing. I’ve written before about the value of lectures, and I really do believe that students can learn from lectures. But not all students learn from lectures, and lectures work only if well-structured. Watching a live coding performance is different — it’s about changing the audience’s affect and framing with respect to coding. Can we change attitudes via a performance?
Vygotsky argued that all personal learning is first experienced at a social level. Whatever we learn must first be experienced as an interaction with others. In computing education, we think a lot about students’ first experience programming, but we don’t think much about how a student first sees code and first sees programming. How can you even consider studying a domain whose main activity you have never even seen? What is the role of that coding generating music, with cultural and creative overtones? The social experience introducing computing is important, and that may be something that live code can offer.
Here are four sets of research questions that I see:
- Making visible. In a world with lots of technology, code and programmers are mostly invisible. What does it mean for an audience to see code to generate music and programming as a live coder? It’s interesting to think about this impact for students (does it help students to think seriously about computing as something to explore in school?) and for a more general audience (how does it change adults’ experience with technology?).
- Separating program and process. Live coding makes clear the difference between the program and the executing process. On the first day, we saw performances from Alex MacLean and Thor Magnusson, and an amazing duet between Andrew Sorensen at Dagstuhl and Ben Swift at the VL/HCC conference in San Jose using their Extempore system. These performances highlighted the difference between program and process. The live coders start an execution, and music starts playing in a loop. Meanwhile, they change the program, then re-evaluate the function, which changes the process and the music produced. There is a gap between the executing process and the text of the program, which is not something that students often see.
- Code for music. How does seeing code for making music change student’s perception of what code is for? We mostly introduce programming as engineering practice in CS class, but live coding is pretty much the opposite of software engineering. Our biggest challenges in CS Ed are about getting students and teachers to even consider computer science. Could live coding get teachers to see computing as something beyond dry and engineering-ish? Who is attracted by live coding? Could it attract a different audience than we do now? Could we design the activity of live coding to be more attractive and accessible?
- Collaboration. Live coding is a collaborative practice, but very different from pair programming. Everybody codes, and everybody pays attention to what the others are doing. How does the collaboration in live coding (e.g., writing music based on other live coders’ music) change the perception of the asocial nature of programming?
I’ll end with an image that Sam Aaron showed in his talk at Dagstuhl, a note that he got from a student in his Sonic Pi class: “Thank you for making dull lifeless computers interesting and almost reality.” That captures well the potential of live coding in computing education research — that activity is interesting and the music is real.
I’m teaching a TA preparation course at Georgia Tech this semester. My students are PhD students who are learning how to be teaching assistants. In a session on dealing with classroom behavior and FERPA, I introduced peer instruction — I put scenarios up on the screen with four or five choices of responses, and the students used clickers to choose what they thought was the appropriate response. One of the scenarios was:
In a class discussion, a student starts yelling at another student: “You moron! C# is a terrible language for that! You should use C++!” What do you do?
I had a distractor that collected a surprising number of votes: “Just let it go – that’s the way CS students are.” And after the discussion period — that one still got some votes. The expectation that “That’s just the way CS students are” is surprisingly pervasive. Computer science teachers need to stand up to it, to demand change in culture and expectations.
Later in my class, the students are reading chapters of Diana Franklin’s new book.
So, you see, I was all too familiar with what my daughter was going through, but I was unprepared for the harassment to start in high school, in her programming class.I consulted with friends — female developers — and talked to my daughter about how to handle the situation in class. I suggested that she talk to you. I offered to talk to you. I offered to come talk to the class. I offered to send one of my male friends, perhaps a well-known local programmer, to go talk to the class. Finally, my daughter decided to plow through, finish the class, and avoid all her classmates. I hate to think what less-confident girls would have done in the same situation.My daughter has no interest in taking another programming class, and really, who can blame her.
A fascinating set of studies! (Follow the link below to see the description of the second one.) It reminds me of our GaComputes findings about the importance of early computing experiences for minority students. Just taking a single CS class changed the women’s definitions of what a computer scientist is. I’ve written on Blog@CACM about how under-represented minorities were more likely than majority students to have had some CS experience in middle or high school that influenced them. These studies together support the argument that having some CS in K12 will likely have a significant impact on later attitudes towards computing.
First, they asked undergraduates from the UW and Stanford University to describe computer science majors.
They found students who were not computer science majors believed computer scientists to be intelligent but with poor social skills; they also perceived them as liking science fiction and spending hours playing video games. Some participants went so far as to describe computer scientists as thin, pale (from being inside all the time), and having poor hygiene.
“We were surprised to see the extent to which students were willing to say stereotypical things, and give us very specific descriptions. One student said computer science majors play ‘World of Warcraft’ all day long. And that’s a very specific, and inaccurate, thing to say about a very large group of people,” Cheryan said.
However, women who had taken at least one computer science class were less likely to mention a stereotypical characteristic. There was no difference in men’s descriptions, whether or not they had taken a computer science class.
Doug Engelbart, visionary whose inventions led to the modern mouse, hypertext, computer-supported collaborative work, died on July 2 at age 88. Bret Victor wrote a wonderful piece about how statements about Doug’s inventions (like I just made) miss the point about what he was really trying to do. Recommended, and linked below.
If you truly want to understand NLS, you have to forget today. Forget everything you think you know about computers. Forget that you think you know what a computer is. Go back to 1962. And then read his intent.
The least important question you can ask about Engelbart is, “What did he build?” By asking that question, you put yourself in a position to admire him, to stand in awe of his achievements, to worship him as a hero. But worship isn’t useful to anyone. Not you, not him.
The most important question you can ask about Engelbart is, “What world was he trying to create?” By asking that question, you put yourself in a position to create that world yourself.
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!