Archive for December 11, 2009

Developing general knowledge from contextualized CS1

Mike Hewner is a PhD student working with me who has spent much of this semester figuring out what he wants to do for his dissertation.  The time between passing the qualifying examination and proposing a topic is a creative and fun period, where you get to try out and explore a bunch of ideas.  He’s settled on one, but one that he didn’t pick was still pretty interesting.  He agreed that I could share it here.

Mike is interested in social identity theory. In terms we might care about, how does a student decide to affiliate with computer science, and to define himself or herself as a computer scientist?  One of factors that influences affiliation is choice.  If you choose a path, you are more likely to feel affiliation or belonging for that path.  Contextualized computing education (like Media Computation or IPRE’s robotics CS1) should support greater affiliation, as long as students can choose the kind of context that they want.  But your run into two problems: (1) How can you possibly offer enough choices, economically? (2) How do you make sure that students learn general, transferable knowledge, and not just “Joe Shmoe’s favorite topics in CS”?

Mike thought about building a variation of the Keller method.  The Keller method is a self-paced learning structure, where students study on their own, and then take a test with a human grader who decides when the student has reached mastery.  The research results on the Keller method are really impressive.  It has simply fallen out of favor, and to the best of my knowledge, was never used for computer science.

So Mike’s vision is to give students a huge amount of contextualized computing learning materials (robotics, and media, and engineering, and video games, and bioinformatics, and…), and support for them to pick a path through those materials that best match their interests and cover the topics we want in a CS1.  That’s the self-paced part.  Now comes the test part.

As a group of students finish a section (say, on arrays, or on iteration) each in their own context and language, the group of students meet with a facilitator (a professor or TA, like in problem-based learning).  They are given a task like, “Build a Powerpoint slide show that explains what arrays really are.”  The students now have to work together to explain this CS concept in general terms, that each learned in their own context and the language of that context.  Now you have the kid who learned MATLAB for Engineering talking about iteration to the kid who learned PHP for Web pages, and they have to figure out what’s the same in each language and context.  The idea is that each student learns what they want (to increase affiliation), but has to collaborate with those in different contexts in order to develop transferable knowledge.

Like I said, Mike isn’t going to do this — it’s pretty big (e.g., just assembling and possibly creating that mound of learning materials) and complicated to be a dissertation.  I did think it was an interesting example of how to balance student choice and the goal of learning knowledge that transfer beyond the context.

December 11, 2009 at 6:20 pm 1 comment

Future of Computer Science Education

I’m helping to write a chapter on the status of computer science education, and all of us helping to write the chapter were asked to make a pass on what we foresaw as the “Future of Computer Science Education.” I thought it would make a nice blog post for the end of National Computer Science Education Week. (I won’t name my co-authors here — I’m giving myself freedom to dream what I’d like to see in 10-15 years, which might not match others’ visions, so I’ll give them the freedom to ignore me 🙂

Computer science classes will be accepted as meeting general science requirements in most state curricula. We require students to take science classes in high school for many reasons, but I’m going to focus on two: (1) To understand some of how their world works and appreciate that there is more going on than can be seen by their senses, and (2) to use methods of scientists, like hypothesis generation, experiment, and analysis of results.

Certainly, the virtual world is as important to students’ future lives as any slice of the natural world.  It is important for students to know about the processes of mitosis and meiosis in generating cells.  It is as important for students in their everyday lives to understand that all information in a computer is stored in bytes, and thus a byte of a downloaded image might be interpreted as a machine instruction.  Computer science is no less important for focusing on the designed world.

The work processes of computer scientists are like those of natural scientists, and students could learn the processes of science in computing, perhaps more easily than when working with the physical world. Defining a program is creating a hypothesis. Running a program is conducting an experiment.  While few computer science classes are created in order to teach science process, they could be, and perhaps should be, to earn the right to be counted toward achieving science learning standards.  Computing taught as a science will introduce computing as a powerful tool for supporting thinking.

Computer science majors will become the smallest percentage of students studying computing. When computer science is taught in all high schools, to give students more options in meeting their science requirements, more students will discover their love of computing and will pursue the field in undergraduate years.  However, few of these students will study “computer science.”  Computing will continue to specialize and to develop new degree programs, such that field of “computer science” will diminish.

Herb Simon called the computer a “millennial device,” a device (like the printing press) comes along once a millennium and defines the next millennium.  Many academic disciplines would emerge from such a device.  It would be surprising if we got the name of the field and its definition right in the first 50 years of a millennium-long revolution.  We do not have a “printing press science” or even a “book science,” though maybe there was something akin to that in the first 50 years of the printing press.

We already have five disciplines defined in our curricular volumes.  There are many more disciplines and degree programs emerging already beyond those five, such as Informatics, Bioinformatics, Video Game Design, and Computational Media. Over the next 10 years, more will emerge.

Jim Foley has pointed out that 100 years ago, you got a degree in “Engineering.”  Somewhere along the way, people realized that that was too broad, and the disciplines of Mechanical, Aerospace, Civil, and Electrical Engineering were defined.  Computing is even more broad than engineering, and will be defined in terms of subdisciplines, too.  Such specialization enables growth in the overall field and greater advances along each branch of division.

Computing education will broaden beyond the majors, and even beyond undergraduates.  A joking criticism of the ACM SIGCSE community read on the Internet is that it is really “SIGCS1,” playing on the curricular code name for the first course in computer science, “CS1.”  Much of SIGCSE focuses on introducing computing to the undergraduate major in computer science.  As more and more people want to know about computing, the computing education community will grow to address the broader needs of helping people understand computing at all ages.

A recent study estimates that, by 2012, there will be four times as many professionals programming computers who are not professional software developers as there are professional software developers.  The vast majority of people building software will not be computing majors.  Who will help them learn computing?  Should they have to teach themselves all the lessons learned by computer scientists on how to develop software effectively and efficiently?  Computing educators will have an important audience in the non-majors who need to use computing in a significant, intellectually deep way.

Computing is important for everyone.  It will become accepted as meeting science requirements in secondary school. There will be a broad diversity of undergraduate majors studying computing, and even more who do not plan to become computing professionals.  There will be many adults needing to learn and re-learn computing.  The demand for computing education will be enormous, at many levels in many forms. The computing education community will need to grow and diversify to meet this demand.

Computing will use distance learning technologies effectively. Apart from the language interpreters and compilers that our students use to program, few computing courses use technology to facilitate learning.  That’s surprising.  No discipline is better suited to having its concepts and practices  easily supported by a computer.  Providing scaffolding and guidance on a computer for computing should be an obvious target for learning technologies development.  Computer science departments are not at a lack for software development expertise.

Distance learning is becoming more important, for reaching those students who cannot reach traditional institutions, e.g., such as full-time high school teachers who need to develop new understanding of computing to teach these new classes.  Demand for computing education will grow, and there will be increased demand for computing education at a distance.  This pressure will lead computing teachers, finally, to develop the learning technologies that will aid students in learning computing.  These technologies will be developed to support the growing number of students at a distance.

The sum of these predictions leads to a technologically literate citizenry —  literate about how to use computing to support thinking, not just literate about how to use computers.  People will learn more about computing using computing, through effective implementation of learning technologies.  The result will be new levels of productivity and advances in many disciplines.

December 11, 2009 at 5:55 pm 4 comments


Enter your email address to follow this blog and receive notifications of new posts by email.

Join 11.4K other subscribers

Feeds

Recent Posts

Blog Stats

  • 2,094,267 hits
December 2009
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
28293031  

CS Teaching Tips