How AI may impact career pathways and education

Predicting the future with AI seems like a mug’s game at this point but just for fun here goes.

AI may eliminate the need for much entry-level work. If a developer can spin up the components of a web app by entering the right prompts into an AI, then the future of software development roles becomes more architectural. Maybe it becomes more about experimentation, curation, design and other ‘higher-level’ tasks more related to communication, interaction, and testing with people.

But what happens to all the junior development work? And how does one get to become an architect? i.e. where is the career pathway to architect when there is less and less junior work available? It’s easy to picture a gap emerging, where entry-level jobs that give people the experience to make them suitable for big picture jobs are disrupted by AI, making it difficult for the next generation to climb from entry-level to big picture.

At the same time AI has a huge potential to disrupt education. AI teaching assistants may perform marking, AI teachers may deliver classes and respond to student prompts. I never thought my job as a teacher would seriously be threatened by technology, but in the long run, if AI keeps advancing, it may be.

I think these two gaps might end up fitting nicely together though. If students can learn the fundamentals of topics like programming at a faster and better rate with AI assistance, like everyone in the world having a 1-on-1 tutor, then that frees up time in the traditional timeline of diplomas, degrees, etc. That time could be used to give students apprenticeship-type learning experiences, with more 1-on-1 time, a bit more similar to what graduate students receive from their advisors when completing masters and PhD programs.

Students could tackle “real-problems” in teams, with the teacher role evolving into something that’s part manager, part mentor. Like capstone projects on steroids. There are so many projects that aren’t economically feasible, but would be practically useful to society. Problems in areas like education, health, the environment and accessibility. If the latter years of post-secondary education evolve into an experiential learning and apprenticeship model to give students this “earlier in the career pipeline” experience, these problems could be tackled. And to an extent, this would be a continuation of a trend towards authentic assessments and experiential learning that has already been taking place over the last decade.

Image Source: https://ubiqum.com/why-learn-to-code/

Command-line bullshittery and other realities of computing

One of my favourite reads ever is Philip Guo’s Helping my students overcome command-line bullshittery. In the article he rails against the need for students to learn lower-level command-line tools in order to conduct the higher-level work necessary for HCI research:

“Throughout this entire ordeal where I’m uttering ridiculous epithets like ‘git pipe fork pipe stdout pipe stderr apt-get revert rollback pipe pipe grep pipe to less make install redirect rm rm ls ls -l ls tar -zxvf rm rm rm ssh mv ssh curl wget pip,'” – Philip Guo

That line in-particular made me laugh out loud the first time I read it… I can relate. But whether we like it or not though, these tools that operate at a low “to the metal” level have a power and flexibility that higher-level tools like in-browser editors do not, so they’re here to stay and we need to learn them (and teach them).

“With the right set of tools, one can be 10x or even 100x more productive than peers who don’t know how to set up those tools.” – Philip Guo

Over the last decade the learn to code movement, of which I’ve been an active member, has done a great job hiding the harsh realities of computing. We’ve created and promoted tools like Scratch and Hour of Code that remove problems like conforming to precise instruction syntax by substituting instructions for draggable blocks. We’ve moved introductory post-secondary programming courses from less forgiving languages like C and C++, to more forgiving languages like Python, using easier in-browser sandbox tools like Jupyter Notebook.

As a result, we’ve collectively become much better at teaching the basics of computational thinking and programming… variables, decisions (if-statements), repetition (loops), etc. This is by and large is a good thing… while they are by no means easy courses today, introductory computer programming courses were once considered notoriously difficult with bimodal grade distributions and high failure rates considered normal, and they were generally avoided by anyone but those intending to major or minor in CS/SE. But now they’re starting to even become the cool, interesting elective, and the timing couldn’t be better given how important computing is to society.

One big reason these introductory courses used to be considered so difficult is that students were being given so many things to learn at the same time… in addition to basic computational thinking and programming, students would need to learn a harsh and unforgiving syntax, using lower-level programming constructs (e.g. C++ strings and arrays vs. Python strings or lists), with a command-line operated compiler instead of sandbox browser tools, etc. With better tools, students are able to focus in on a desired difficulty rather than confronting multiple difficulties at once.

