Sources and Methods #43: Teaching Programming with Matthias Felleisen

 
felleisen-picture4-2cak92e.jpg
 

Show Notes:

Bootstrap World - Teaching Outreach Project

Racket-lang.org - Our  Research Programming Language

Personal webpage

7:00 - I am a transplant from Germany. I came as a Fulbright student when I was 21. Fulbright decided that my major in Germany corresponded to an MBA combined with an engineering degree, which they thought was MIS, or Management Information Systems. So they put me in Tucson, Arizona.

I fell in love with the place. I moved into a house with a bunch of people. One of them was an astrophysics PhD student. And he told me what a PhD was, because I had no clue. And he said ‘A PhD is when they pay you to think.’ I couldn’t believe it. I almost tripped when he said it - they pay you to think? Sign me up.

I switched majors to Computer Science... Went to a PhD program in Indiana. After 3.5 years, it was time to go, and the choices were between Berkeley and Rice, my top two offers. It took me only a few short seconds to decide that Rice was it. Because when I interviewed there, 8 out of 12 people had published in the conference that I consider my home.

At Berkeley, out of 45 people, only 1 person was even in that realm. So I decided to go to Rice.

9:45 (On moving to Northeastern) Northeastern definitely had a plan to turnaround and become a research university. And it’s always fun - just like I had decided to go to Rice, Rice was ranked in the top 20, but Berkeley was probably #1 or 2 in computer science - but it’s always fun that’s at a place that’s moving up. And Northeastern had a plan to move up. And they have risen in Computer Science, it’s on the map. I was able to create a programming language group that is definitely one of the best in the country.

12:20 - Functional programming for the lay person is basically what you learn in Algebra, in middle school or high school. Let me explain it.

Algebra, when you learn it, is the weird idea of maybe getting a word problem and devloping an expression that describes the problem in there and then plugging variables into the expression and calculating out the results. And then nobody looks at it, and throws it away. The teacher throws it away. That’s algebra, and it sounds weird that functional programming is the same as algebra, but it is.

What you write down in a functional program are these functions or variable expressions as some algebra textbooks call them. And the big difference is that in addition to numbers, you have other forms of data. In algebra, you can think of expressions - just about manipulating numbers. Now imagine that in addition to numbers, you also have texts. For example, the symbol +, which means 1 + 1 is 2. When you say hello + a spacebar + world, gets you the text ‘hello world.’

Just like you manipulate numbers in algebraic expressions, you can manipulate images, texts, and other kinds of interesting forms of data that you have about people, about the world, about anything you like. Functional programming is a very enriched form of algebra.

19:00 - I was probably the first academic in computer science to do a broad based outreach program.

And I saw tremendous problems that children had aligning the knowledge that they had from algebra with what they saw in programming. Because imperative program - or what I sometimes call dysfunctional programming - has a cognitive dissonance to algebra, which is the closest thing kids know.

20:28 (On the lessons from watching children trying to code) I came to a conclusion that is to this day not clear to the vast majority of people who teach computer science. The conclusion is that no programming language that is in use by real programmers is suitable for beginners.

Racket Computer Language

29:29 - At this point, we are the largest organized Computer Science outreach program in schools in the United States. But it took this insight that we can’t radically change education processes.

Let’s incrementally change student behavior, not a wholesale change here.

39:44 - I belive that Computer Science is actually the discipline of developing and applying problem solving processes.

45:40 - (On educational outcomes, measuring them, etc) Let me recommend a book: Let’s Kill Dick and Jane.

54:07 - The United States spends more money on education than any other OECD country. So where does this money go? What is this money used for? I don’t believe it arrives in the classroom. If we spend more money than everyone else already, I don’t believe pumping more money in will solve the problem either. It goes to administrative things, overhead. What we’re seeing in higher education now over the last 20 years is that higher education is catching up with K-12. My own college has grown from 4 or 5 administrative assistants that fit into a small dean’s suite on the floor downstairs, to occupying the entire second floor, which is probably 30-40 people. In just 3 years, since the new dean arrived. If you have a bigger staff, than you look more important. If more people report to you, you’re more important. I have routinely refused promotions to administrative positions. Bureaucracies grow much much faster than then quality in the classroom.

This existed in K-12 education way before it existed in higher education.

To follow my work:

Bootstrap World - Teaching Outreach Project

Racket-lang.org - Our  Research Programming Language