Posts tagged ‘programming’

Who’s Teaching the Teachers?

This new report from the FDR Group and Thomas B. Fordham Institute has put its finger on something really important.  What are pre-service teaching professors emphasizing in their classroom? From the report: “The professors see themselves as philosophers and evangelists, not as master craftsmen sharing tradecraft with apprentices and journeymen. Stanford University’s David Labaree, a respected historian of education, explains that as far back as the early twentieth century, school system reformers were pushing for efficiency and utility, while education school professors wanted schools to help individual children blossom and develop a lifelong love of learning. eventually the professors lost that argument and the K–12 system embraced the efficiency movement. But this outcome cast education professors as little more than vocational instructors, preparing their charges to enter a uniform teaching force and school system—a system which eschewed the professors’ idealistic educational values. ”

This meshes with my experience as a graduate student in education. I found several of my education classes to be surprisingly boring — much more interested in talking about education than innovating in education. On average, my education professors were less likely to have interactive classrooms where they tried new teaching approaches than were my teachers in other disciplines (including computer science and statistics). On the other hand, I don’t share the sense in the report that if we “fixed” teacher education, we would “fix” teachers. I learned when I was an Education graduate student that pre-service teacher education is amazingly hard to fix. You get a new undergraduate who wants to be a teacher, and you say to him or her, “Here’s what it means to be a good teacher!” And they think, “I just went through 12 years of being a student! I know exactly what it means to be a good teacher!” It’s really hard to dissuade a student from their 12 years of experience that there is a different model for being a good teacher.

The last point in the quote above is particularly relevant for us as computing educators. Education professors seek to avoid being merely “vocational instructors,” so they emphasize being “change agents” (a term from the report) rather than focusing on developing the tradecraft of teaching. Doesn’t this sound a lot like the tensions in computing education? Are we merely vocational instructors, passing on the tradecraft of programming and software development? Or should we be teaching new ideas, so that these students can be “change agents” in the software industry? And if we emphasize the latter, does that mean that we do a bad job of the former?

When it comes to teacher education, pragmatism beats idealism. But most education professors — save for a small minority — are complacent with antiquated teaching philosophies.

These conclusions, released today in a report by FDR Group and the Thomas B. Fordham Institute on the views of education professors, summarize the “sobering data” gathered from surveys distributed at colleges and universities across the country.

“Idealism, good intentions, and progressivist thinking suffuse what education professors strive to impart to prospective teachers, despite tension between these values and the policies pursued by school districts and states,” the report says. “Teacher educators show only modest concern for real-world challenges…. even though K-12 teachers often say these are among the most difficult elements of teaching.”

via News: Who’s Teaching the Teachers? – Inside Higher Ed.

September 29, 2010 at 10:07 am 6 comments

The Right to Hack, not to Flash

Ian Bogost wrote a really interesting blog piece about the whining of developers over the loss of Flash on the iPhone/iPad platform.  Most of the respondents are going on and on about how Ian got it wrong and Apple is evil.  That’s entirely separate from Ian’s real point which is that complaining about Flash in indicative of the state of computational literacy today — learn a new platform!

But what does it say about the state of programming practice writ large when so many developers believe that their “rights” are trampled because they cannot write programs for a particular device in a particular language? Or that their “freedom” as creators is squelched for the same reason?

I wonder if it doesn’t amount to an indictment of the state of computational literacy.

via Ian Bogost – Flash is not a Right.

Developers today can only work in Flash?  They can’t learn Objective-C?  Nobody can build tools that compile to Objective-C, so that the developer has powerful tools but the app is built to Apple’s specs? I thought that good programmers built tools and learned new languages and platforms.

Programmers have a right to program, to “hack.”  As Ian points out, they don’t have a right to Flash.  More to Ian’s point, good programmers are flexible, can learn new tools, and when necessary, build new tools.

Apple may be making a big mistake here, and may be in the wrong.  I really don’t understand those issues well enough.  I do recognize Ian’s point, which is really about computing education: Stop whining and learn another way!