The flip side though is that we’ve hidden away the harsher realities of computing in the process. Though there are jobs where it’s not required, generally speaking the expectation is that computing professionals can use these low level tools and technologies. As a result, students who have experienced what we now call learning to code as part of outreach programs or “programming 101” courses now hit what must feel like a brick wall when they all of a sudden have to deal with the command-line bullshittery side of computing for the first time. And it’s not just the command-line bullshittery, it’s the higher end stuff as well…. data structures and algorithms, sets, functions, formal methods and all the stuff “above” basic programming too.

There is simply no substitute for sitting down with them one-on-one on their laptop and walking them through all of the arcane commands to type, what they each mean, and how to interpret the bullshit output that’s barfed out to the drab terminal.” – Philip Guo 

And this stuff is hard. For years computing was relegated to computer people that liked computers a lot and those who couldn’t get it were just not computer people. And yet, when we changed the way we taught it, we were able to teach a generation of students basic computational thinking and computer programming. So let’s collectively drop that attitude and line of thinking. Anyone can learn this stuff, it just takes time and effort, for the student and teacher, but we can and should also put time and effort into creating better teaching technologies, tools and techniques.

I think what happened here is that all of those involved in the learn to code movement came to the same correct conclusion that computational thinking and basic programing (variables, decisions, iteration) was the most central problem to solve and all of us solved the same problem as a result. The thing is that we’ve solved that problem now… we’re beating a dead horse at this point, do we really need another game that teaches block-programming?

While teaching a course with a curriculum that includes bash shell interactivity and scripting I came across Terminus in a similar course taught in prior years, it’s an in-browser game made by two MIT students that teaches command-line interactivity. I love this. We need so much more of this.

We need sandboxed learning tools like this that hone in on a desired difficulty and do it in a fun way, but for all the other topics within introductory computing.

What I think we need is the learn to code movement to take a divide and conquer approach to solve all these problems. Imagine things like an in-browser interactive simulation of using OpenSSH with visualization showing a connection to other computers, or a game for dynamic memory allocation in C that incorporates visualization of memory. Or on the other side… the concepts that are higher-level and more abstract than basic programming… imagine first-order logic proofs turned into a fun in-browser puzzle game with drag-and-drop chains of logical equivalences (perhaps with a penalty for learners just adhoc trying different possibilities, and rewards for correctly applying proof strategies and a game design that teaches them).

Anyways. Talk is really cheap. 🙂 But after thinking about this a lot this week, I suspect I’ve got a slew of student project ideas now…

The next battle in coding education

A couple years ago when the Ontario government solicited the public for input into the public education system, a group of people including myself advocated via a proposal and a petition for the inclusion of computational thinking and coding in the K-12 curriculum. This week the government announced that the new math curriculum would include coding, starting in grade 1. I would’ve preferred to see this 20-30 years earlier, but I’m so glad it’s finally happening.

I’m cautiously optimistic that this reform will be effective… when drafting the proposal one thing everyone agreed on was that computational thinking, rather than coding, needed to be the focus. That’s because “coding” can sometimes miss the mark in terms of what’s really important.

For example, Hour of Code type activities will teach students some basic coding via building a game with drag and drop coding, or by having students help to navigate a character across a screen through some instructions. And there is some value in these activities to be sure in terms of learning to sequence instructions, understanding how computers execute instructions sequentially, how it effects the state of something (e.g. a game). etc. The issue is that they tend to be pretty surface level, many of them are actually closer to entertainment than education.

Many of these activities don’t teach more fundamental computational thinking related skills, such as how to construct algorithms to solve problems, and the different ways we can represent and structure data. There are a thousand activities to teach introductory programming, but hardly any on more niche topics within tech such as cybersecurity, digital health, operating systems, compilers, etc. Many of these activities are so sandboxed, i.e. designed for ease of use, that when students try to leave the sandbox and do “real programming” with a “real language”, they’re left lost and confused. And many of these activities aren’t interdisciplinary. in terms of showing how coding can be used as a tool to analyze or do something in other disicplines, for example computing values in physics equations, or even something like counting the number of words in a paragraph.

