Sources and Methods #44: Deep Learning with fast.ai's Jeremy Howard

jh-head.jpg

Jeremy Howard 101:

Jeremy on Twitter: JeremyPHoward

Free online programme / MOOC (“Practical Deep Learning for Coders”) at: fast.ai

“The wonderful and terrifying implications of computers that can learn” (YouTube)

Show Notes:

5:55 - My entire education is one degree in philosophy. 

7:30 - Joined McKinsey at 18 with extremely basic knowledge.

12:19 - At Fast.ai our target audience really is people who have interesting and useful problems, and have a feeling that using AI might be a useful way to do that, that maybe don’t have a background in machine learning. It’s the people I came across in my career who were working in extremely diverse industries and roles and geographies, who are smart and passionate and working on interesting and important problems but don’t have any particular background in computer science or math. There’s a snobbish-ness in machine learning, that most people in it have extremely homogeneous backgrounds, young, white, male, who have studied computer science at a handful of universities in America or Europe. 

David Perkins at Harvard, and his learning theory of the ‘Whole Game.’ 

18:10 - For some reason, the STEM field on the whole have gotten away with shoddy, slack teaching methods, where we expect the students to do the work of sticking with it for 10 years and putting it all together. 

20:02 - We’ve discovered that the most practical component in AI is transfer learning. Taking a model that someone else has created and fine tuning it for your task. It turns out that this is the most important thing by far for actually getting AI to work in the real world. Apply and transfer learning effectively. 

I think many people teach a list or a menu of things that they know, rather than really getting to student learning. 

22:41 - Each year, we try to get to a point where the course covers twice as much as the previous year, with half as much code, with twice the accuracy at twice the speed. So far, we’ve been successful at doing that three years running. 

28:48 - I think that will be one of the two most important skills over the next decade or two - the idea of how to work as a domain expert to provide appropriate data to a machine learning system and to interpret the results of those things in a way appropriate to your work. If you don’t know how to do it, you’re going to be totally obsolete. 

31:09 - Back in the early days of the commercial internet, being an internet expert was extremely useful and you could have a job as an internet expert and be in a company of internet experts, and sell yourself as an internet expert company. Today, very few people do that, because on the whole the internet is what it is, and there’s a relatively few number of people who need such a level of expertise that they can go in and change the way your router operates and such. I think we’re going to see the same thing with AI. 

39:08 - I started learning Chinese not because I had any interest in Chinese, but because I was such a bad language learner in highschool. I did six months of French, I got 28% and I quit. When I wanted to dig into machine learning, I thought one of the things that might be better to understand was human learning, so I used myself as a subject. A hopeless subject. If I can come up with a way that even I can learn a language, that would be great. And to make sure that was challenging enough, I tried to pick the hardest language I could. So according to according to CIA guidelines, Arabic and Chinese are the hardest languages for people to pick up. Then I spent three months studying learning theory, and language learning theory, and then software to help me with that process. 

It turns out that even I can learn Chinese. After a year of this - by no means a full time thing, an hour or two a day - I went to China to a top language learning program and based on the results of my exam got placed with all these language PhDs, and I thought wow. Studying smart is important. It’s all about how you do it. 

Spaced repetition is such an easy thing that anyone can do, for free, you can start using it. 

[Jeremy’s amazing Anki talk]

If you’re not using Anki, you’re many orders of magnitude less likely to remember a piece of vocab. So you come away like I did, thinking you can’t learn a language. But once you learn vocab, the rest is really not that hard. Don’t try to learn grammar, just spend all your time reading. 

45:04 - If you’re not spending a significant portion of your early learning, learning how to learn, then you’re going to be at a disadvantage to those that did for that entire learning journey. Spending 12 years at school learning things, but nobody ever thought you how to learn, is the dumbest things I’ve ever heard. 

Coursera’s most popular course is Learning How To Learn

Exercise is the other most important thing. 

49:03 - My third superpower is taking notes. Exceptional people take a lot of notes. Less exceptional people assume they’re going to remember. 

50:19 - Taking notes in class is kind of a waste of time. I don’t really see the point of going to class most of the time honestly, it’s probably being videotaped. 

52:54 - Learn Python if you’re interested in data science, deep learning. 

54:22 - I think there are two critical skills going forward, pick one. One is knowing how to use machine learning. And the other is knowing how to interact with and care for human beings. Because the latter one can’t be replaced by AI. The former one will gradually replace everything.

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

Sources & Methods #39: Mastery-based Learning with Chris Lee

cglee_small_400x400.jpg

Launch School 101:

Chris Lee on Twitter

Launch School

Launch School blog on Medium

Show Notes:

4:27 - (On leaving ‘ad tech’) Most software engineering jobs pay really well, of course, but - and this is probably the case with most jobs, period - you have to reconcile your personal beliefs with the primary goals of a money making enterprise. Everybody has to go through that. Ad tech in particular, especially in san francisco, is focused on growth, and focused on numbers.

It’s hyper focused on money, especially with regards to increasing conversions and eyeballs for the customers of the ad tech company. Which is a fine goal, but not my personal reason for getting up every morning. So it was hard for me to get excited for it. I was excited about my paychecks at first, but eventually you get numb to that.