May 7, 2010 at 9:14 am 15 comments

Compose Your Own — Music and Software

Really exciting piece by Jason Freeman, Georgia Tech music professor, in the New York Times yesterday.  I think what he says goes just as well for software — so many of us use it, so few of us express ourselves with it.

These days, almost all of us consume music but few of us create it. According to a recent National Endowment for the Arts survey, only 12.6 percent of American adults play a musical instrument even once per year. The survey does not report how many of us compose music, but I suspect that percentage is even smaller.

It saddens me that so few of us make music. I believe that all of us are musically creative and have something interesting to say. I also wish that everyone could share in this experience that I find so fulfilling.

via Compose Your Own – Opinionator Blog – NYTimes.com.

April 23, 2010 at 10:15 am Leave a comment

Is learning to program inherently hard?

In our educational technology class yesterday, we read and discussed a classic paper by John Anderson, Albert Corbett, Ken Koedinger, and Ray Pelletier, Cognitive Tutors: Lessons Learned from The Journal of the Learning Sciences (1995, 4(2), 167-207).  This paper presented 10 years worth of data on cognitive tutors, including the Lisp Tutor.  When the Lisp Tutor was tested in 1984, tutor-using students completed exercises 30% faster and performed 43% better on a posttest.  In 1991, they did a more careful evaluation under a structure that was more like a real course.  In that one, tutor-using students completed exercises 64% faster and still did 30% better on a posttest.  Wow!

Yet, the students weren’t really learning to program.  Yes, they learned Lisp really well.  They knew nothing about debugging.  They didn’t know anything about going from a problem to a program.  In class, we made the good argument that those limitations are good things.  The Lisp Tutor succeeded because it made the task manageable. CS1 has too large a cognitive load.

But here’s the question we got to wondering about: Could you build a cognitive tutor for all of programming?  Cognitive tutors teach process, like problem-solving.  They guide students through a process using a technique they call “model-tracing.”  Designing is not a fixed process — there is no single path, and it involves tradeoffs.  Debugging is an immensely difficult task, requiring the programmer to internalize a dynamic mental model of the program.  These aren’t traceable problem-solving processes.

CHI2010 is going on this week here in Atlanta. I’m actually not attending (too expensive for too little that’s close to what I do), but I am following the Twitter feed and reading some of the papers.  One of those is a really interesting paper on Toque: designing a cooking-based programming language for and with children. A group of researchers at U. Maryland College Park (with the always-intriguing Allison Druin) worked with children to design a programming language for themselves and other children, which they programmed using a visual notation input through body motions (tracked via a Wiimote).  As I scanned through the paper, the headline leaped out at me,“Confusing and Boring”: Loops. Even when you have gifted designers, non-textual languages, and no keyboards, loops are just hard.

So what makes programming so hard to learn?  Here’s a possibility: It’s inherently hard.  Maybe the task of programming is innately one of the most complex cognitive tasks that humans have ever created.

Is it really harder than most other tasks? In considering this premise, I keep coming back to debugging.  Physics wants students to develop a mental model of the physical world, one where gravity tugs and friction resists and electromagnetism is understood even if never seen.  We have evidence that not all students really develop this complete mental model.  However, using equations that can be applied plug-and-chug, and a limited model, students can get by, and even take jobs using this more-limited model of Physics understanding.

How do you debug without really understanding how the code works?  How do you debug at all without developing a mental model of the program?  There are still cognitive scientists who disbelieve that humans actually develop executable/runnable mental models at all.  I bet someone could prove that they exist using computer programming, because programmers have to have them to successfully understand and fix program behavior.

I don’t really believe that programming is the most cognitively complex activity humans have created.  I am wondering about how hard it is, how to measure that complexity, and how the challenge of computing education may be greater than the challenge of other forms of STEM education.

April 14, 2010 at 10:41 am 15 comments

Newer Posts


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

Join 3,101 other subscribers

Feeds

Recent Posts

Blog Stats

  • 2,184,824 hits
April 2026
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
27282930  

CS Teaching Tips