The fact that coding is being included in the math curriculum makes me hopeful that computational thinking will be taught. Especially when I read a sentence like this, in the article linked to above, “Meanwhile, plotting coordinates on a grid will be taught in Grade 4, down from Grade 6, with officials saying the skill is useful to have when learning about coding.”. That line really makes me think that the government is talking to someone that knows what they’re doing!

So great, a big win and we all go home happy?

Not even close I’m afraid to say. I’m biased, and I appreciate there’s been so much work done by so many people in this area before now, but to me it feels like it’s just the opening salvo of getting coding education where it needs to be in Ontario. We have a lot to do collectively now. There’s a lot of (poorly supported and resourced) elementary school teachers that struggle with teaching some mathematics and science concepts as it is right now. And now teaching coding is being dumped on to people that already exude herculean efforts to teach their classes. We need to help them be as successful as possible.

The next step is to support these teachers by producing freely available open source educational content that they can use in their classrooms: lesson plans, activities and games, instructional videos, quizzes/tests, etc. Ideally a repository of these materials that are matched to grade level, learning goals, subject (including interdisciplinary opportunities), etc. Maybe the repository could be a wiki that allows for submissions from anyone, with a general review and rating system, and/or review by experts, to rate and filter for quality. Ideally these materials would be formally tested for quality, in terms of their overall ability to instruct students on concepts, as well as to ensure the materials are appealing to and effective for underrepresented demographics. And perhaps most importantly, the they need to be as easy as possible for the teachers to use, and the teachers themselves should be able to learn how to use the materials effectively with content aimed at them as well.

Non-profit Canada Learning Code is basically doing this right now, check out their repository of lesson plans and teaching coding guide. Another notable organization is the Centre for Education in Mathematics and Computing (CEMC). There are dozens of non-profits and outreach programs across the country tackling the issue.

Though all of these efforts have tremendous value, I do suspect that the problem is too large and complex for any single organization or even groups of organizations to effectively tackle. A lot of the solutions are going to come from the bottom-up rather than top-down. In a perfect world, I’d like to see us experiment with hundreds, thousands of materials in parallel in classrooms across the province, and let effective solutions rise to the top, supported by evidence and the expert opinions of teachers.

I think the next step is for a collective barn raising effort to occur in Ontario tech education, where anyone willing and able should attempt to develop and test these educational materials that can aid and empower teachers to teach coding effectively.

Book review: How Learning Works

Book: How Learning Works: Seven Research-Based Principles for Smart Teaching

Authors: Susan A. Ambrose, Michael W. Bridges, Michele DiPietro, Marsha C. Lovett, Marie K. Norman

Review:

This book is the best resource on teaching and learning that I have encountered thus far in my career (including books, PD sessions, formal training, etc.). The authors go over general principles related to student learning (student motivation, prior knowledge, giving feedback, metacognition, etc.). All of these principles are research backed and discussed in such a way that you can understand how and why they work. This content is already good enough, but the book also goes over how to apply these principles using more practical strategies that illustrate very clearly how to actually use these principles. And finally, the book ends by discussing how to apply these principles to our own learning as teachers.

Pretty much everything presented seems to be research backed rather than anecdotal and/or opinionated (though some anecdotes are used to illustrate things). It felt like consuming months worth of reading academic research into learning, except it was so well presented that it was easy to digest. There’s something about the way it was presented too… it was very direct, with expert-to-expert or peer-to-peer language, rather than a feeling of ‘being sold’ on practices.

If your someone that finds a lot of teaching and learning books to be too hand-wavy and fluffy, I highly recommend this book. I listened to it as an audio book, and I’m planning on going through it once more so I can make more detailed notes. Excellent book, I couldn’t recommend it more.

Rating: 10/10

Book review: Teaching College

Continuing my self-directed professional development this summer, this book was next up on my reading list…

Book: Teaching College: The Ultimate Guide to Lecturing, Presenting, and Engaging Students

Author: Norman Eng

Review:

I felt like this book was perfect for helping a brand new instructor in the humanities, social sciences or possibly business learn how to teach in a more engaging and effective way. The book’s strongest points seemed to relate to motivation of students and engagement, whether it was engaging students with ‘big why’ questions or guest speakers. The writing is very plain-spoken and accessible which I also appreciated.

I ultimately wasn’t a big fan of this book however… I’m not new to teaching, and I teach computer science. I found a lot of the advice in the book to cover points I’ve already learned earlier in my career, and the examples in the book frequently didn’t carry over to STEM topics (this is just my opinion, in fairness the book attempts to make the ideas carry over to STEM topics). I also found that the book was a little opinionated, for example strongly preferring active learning over lecturing, when even as a fan of active learning over lecturing, I think there’s more nuance than the book perhaps gives credit.

If you’re new to teaching, and teaching in arts or humanities departments, I would suggest the book is worth a read.

Rating: 6/10

Book review: What the best college teachers do

Somehow it feels like a waste to read a book, make notes for personal use, and then never share anything about it, so I’m going to try out writing some brief book reviews.

Book: What the best college teachers do
Author: Ken Bain
Review:

Very deep and holistic ideas related to college teaching are presented in this book. The book is not at all about prescribing specific tactics that can be employed in the classroom. Instead the authors studied the attitudes, approaches and practices of standout college teachers, and then present how these teachers approach their classes, treat their students, evaluate themselves, etc. Much of the ‘advice’ comes in the form of helpful questions an educator can ask themselves. There is a good bit of information on what bad practices and attitudes to avoid.

It’s roughly 200 pages which is pretty reasonable for what it is… as a sort of thought-provoking exercise to help an educator think more like the most successful educators, I think it’s a worthwhile read. But I think an educator will have to spend non-trivial time thinking about how to apply these very general ideas presented in this book in their courses, and then even more time implementing them. I’ve managed to think of some new ideas due to this book, but have not yet tried using them. I also think some of the book’s advice may not be for educators so much as their employers… for example, the book isn’t keen on grading on a curve, but in some institutions this is expected.

Rating: 8/10

Podcast reviews

My new “COVID-19 life” evening routine is walking my daughter in her stroller around our neighbourhood… very carefully… forget 2 meters distance, I go with 10 meters distance from anyone to be extra sure. She seems to like the fresh air and walking outside is super refreshing.

As we walk around, I find myself listening to podcasts for the first time in my life. I’ve never been too big into podcasts, they always seemed to be low information density, and they feel like you’re being sold something. I’d rather read a well thought out book, or listen to an audio book. I’ve been able to get value out of some of them though… they seem to be a good medium for sharing personal experiences in particular.

Here’s some quick thoughts:

The Productivity Show – Surprisingly…. super good. They basically go over tips, approaches and technologies for being more productive. I’ve been optimizing different things I do… like even my TODO list structure, and it’s honestly making a slight but noticeable difference.

Teach Computing – It seems more focused on K-12 and earlier, but, it’s been fun to have a lot of what I’ve thought over the years validated by others. It’s also made me think about some things explicitly that I had only considered implicitly before, like the episode on cognitive load theory in computing… super interesting.

Online Course Masters – Very comprehensive… they go over basically everything about creating online courses: content, production, marketing, etc. Along with a lot of interviews with in the trenches people that have done it already.

Still a special thing

My daughter was born last week and it’s been an amazing experience so far. I don’t really have words for the whole pregnancy and labour process, other than to say my wife is a super hero. It’s pretty awesome having a baby that looks up at you with love and trust immediately, I’ve never experienced anything like that before, it really is a form of unconditional love for them and us.

What I have found most interesting is how much having a baby is still a special thing. When you’re a child, you get these special magic moments where the world stops, and it’s like the biggest thing on the planet is happening. Things like your birthday or your friend’s birthday, or cultural events like Christmas. Nothing really matters but that thing that’s happening in that moment, and your entire world at that point in terms of your friends, family, school and everything else is acknowledging it and participating in it as a special thing.

As an adult, your world grows bigger and more complicated. Maybe you don’t even want to recognize your birthday anymore, it just means you’re getting old. Christmas and other cultural events have lost most of their magic. Everyone is so busy as an adult… maybe you go out for dinner with friends to acknowledge something important, but everyone’s a bit tired from work, and their heads are full with what’s next on their plate professionally or what’s going on at home.