6:18 - In the search for something different and more meaningful, we decided to focus on education (which led to LaunchSchool). My partner, Kevin, works on this with me, and I’ve known him since 2002. Early in our careers we were both computer engineers at IBM in Austin, Texas.

Early on, we read a book called Good to Great by Jim Collins and he talks about getting the right people on the bus.

9:18 - This is one of the things that makes us unique (in teaching coding skills), is our approach to Mastery Based Learning. It’s about making sure that people know what they’re doing each step of the way, and taking indefinite time on each step.

Ours is a curriculum where you have to demonstrate you understand each topic every step of the way. And we don’t know how long that will take. And we’re a 100% Mastery based program. We evolved over the past 3 to 5 years to that system because we were unhappy with the results we were seeing.

I think we are the only place where Mastery Based Learning is taught.

13:13 - We started this to try to figure out education. It was not a money making endeavor. So to us, teaching became the engineering problem to solve. I was not a proponent of Mastery Based Learning before LaunchSchool. Mastery Based Learning or Competency Based Learning is not unique to LaunchSchool, it’s a well known pedagogy in academic papers. But it’s really hard to implement.

Think about a physical classroom. Mastery Based Learning means that a student gets to occupy a seat in that classroom for an indefinite amount of time. That’s a really hard promise to make when our schools are tasked to usher through students. It’s not about training students and making sure they understand every topic, but getting people through.

15:39 - Complexity grows exponentially if not handled linearly. You have to handle one concept at a time, otherwise the complexity grows out of control.

16:49 - So, everyone wants to talk about algorithms. Well, there’s no point in talking about algorithms and solving complex algorithmic problems if you can’t handle loops. And lots of people can’t handle loops. Or nested loops. There’s no point. So to cover an advanced topic is pointless.

22:24 - I see a lot of people go from Explore - and bypass the Fundamentals - and head straight into Advanced. And then they realize there are so many knowledge gaps they have to plug in, and they spend years fixing that.

25:21 - We chose a pedagogy, and then built a pricing model around that.

27:30 - The value that students get from their education has such a lag from when they pay. There’s a tremendous lag. Think about Uber. You pay for an Uber ride, and you derive the value immediately. I view education almost like a restaurant that serves healthy food, and the restaurant says something like, ‘If you have eat here for 5 years, you’ll live an extra 10 years.’ It doesn’t taste great.

Coding bootcamps can make a big promise - ‘in a few months, you can get a job.’ And they have been getting away with that because the job market is so good. It’s so good - and there’s such high demand for software programmers - that they can take people who are just in that ‘Explore’ phase (of learning) and pay them. And that’s why bootcamps are very successful.

If you think about long-term though, it’s dangerous. Because you have a lot of people who are underskilled. 2 months, 3 months, that’s just not enough time to develop context or nuance for some of these problems. So if there’s a downturn, people are not going to be able to get these jobs. So it’s very dangerous.

I think coding bootcamps are a marketing success. It’s market forces that allow this to happen, and it’s the marketing - it appeals to people's’ desires for fast results. Lasting education needs to last decades, a career. So that’s the hard part of education.

32:14 - You don’t just want a job doing programming. Because most programming jobs, as I alluded to earlier with ad tech, are not very good, are not very satisfying. What you want to do is develop enough mastery so you can dictate some of your own terms on your own career. In order to do that though, you need to get pretty good. And that’s what we’re trying to do here.

Fail State Movie - Documentary on for profit higher education.

36:10 - The key word in higher ed these days is ‘retention.’ It isn’t learning - it’s how do we get students, and how do we get them to stay. Because the attrition rates in a lot of schools are close to 50%. Which is astounding if you think about it. So they’re trying to retain students any way they can. One way they do that is to through grade inflation. So everyone gets a good grade now. A C nowadays is a Fail. If a professor fails too many students, that professor will get pulled into the Dean’s Office and be told ‘What are you doing? If you do that, these students won’t come back.’

38:21 - You’re starting to see companies not demand a college degree anymore. Google doesn’t demand that. Deloitte said recently they won’t demand a college degree. And it’s because the college degree has begun to lose any meaning as far as quality. And part of the reason for that is because schools need to retain all the students, otherwise they can’t make money, so for that reason, they’re letting everyone through. It’s a compound effect here.

It means more than ever that a Mastery Based system is required. Learning institutions have to hold the bar, and educate students on why that is. I spend most of my time talking about Mastery Based Learning for this reason.

47:50 - (On international students in some countries) - It’s pretty easy in the United States to say, if you want to work at Google, you need to learn this (x). That’s a fairly straightforward statement to make. And you can decide, that’s too hard or I don’t want to do that. But when you don’t have that context, it’s really difficult to convince people to learn things deeply unless they have this natural intellectual curiosity.

53:10 - Everyone needs to learn to code just from the perspective of awareness.

Does everyone need to become a software engineer? That I don’t know, it’s more of a career choice. But programming concepts will touch more and more things.

More and more jobs will require how data flows and how systems connect.