But having a kid? Honestly, it still holds such a special place in our society, right across the board. Family and extended family are excited as can be, co-workers are asking to see pictures of the baby, business partners drop off gifts, friends are buying you food and asking to see the baby, etc. It’s surreal to me how the specialness of it is universally acknowledged, you’ve really got to go all the way back to your childhood to find something equivalent in terms of a special, magical experience.

Coding education in Ontario

In the Fall the Ontario government was running a consultation process into education. The process was relatively wide open… anyone could e-mail a document to the government as part of this process. I really want to see coding, computational thinking and computer science as part of the standard curriculum for all kinds of reasons… job growth in the ICT sector is explosive, the jobs are relatively good income jobs, and yet, equality of opportunity in the ICT sector is poor. Students don’t get exposure to coding in elementary school in the standard curriculum, and in many secondary schools they cannot take it as an elective either. I’ve always romanticized education as the great equalizer… even if it’s imperfect, it can level the playing field and give everyone a shot… and given how important coding has become as a career path, it’s important that this opportunity is equally available too.

Myself and others working or previously working in education worked on a joint proposal for the curriculum consultation that we hosted at codeontario.ca. We kept the proposal to a “2 pager” with the idea of keeping it consumable, high-level and focused on the broad “asks”. We then solicited as many endorsements from industry, public, non-profit and education sectors as possible. All together we had 1,000 signatures in one form or another, including some high profile endorsements.

It was formally endorsed by Google Canada and IBM Canada, and from leaders of some of the fastest growing and largest startups in the province like John Baker of D2L (Desire2Learn), Allen Lau of Wattpad, Alexander Peters of Prodigy Game, and many more. It got almost unanimous endorsement from the regional innovation centre executive directors, as 14 of 17 of them endorsed it, including Innovation Factory, Communitech and MarsDD.  These centres are provincially funded and have a mandate to grow the technology sector, and so they hopefully added some weight to the proposal.  On the education side it was endorsed by Engineering Deans at a majority of Universities in Ontario, College Executives including Mohawk President Ron McKerlie, Directors of Education and Trustees across the province.  It was also endorsed by important non-profits in the education sector, key IT professional organizations, and Chamber of Commerce CEOs across the province.

I’m really happy about how far it got out there! But did it work, or at least, help convince the government they need to move on computational thinking and coding skills in the curriculum? It’s hard to say… the government press release addressing their plans for education had this to say:

“The strategy will also include revised Business Studies and Computer Studies curricula focused on developing job skills such as entrepreneurial skills, computational thinking and coding. In 2019-20 we will begin research and benchmarking against other jurisdictions as a foundation for revisions to these curricula. “

Taking time to study what other jurisdictions are doing before revising our own curriculum makes sense to me. I hope the government will keep this commitment and move quickly.

Reading Comprehension Study

I was finally able to publish the last study done during my PhD! Fixing up peer review requests and adult life got in the way (I got hitched, bought a house, etc.). But I’m glad I finally got this 100% done. Lately I’ve got an itch to do research and build stuff again.

An Empirical Evaluation of Reading Comprehension Tablet Software Utilizing the Question Generation Strategy

Abstract: Motivated by the substantial socioeconomic issues associated with low literacy skills, we developed a tablet application to help adults improve their reading comprehension skills. Though reading comprehension is a complex and multifaceted skill, studies have shown that teaching students metacognitive strategies can help them improve their reading comprehension skills. We created an iPad application which attempts to teach users the question generation strategy. We built another iPad application as a control that only allowed users to practice their reading comprehension skills; this application did not attempt to teach a metacognitive skill. We tested the applications with 48 undergraduate and graduate student participants from McMaster University. The application which aimed to teach the question generation strategy resulted in a statistically significant improvement in reading comprehension performance relative to the control application. We conclude that tablet software can be used to teach the question generation strategy, and propose directions for future work

Full Paper:
http://www.kevinbrowne.ca/wp-content/papers/LIT2018.pdf