How to learn programming and CS in the AI hype era – interview with prof Mark Mahoney [Podcast #215]

💬 Chat with this Video
Ask anything about this video…
Welcome back to the Free Code Camp podcast. I'm Quincy Larson, teacher and founder of Free Code Camp. And today I'm interviewing a computer science professor who built his own free platform for learning programming. Before we hear from him, I want to give you some quick community news. Free Coamp just published a new course on AI assisted development taught by Bo KS uh where you'll learn common terminal workflows and tips for pair programming with your LLM tools. You'll also get exposure to tools like GitHub C-Pilot, Claude Code, Gemini CLI, OpenClaw, and at the end of the day, the entire goal of using these tools is to build out more features without compromising the maintainability of your codebase, and you're going to learn how to do just that in this course. Check it out after you finish listening to this podcast. That's free co camp also published a beginner level course on AI literacy for everybody and you can share it with your family if they don't know anything about how these LLM tools work, how computer vision models work, anything like that. This is a great first step in them understanding how it works. Uh you're going to learn about the two traits that define artificial intelligence, autonomy and adaptability. Uh and then you're going to build your own image classifier right on your phone or on your laptop. Uh, this course also delves into things like algorithmic bias, environmental costs of training and running LLM systems, a ton of stuff. It's about a 1-hour course right here on the free Code Camp YouTube channel. You're also going to learn in this third resource how to build your own QR code generator using JavaScript. This tutorial will walk you through generating QR codes entirely in your browser without any need for a backend. So, it's kind of like a client side app. And you'll learn how to validate input, clear previous output, and use JavaScript libraries to render the code instantly on the client side. And then you'll learn how to extend the project further with some stretch goals like custom styling, Wi-Fi support, and more. It's a pretty quick tutorial on the free code camp publication. We are also hyped to announce that the bad website club is back for another responsive web design boot camp based on the free code camp responsive web design curriculum. It starts April 24th and runs for 10 weeks. You can join our Discord community and tune in for the live streams. It's led by volunteer devs who are passionate about helping folks learn CSS and JavaScript fundamentals. The announcement is linked in the description. And song of the week, 2008's Strange Overtones. The Talking Head singer David Burn blends his voice with that of legendary synth producer Brian Eno. And there's a lot of organ, there's a lot of synth. The entire affair plays out over an infectious palm muted guitar line and some really driving bass. This is a perfect midweek jam. Put it on during your commute. If you want to support Free Code Camp, join the 10,000 plus people who do so each month. Uh, go to donate.freecodeamp.org. Support our charity. Support our mission. You can also pick up a free COMAP t-shirt. shipped anywhere in the US, $20 total, and you can just print one yourself if you'd like. Just grab our assets from our repo uh free to use our assets for non-commercial personal usage. And now that brings us to the thing that I'm most hyped about today's interview, Dr. Mark Mahoney. He was a software developer for years before going on to become a computer science professor where he has taught for 23 years at Carthage College. a 180-year-old US university. He's taught thousands of developers through his free programming courses that he built on top of his own custom software platform, Playback Press. We'll talk about why learning programming the hard way is still the right way, how not to deskll yourself when you're programming alongside LLM tools and why now is a great time to study computer science. Mark Mahoney, welcome to the Free Code Camp podcast. >> Thanks for having me. Yeah, I'm hyped to have you on here. You've been such a big part of the free cooking community for years at this point. Uh, as a computer science professor, somebody who's been practicing uh software development for decades at this point and teaching it at uh an advanced level. Uh, I want to get your thoughts first on LLM code generation tools. Something that Nvidia founder Jensen Hang said a while back. Uh, he said, "Almost everyone says it's vital that your children learn computer science. Everybody should learn how to program." and in fact it's almost exactly the opposite seems to be what he's arguing. Uh what is your reaction to that? >> Well that's an interesting point of view from him in particular. So I tend to think the best way to build like a really complex piece of software is to already be an expert in uh you know software development. Now it's it's true for low stakes pieces of software maybe it is okay to have you know an LLM uh sort of build something for you but once you start stacking complexity on top of complexity and you start getting concerns from multiple people and groups of people becomes harder and harder I think to rely on you know prompts and Jira tickets and emails alone. Um now having said that I I actually encourage my fellow uh faculty members to use LLMs to build usually like visualizations or uh simulations uh in the classroom that normally they would maybe you know draw on a whiteboard or even handwave uh through. Um and I actually do this myself. I just recently uh did this sort of simulation about uh you know how do developers use git and you know GitHub to kind of go through the process of doing a pull request and um the LLM did great. I didn't I didn't even look at the code but there was not a lot there was not a lot to it. This is something I would have, you know, just drawn on the whiteboard, but uh this little tool that I vi coded. Um it it sort of animated the whole process. It was kind of interesting. Maybe I could give you a link to put in a show notes for >> Yeah, I'll include I'll include a link to it just to show like this. So, it sounds like one of the things you're saying is these tools are useful for less technical folks who just need to get their idea across. They're they're good for creating uh data visualizations for example or extremely simple uh tools where you know it's it's visually obvious I guess whether it works or not so you don't have to actually splunk into the codebase and try to understand where things are going ary >> exactly so I I'll tell my colleagues to start the prompt with you know uh create a single page web app that does or that shows x y or z like the the flow of a pull request on a GitHub or something like that. And these are definitely low stakes. Uh I I would not want my, you know, pacemaker software to be uh developed like this. But uh for little simulations and visualizations, I think those are pretty helpful for educators. So, when I use LLM's on my own projects though, uh, I've noticed, you know, they can misunderstand, you know, what I'm looking for, and they definitely don't know all of my preferences for how I, you know, would like to do things. Uh, and you know, just recently I I was using an LLM uh to help me write some code with this web- based thing that I'm working on, and it wanted to put all the data in the like this global document object when I had another object that, you know, was probably a more appropriate place for that data and I had to go back and tell the LM, no, don't don't put it there, you know, put it here And if I hadn't made that change, if I hadn't noticed that change, um, you know, it would have just added some technical debt that somebody somewhere down the line would have had to kind of realize that that now the data is split in these two places. So, uh, I'm kind of optimistic about LLMs, but I I'm I'm not at the point where, uh, you know, I think they're going to completely take over and do everything. uh for us. I just don't think the LLMs can kind of read our minds and communicate with us well enough yet. >> Yeah. Yeah. And just to be 100% clear, this is not with like some LLM tool, you know, three years ago when these tools just came out like early GitHub Copilot or or early agent, right? This is just like the other day that you encounter. >> Yeah. Uh so I have been using Claude Code. I pay the the 20 bucks a month for it and it's amazing. But um you know I rather than have it like write code immediately what I what I'm doing these days is asking it to come up with a plan and tell me the plan before it does anything. And then often what the first plan is, you know, either not the way I would do things or, you know, they mis LM misunderstood exactly what I was looking for. So I'll iterate a few times just on the plan. And um then if once it comes up with a reasonable plan, I will have it write the code. But that back and forth uh I don't think would have been possible unless I already was, you know, a pretty experienced developer and and knew what I was doing. >> Yeah, >> that makes a lot of sense. So, uh, what would you say to a learner who is just using LLMs to program and they they have this they they don't realize they don't know what they don't know and uh they're just using LLM as their main source of learning as they try to get things done. Kind of learning just in time by yeah, you know, seeing things not work and asking the LM what went on here and stuff like that. How would you encourage them to handle that those kinds of interactions to be productive? So, just to recap what you just said a second ago, you said you'll you'll iterate several times on the plan. You'll ask them, okay, how are how would you implement this before you actually have it implemented and that way you can kind of reason through and and squash bugs before they crop up and things like that. How would you how would you advise like somebody who doesn't have your expertise to interact with LMS to achieve a similar effect? I mean, if if one I'm a huge fan of using an LLM as like this infinitely patient tutor. Uh, and if the student is really aware of how they learn and they're very curious, maybe that's a good way to go about learning, you know, just using an LLM alone. But my sense is most learners aren't that aware. uh especially about something they they don't know much about. So if an LLM is writing a majority of the code and for me the critical point is are the students actually stepping through the code. So okay if the LM generates your code that's fine but they should definitely be stepping through and watching what that code does you know what effect it has. again, maybe uh that's uh an okay way to learn, but um I would I would really be uh worried that you know students who learn just with an LLM are are not really resilient, right? if you're just given the right answer or what you think is the right answer most of the time and you don't have to do that hard work of figuring out, you know, why something is not working. You know, if I were hiring someone, I I kind of would like someone who has uh proven that they kind of learned the hard way. And I u I sometimes joke with people on like on my LinkedIn, I I want to put something like, you know, I learned to code before LLM's. >> Yeah. Right. So, I feel like a badge like that might uh one day actually uh be valuable, right? Because to me it says, okay, the the students learned the hard way. Uh they went through the hard work and they learned about all the debugging and and things like that. Another thing I'm sort of worried about, uh, you know, right now I, like I said, I pay the 20 bucks a month, uh, for one of these LLMs. It's great. I'm not even writing code eight hours a day and and I run out of, you know, tokens. Um, and I wonder, you know, right now everything is pretty cheap. And in fact, >> venture capital is subsidized. >> Yeah. could be even free for uh for some people, but I don't know if that's always going to be the case. And u I wonder if there are going to be companies that just can't like literally afford to have their developers using this uh you know full-time. So that's another reason, you know, I think it's very important to learn, I guess, the oldfashioned way. um could be also some companies could uh you know worry about liability. So I've I've got a a former student who told me their their uh company doesn't even let them use uh these AI tools because they're, you know, they're worried about getting sued. >> Yeah. And who knows in the future, you know, some parts of the country might not uh or some parts of the world may not have act the same access to the tools that we have. And so I I definitely think it's there's value in kind of learning the traditional way. >> Uh well, let's talk about what that traditional way is because uh I in increasingly encounter people who are like, hey, why do we even need free cooking? Why do we even need textbooks? Why do we even need programming tutorials? We can just do everything through talking with the LLM and learn just in time. Like this is an increasingly pervasive attitude. And uh I guess what would you say to those people in terms of like first of all you've already illustrated some of the pitfalls of relying on these tools? Uh they will potenti like you're not actually doing the work so you're not actually learning the process. You're just kind of getting uh the shortest path through um getting to whatever you need done. But you don't necessarily like if you took away the tool, you couldn't reproduce it. Right? That's the definition of tutorial hell is somebody who can do lots of things when they're being guided step by step by a tutorial, but then you take away the tutorials and they're staring at the blank page and they're not quite sure where to go. Um, and they haven't developed the confidence and they haven't developed the confidence. Well, with LM, they're probably going to develop the confidence, but they're not necessarily going to develop the competence. Right. So uh like you have created story uh like this really powerful tool uh to essentially have like code replays where uh you can record um and you can walk people through uh code and they can like uh it's kind of like this cool multimedia experience and it's free and free code camp has published many of your uh learning resources like how do you envision like the ideal interactive learning experience even with these LLMs like like are LLM even a part of that like how how do you how have you incorporated LMS into your platform? I know that's like 50 questions, but I I just want to like load all that stuff into the peripheral context window so you can like kind of unload some of that insight because I know you're thinking very hard about this. >> I mean, it's a very exciting area this this idea of uh again the what I like to call the the infinitely patient uh tutor who's who's able to answer questions. I know from many years of experience there are some students who just refuse to ask for help and I I don't know why uh you know I I try and make it as clear as possible I'm here to help you but there are a group of people who just refuse to ask for any sort of help. What I think is if they were if they had access to an LLM tutor, they wouldn't be uh you know, they would be more willing to ask for that help. However, I I really do worry about completely leaving humans out of that loop, right? I as a longtime uh teacher, I know that uh we can tailor our uh lessons and what we teach each individual student uh based on what we know about the student. So sometimes you want to be very direct. Sometimes you want to not give them so much and maybe ask a probing question and have them sort of figure out stuff on their own. I don't know that the LLMs are at that point or will ever be able to really get to know uh students like uh an instructor does. Maybe more importantly, uh, instructors, I I feel like my my main job, if I'm good at anything, it's like motivating students to want to learn. Uh so you know I do that I think through enthusiasm and uh passion and um so again I I I don't quite see how uh an L lom can kind of inspire that passion. >> Yeah. I mean and also your competence. You're you're somebody who's been practicing for a long time. uh you started before the dotcom bubble way back in the mid 90s working in industry. You yourself have a CS degree. You've gone through the proverbial slings and arrows of like learning programming properly and then applying it and now you've been turning around and teaching it for decades at this point. And so there's that human aspir like that that empathy like they're looking at somebody who's gone through this, right? the LLM hasn't gone through anything other than you know a process of uh you know reinforcement learning with human feedback and and a training process and all that stuff like it's not it is not sentient there's there's nothing like I don't aspire to be an LLM or like an LLM right uh where what you said I mean your primary job as a professor is to motivate people to want to learn that's a pretty profound statement uh and I don't know that every professor looks at their role quite like that but I I think it's a really helpful uh kind of lens to look at the role of the professor or the role of academia like what are you getting when you go to a university you're getting somebody who has been there who knows the stuff who going to try to communicate to you how important it is that you learn these things without necessarily putting you in I mean people will learn this the hard way when they go out and work in industry and they'll realize oh man I really screwed up there company lost a lot of money now I'm going to get fired or um like oh wow I just wasted days of my life working on this feature where I misunderstood the spec or something like that right like like they're going to go through these processes and to the extent that you can kind of guide them around these things so they don't have to make all the mistakes for themselves that's another function of u going to school and that's a function of human communication not to get too abstract but one of the reasons humans are so successful compared to like I don't know um cockroaches which are also extremely success successful but not individually individually they're extremely brittle individually humans are extremely robust because they can learn from one another and I don't have to go you know touch the electric fence myself somebody can say hey we have human language right we have written language we got all these things and and I I think the role of like learning and the role of teaching is to essentially help steer people around things and give people context like that's my personal perspective active as a teacher, but I haven't been doing it as quite as long as you have. >> And I know I know we talked offline sort of about different types of colleges and schools, and I'm pretty lucky in that uh uh the school that I teach, it's very small. I have very small classes. Um my students get to know me. I see the same students for their full four years. And I really believe this is maybe corny, but when I tell them, you know, I I want you to um you know, I'm trying my best to to teach you, I I feel like students when when they get to know you, uh they want to show that yes, they believe in that and they uh you know, they uh so for example, I'm surprised by how little I think my students are using LLM just based on what I've heard from uh you know professors at maybe bigger schools and we were also talking about this the other day the we never really bought into the totally asynchronous online uh courses and I think that really helps uh you know if the student and the teacher have this relationship and the student makes it or I'm sorry the teacher makes it clear that, you know, we don't want you to use the LLM because it'll make you learn, you know, more or better. So, yeah. >> Yeah. And and that's something I've definitely observed like talking to my friends who went to like UT Austin versus people who went to like Harvey Mud or some school that's like like really hardcore engineering uh schools like there's a lot more do it by hand. There's a lot more back to basics kind of focus on fundamentals at a lot of schools than there are at other programs. Not to pick out any particular program. Uh UT Austin is a great program too if you want to study CS there, but it's not like super duper like I don't know like like an engineering school's engineering school, you know. Um, and like there are programs like that that that are like small classes that are teachers who are working very closely with students and uh who develop this long working relationship over like four years uh as opposed to just you're you're hopping from one lecture hall to another. So I can definitely see what you're saying there and it might be because they're spending so much time in proximity to you and they have so much access to you that they don't need to rely on LLMs as much. Uh, as you pointed out, like LLMs can be great for people who have like social anxiety or have issues with uh, self-confidence or issues with uh, just not wanting to look dumb in front of other people, which I think almost everybody has an issue with. I certainly have an issue you with. I ask you all those questions I probably wouldn't feel comfortable asking one of the people on my team just because I'm worried, oh man, I'm going to look like a total dum dum. Like, am I not with it at all? You know, and the LM isn't going to judge me, right? Um, so >> that's one of the great >> one of the great uh aspects of that. I I do the same thing uh not only do I use it for asking like coding type questions, but all types of questions throughout the whole rest of my, you know, day-to-day life. Uh I I ask it all questions all day long. >> Yeah. Well, let's talk about what the main limitations are and like how long you think it's going to be before uh LLMs, especially in terms of generating actual curriculum, right? Like there like in game development, people are talking about LLMs are just going to generate. This is one of the many things that Jensen Hang and a lot of other uh hypemen from the uh the AI, you know, bubble world frequently say is, oh, in the future, you won't actually have game developers developing a game. the you'll just tell you know some system what you want to play and it'll generate that on the fly and keep all that in it context and and you like turn to the side and and you'll see what you're supposed to see and so you can have any game you want right and um like my personal rebuttal to that is you know what the world doesn't need that many games and it doesn't need a single individual game for me there are millions of people that are still playing Minecraft to the point that the game industry is actually kind of in decline right now because there just already more than enough good games music industry. Uh I listened to Nile Rogers say like we've already got so much great music that we don't necessarily even need more. Why do we need to be generating tons and tons of music when people haven't even had time to go back and listen to like great, you know, music from different eras throughout history, right? Um and you know to the same extent there are only so many topics that need to be taught. Do you really need to generate curricula? But uh how long do you think it would be based on your understanding of where things are and where things are going before an LLM could generate something like free code camp uh there like the full stack curriculum or could generate something like Harvard CS50 uh like the entire course with like a you know generated uh David Men standin essentially teaching all the concepts uh without and thus avoiding intellectual property. That's a big theory of mine is that a a lot of the reason behind the generation is so they don't have to worry about existing intellectual property laws and uh licensing and things like that. >> Yeah. So, I agree 100% on the music. I know we were talking about music the other day. Uh and I totally agree. There's uh you know, nobody needs more music. We need more time to get through the music that already exists. Um the one thing I would say about software is maybe maybe we do need more software. This is why uh I think there's a maybe a small distinction here where I'm I am okay. Uh again I'm sort of on the fence about the LLM but I am using it. Um but you're right about the the music there. There's a famous quote, you know, I wanted AI to do my dishes and do my laundry so that I could write the music and work on my art. Not not the other way around. But that's exactly what we have. We have it the other way around. Uh when we talk about limitations uh especially in computer science education the one thing I've noticed is uh the texton interface is kind of a limitation. So I don't know about you but when I'm teaching I I have to have like a whiteboard near me so that I can draw a picture and kind of animate and describe what's happening. >> Yeah. So, not I'm usually not writing code on that whiteboard. I'm drawing pictures and uh I'm asking students, you know, what would happen if we moved this thing over here? And sometimes they'll get up and go right next to me on the whiteboard. I've done some experimentation with the LMS and they're they're just not there yet in terms of like visually uh explaining things. Uh maybe it's just a matter of time, but um you know when I I think about my classroom, there's a projected screen and there's a whiteboard and there's an opportunity for me to sort of work with a student. And I don't see how the the LMS are going to, you know, completely get there. >> Yeah. >> So how long is it going to be before it completely generates a free code camp? I'm not optimistic about that. I think uh having like I said humans in the loop uh humans who get to know the students or get to know kind of students in general uh is just a critical uh part that you know I don't say never but I don't see that part going away. >> Yeah. And uh I'll I'll just add that humans learn because we're kind of programmed this way from like evolving and living on the savannah and uh eventually you know spreading out to you know Europe and North America and South South America and everything, right? Like uh just we are animals just like the animals around us, right? And and like we learn experientially like when I learn like a new word in a foreign language that I'm studying, I can almost always remember where I was when I learned that word. Why is that information relevant? Like it's just part of how humans learn. Like I can remember the situation. I can probably even remember whether I was sitting down or standing up. You know, I can remember whom I was talking to and that does not help me at all. Like why is my information why is my brain like wasting space on that context? But that's how humans learn. And I would imagine there are plenty of students who can distinctly remember the moment that they got that breakthrough with like some particular type of data structure or some sort of aspect of uh you know some layer of abstraction, right? Uh because they were up there standing at the front of a whiteboard sketching with a a pen thinking really hard while they were listening to you and you were like you know also writing on the whiteboard and say oh actually it's like this. Oh what about this? Oh yeah it's like this. you know like like there like so much of communication is not through just language alone and currently these LLMs can only really I mean they are large language models right that is a fundamental uh and you can plug those into other systems and build systems on top of them and stuff but it's not like the world's most powerful calculator is going to be powered by an LLM it's probably going to be powered by something more deterministic or something like that but similarly uh other things that need to be done will probably like different tasks will require completely different tools and potentially completely different approaches technologically. And so what it seems like you're arguing here is that teaching is just one of those tasks that's so multimodal to borrow a term that I hear a lot in the LLM space um that it's just not going to be fully addressed through LLMs that that we need additional u archetypes essentially or >> I definitely think uh uh the they're not quite there yet. They're they're great with again anything textbased, but um I've tried to have it, you know, draw I'm often drawing like this is what the memory looks like and this is what we're going to move around in memory. At least the the tools I have used uh I've not been super impressed with um them creating visuals to go along with their textual explanations for things. >> Yeah. So I want to jump to uh like a little bit more about LM before we get into your history which I'm very excited to talk about. But one concern like a lot of people have been talking about is desklling. essentially learners uh in this case maybe even developers who finished school and you know spent several years of their college career using LLM tools essentially deskkilling themselves by overly depending on these tools especially proprietary tools and as a result like their their skills atrophy and and to an extent even their critical thinking atrophies. Have you observed this? Well, it's all so new. There there's definitely a lot happening right now. There's a lot of hype right now, but there's also there is something I think very real about uh you know AI as a tool for educators. Um, I really wish I knew what was going to happen uh in the next few years. Uh, in terms of deskkilling, again, uh, if if I were hiring someone, uh, I I don't I don't know how, uh, interviews go these days, but I would want someone to be able to prove that they can tackle problems and think about problems without any sort of AI assistant. Um, and you know, again, this is maybe just my personal opinion, but I don't think that human element is all is ever going to like fully go away. So, um, you know, I I guess the answer is I don't know. Yeah, >> I know that the companies that are doing the hiring these days, I think they are really uh fixed on the hype, right? I I feel like uh they are kind of waiting it out. They're going to try and see uh you know, is this thing really gonna take over completely? Um, I wish uh that you know the hype would go away so we can actually have real discussions about this and conversations about it. And I think that is happening but it's I feel like the companies are are kind of sitting and waiting to see what's going to happen. I mean, that's a rational thing. Uh, like to to be charitable to the companies that have like kind of frozen their hiring or even let go of developers. Like, they don't know what's going to happen anymore than anybody else does. Uh, we can all certainly predict and some people with a lot more expertise uh can predict what's likely to happen, but from the perspective of a manager, it might not make sense to hire a whole bunch of devs if these tools actually pan out. and the risk of hiring a bunch of devs and looking like a fool for hiring a bunch of devs and getting fired yourself. Maybe that is informing a lot of the uh managers that are just basically just doing like essentially hiring freeze. I talk to people all the time uh on this podcast and just in day-to-day interactions and stuff who are just kind of waiting to see what happens. And that's totally fine. like uh if you are a manager and you've got like a budget and everything like that, it's a little harder to tell somebody who is a developer who's just finished their CS degree and is having trouble getting interviews uh and and has been spending you know months and months trying to find a good job like oh uh you know like we're you just graduated in a very unfortunate time or you transition into software development from a different field at a very unfortunate time where there's just so much ambiguity that people aren't able to move forward with confidence and this will probably be resolved within a year or two, but like what is that person going to do in the next year or two? My advice to them is just uh keep expanding their skills and maybe get a job at like doing literally anything you can do that's within your ethics to to survive essentially. Um, but like how would you advise like let's say hypothetically you have a CS student who um who is struggling to find work after graduation or maybe they did get a job but then they got laid off and now it's them in line for interviews behind lots of people that have five 10 years of experience in the field. >> It's really tough. Uh, so I just talked to a former student today who graduated in December and he took him couple months but he he finally accepted a entry level job today. He he talked to me. Um, yeah, I I I really don't have a great answer other than like you said, continue to learn. Uh, I do think this is going to resolve itself. I don't quite know how it's going to resolve itself, but I'm also thinking in that, you know, monthstoyear time frame, we're going to have some more concrete answers. And I'm at least my personal opinion is the, you know, we are still always going to need developers to kind of drive the process. Um, so it's tough. I I don't have a great answer. Awesome. Well, I want to dive into your background because you've got a very interesting background. Uh, you grew up, uh, child number five and a family of six. Um, and maybe you can kind of like walk us through your early years and how what inspired you to get into software development. >> Well, I wish I could say I had a great plan and it all worked according to that plan, but I I kind of fell into all the good things that happened in my life kind of by accident. So yes, I'm part of a big family. I don't know if you're part of a big family, but what tends to happen is all the resources tend to go towards the oldest uh children. But then, you know, I'm the fifth, so when I graduated high school, for example, my parents knew they could not afford like a traditional uh send me away to college experience. >> And they themselves didn't go to college either, right? >> No. No. Um, luckily though, I grew up in a place that was near a community college and uh I I was able to convince them to, you know, send me to community college for those first couple years. Now, at the time, I did not I was not interested in software development. I was actually an art major back then. But I got so many of the uh sort of required courses out of the way that when I eventually went back, I could focus almost exclusively on uh computer science and math. So that was awesome. But I went for my my two years and we're talking this was quite a while ago, but I mean the full year might have been $1,000. Yeah. I of course lived at home >> uh and with books and everything, it might have been $1,000 a year. And even that was a you know that was a pretty big stretch for my parents. But I finished and you know I didn't quite know what I wanted to do. So I spent a couple years just doing weird jobs. Uh you know I thought you know my dad was kind of a truck driver. I thought maybe maybe I'll be a a truck driver too. >> Yeah. >> And uh I did jobs like that. actually was driving once and I just fell asleep. I almost killed myself and I knew right then I I have to do something to keep my brain active. I I can't do the driving just wasn't for me. Uh so by then I was uh you know a little bit older and uh I was actually able to uh pay my way uh to get the the four-year degree. And of course uh you know when in high school I was at best a C student, >> right? >> When I went to that community college my parents were paying so I I upped my game a little. I got B's. But when I started paying of course I was a straight A student from Uh-huh. Yeah. >> Uh, so, uh, like I said, I had, uh, I didn't quite know what I wanted to do either. Uh, so I went back to that same community college and I tried a couple different things. So, I I took a couple journalism classes. I was fine. Uh, but it didn't really, uh, excite me. And >> yeah, >> totally by accident, I saw that there was this computer programming course. I honestly I didn't even really know what that was, but I got hooked. I mean, immediately. Uh I was amazed that I could tell this computer to do something and it would actually do it. And uh that I felt like a wizard and uh I I got hooked. Um, like I said, I I then went and uh to a different school and completed the four-year degree. Then I got a really good job right out of uh college as a software engineer. I was doing that for uh a few years. The place I worked was very generous with uh like sort of educational uh benefits. So I was able to get my my master's degree in computer science while while I was working there. >> Yeah. >> And the way I started teaching was again totally by accident. Uh where I worked was only a couple miles away from the campus of the the college I went to. So one day at lunch, this is the the first time I had done this. I thought, "Oh, maybe I'll go back to the computer lab uh and see who's around." And when I got there, the the lab manager had told me uh you know, one of our professors got ill and like class was starting in a day or two and this lab manager friend told me they're going to make me teach the course for him. You know, they're desperate basically. and he said, "Mark, would you would you please do it because I I definitely don't want to do it." >> Called the >> I said, "I I can't do it. I'm I was a student here like a year ago." But then I went home and I thought about it and I thought it might look good on a resume to say, you know, I taught a course one time. So, I forced myself to do it. And it actually went great. I uh I know this term wasn't used back then, but fake it till you make it. Yeah, I definitely decided I'm gonna fake it. >> I'm gonna pretend I know what I'm doing. >> And the students, they couldn't tell. They just assumed I knew what I was doing. And um so that went well enough where the next semester uh I think the professor eventually uh recovered, but they still needed people to teach. So the the the main person asked me to to keep doing that and I did that for several years just you know one course a semester. I was an adjunct uh professor and then after a few years I uh I was sort of getting getting bored with the job I had and I was looking around at other jobs and uh my now wife suggested oh why don't you look at you know full-time teaching jobs. because I had, you know, had earned an advanced degree and I now had a few years experience and uh so I found this uh opportunity uh at uh my current school and they were also kind of desperate so I got lucky again. >> Yeah. >> Uh and uh I wasn't quite sure if I was gonna you know if this was going to be my career. I just thought maybe I'll try it out for a year or two. But now it's 23 years later. So, uh, that's sort of how I fell into this. If I was five minutes later or if I had decided to go the next day, my life would have been, you know, completely different. Uh, it's very I got very lucky, I think, that yeah, I stumbled in on that one day. >> Is that computer lab still there? No, that that's how old I am is uh back back in those days, nobody had a computer. If you wanted to do your homework, you you'd go to the computer lab. >> Yeah. >> So, I'm sure it's not I'm sure it doesn't exist anymore. I don't think computer labs exist anywhere really. >> Yeah. Well, uh that that's pretty good serendipity. And uh I mean the opportunity presented itself and you and you took it. Like a lot of times people just eh and they they don't realize they're passing up on an opportunity that can lead their life in a completely different direction. Of course, you were promoted repeatedly uh over there uh through like the many ranks of academia. I think you've also been like, you know, in in like a chair type position or something like that where you're administering your peers uh fellow professors and adjuncts. Uh and uh that's really cool. One of the things that you've done that I think is really interesting is you've taught high school teachers how to teach computer science uh to their students because of course like we think in the US like oh we've got like all this technology everywhere like pretty much every school has computers in the US uh but like the actual knowhow of using those computers is not evenly distributed and you need somebody to go out and train those teachers and a lot of them didn't study they didn't have computer science when they were university, right? So, so that's like an incomplete aspect of their uh own education. So, you kind of go in and backfill and help help bring them up to speed so they can help prepare students to use computers effectively and not just consume technology, but produce technology, if you will. >> Yeah. So, I I was a kind of a non-traditional aged student, especially when I went back. So, I I've always liked non-traditional age students and a few years ago there was an opportunity uh in the Kenosha area where I live where the uh local school district they wanted to begin teaching more computer science but like you said uh most people who get a CS degree do not become uh teachers. It's just much more lucrative to become software developers. So, uh, I volunteered to work with, uh, like half a dozen. These were mostly math, uh, teachers. Um, and I basically tried to in like a year, year and a half, kind of go through the basics of what uh, somebody would get at a uh, somebody who's studying computer science. But more importantly, I wanted them to kind of build up their experience because I know what I know about students is whenever you're teaching students about coding, right, they're going to get stuck. And I guess my number one advice for the high school teachers was you have to learn you have to get stuck yourself and figure out how to get yourself unstuck because that's you know mostly what you're going to be doing all day is these students are going to have good questions and the more experience you have the better. My general thoughts on teaching like I I've already said uh my main job is just motivate the students to want to learn and again enthusiasm goes a long way. also coming up with interesting projects like projects that they actually want to solve or they want to know how well how do we uh whatever fill in a a cross word puzzle or how do we have a robot move through uh like a 2D map uh stuff like that um I spend a lot of time actually thinking of interesting projects and I think that's way more valuable than you know being a really polished ed speaker. I don't consider myself a really polished uh presenter of information, >> but I'm enthusiastic and I I try really hard to come up with these interesting projects and then the students just take over from there. >> Well, I will say this is your first ever podcast interview and I think you're doing a great job. Uh so, >> thank you. >> Yeah, don't don't hurt yourself too much in terms of uh being a Polish speaker. Uh one thing that I you brought up that I think is really interesting is just the the focus of projects and uh that's one thing that free code camp like many years ago we we reoriented the curriculum to really be project oriented like everything is a project everything is like every lesson is in the context of you're trying to build this you know leaderboard for a video game or you're trying to uh like even in the design space you're trying to design a USDA nutrition label. or something like that, right? So that way there there's something concrete and there's like a a clear goal and same thing with the free coamp YouTube channel. Almost all the courses are project oriented where you code along at home, you clone the GitHub repo and then and you try to progress. What are some uh ways that you've introduced project-oriented teaching into your teaching over the years? >> So I'd say that's the focus. Uh again, um I'm not dynamic enough to I think really get the students to want to learn just from hearing me. So, uh I pretty much center all of my courses around a group of projects. And of course, there is content that that I have to present, but it's I almost always uh let the students know the goal first, right? We're building X, Y, or Z. Okay. So, how do we go about doing that? Well, we have to do this and we have to do that. So, what what do we have to know in order to do those things? That I think for sure is uh that's definitely my preferred uh way of teaching. >> Yeah. And a question I have then is so what proportion of the time uh like let's say totally like there are like I don't know 20 weeks of class I don't know the exact amount and like maybe there are you meet like twice a week or something like that. I'm not sure how it works over at Carthage, uh, the university that you teach at, but um, like what percentage I guess of the time would you spend lecturing versus, um, like kind of doing flip classroom where they're working on stuff and walking around and talking to them? >> So, it depends depends on the course. Uh, there are some courses that uh, it's easier to do uh, the project work. Those are the courses I prefer. Um, and you know, there's a couple sayings some of my colleagues use. Uh, you could either be the the sage on the stage or the guide on the side. And I like to be the guide on the side. And I would say, you know, there's not any course where I'm talking 100% of the time. I would say I would maybe limit the max would be maybe 50% lecture 50% hands-on and a lot of courses it's much you know much higher hands-on work there's some some courses are 90% uh you know we have discussions about the problems but I wouldn't really call that like straight lecture >> yeah it's not like PowerPoint and just standing up there delivering the same lecture that you delivered six months ago. Yeah, that's not my particular style. I uh I like engaging the students and seeing what they can do. >> And you know, students change. I was just talking to a colleague about this. Every six or seven years, the whole student philosophy on learning changes. And this is not something I knew was going to happen, but it's been pretty consistent. uh you know it was a little bit of a shock. my first six or seven years I spent a lot of time and I thought I was pretty much done but no the students changed and then I had to adapt and now you know I I pretty much always have my eyes open and I'm I'm trying to uh adjust and adapt to uh you know students the way students want to learn >> right >> so for example I I used to be able to like have a hundred minute class where maybe I was talking uh you know a lot of that time now forget about it. No no no student will sit still for 100 minutes and listen to anything. So but that's fine. I I know in six or seven years something else is going to change and that's just part of our jobs I think is to adjust and adapt uh and you know meet the students where they're at. >> Yeah. a lot of people like computer science has been I think one of the most popular uh majors uh for the past yeah really two decades or so and it's it's certainly I think it's the highest compensated like you're you're likely uh you know annual income is the highest if you study that versus pretty much any other subject uh assuming you're not going to like medical school or law school uh afterward so like like just at the bachelor level uh and there with all the rhetoric around, oh, you shouldn't become a developer anymore. You don't need to, you know, just like you have some skin in the game. Not only are you teaching, of course, but your son, one of your your oldest son is actually actively studying computer science right now. And uh your other son is getting ready to finish high school and go study computer science. So clearly, you still believe that this is the place where people should go. This is kind of like one of the best fields to get into. Would you agree with that statement? Definitely uh I mean learning about computer science changed my life for the better of course uh not only kind of career-wise but it really helped me think like I'm a much better thinker than I was before I started uh learning about computer science and yeah I'm definitely excited about my kids studying computer science. So my oldest son is right now uh he's a double major computer science and environmental studies or environ environmental science. This is the one thing I wish I did when I was a student is maybe study computer science and something else like so I I know how to program really well but I don't know anything else. I kind of wish I I learned something else too. >> Kind of like a subject domain area that you can apply program because like environmental, you know, science like you you could potentially take data from, you know, like a a water filtration plant or I I'm just trying to grab examples out of my head or uh you know data around like the water runoff uh of a reservoir or something like that, right? And then you can apply kind of like computer science thinking and systems thinking and you know all the applied mathematics and everything that you learn when you get a CS degree uh toward being able to do useful things with those data or solve problems, right? Is that >> Yeah, exactly. So, my son is uh he's going to be a senior next year and he's thinking about his senior thesis project and he's been telling me about um his interest in in like AI data centers and we happen to be right on uh Lake Michigan and there's all these uh AI data centers that are popping up I think because of the large body of fresh water that we have here in the Great Lakes. So, he doesn't quite know what it's going to be yet, but it's going to be some uh the environmental science part of it is going to be some kind of uh report or looking into the the environmental effect of all these AI data centers and he'll have the skills to, you know, take data and manipulate it and do interesting things with it. >> Yeah. >> So, I think it's great study computer science. my younger son. I I hope he studies computer science and something else as well. I think that's uh that's an awesome uh makes you very powerful in that other field if you can do things manipulate data and write programs. >> Yeah. And I'm sure lots of you know scientists and other people that uh your son works with are going to be leaning on him to help him get their work done because he'll have you know the ability to leverage these tools. I want to talk a little bit about playbacks uh because of course you have built your own interactive learning platform that free co camp frequently we we publish uh articles that link people to a lot of your coursework and we think it's phenomenal and uh I want to talk about like the platform and and why you chose to build an interactive learning platform on your own when there are like companies that do this there like probably you know entire university systems that will build their own like learning management system and all this stuff and you just built it yourself. >> Yeah. So, this all goes back to uh so I'm a book lover. Again, I'm I'm old enough when I was a student learning computer science. Uh pretty much the only resource we had were books, you know, traditional programming books. I'm surrounded right now by 800page programming books. Uh and I see some in your uh background as well. Yeah, this is one we published through Free Code Camp Press. It's Yeah, >> Omar Rosenbomb's uh getting things done. He he just published another book. Uh we publish a lot of free programming books, but but basically you're talking about like the O'Reilly, the uh you know, like C++ in 24 days, you know, like all those books of your uh like the reference manuals. If anybody's seen the movie Hackers, they're like geeking out over all their different books. Uh like the the picture guy, you know. >> Yeah. Yeah. Exactly. Um but you know younger people are not into books uh sadly for me but you know there's a reason right so when I think about a programming book you have of course this narrative that comes from the author they're they're trying to explain uh some code and then they show little code snippets usually these programming books I know you've read many of them but It's a little inconvenient, I think. So, you're always sort of going back and forth between the author narrative and this little snippet of code. And you never really get to see the full code, right? Because it just would take up too much paper, I I guess. And also interestingly, I I think publishers probably ask the authors to be a little more verbose than they probably need to, right, to justify that whatever $40 book price. >> Yeah. >> Uh so it's books are fine. Uh I love books actually. They're still my preferred uh way of learning something. But uh again, not not everybody agrees. So more recently of course people make videos and uh videos are great too. Videos have those two sources right? They have the narrative that comes from the author that's the audio and then the code of course shown on the screen. So you get to see kind of see and hear both of them at the same time. You don't have to go back and forth. You don't have to scroll 10 pages back to uh reread something. But videos have some problems I think as well. So um it's just too darn easy to let the video like play on. >> Exactly. I mean people like people literally will sometimes comment on free coance videos. I went to sleep and I woke up and I was learning something completely different because YouTube just kept autoplaying. Uh, and and I mean that's great. Like maybe they learned something subconsciously when they fell asleep on their keyboard or whatever. But >> yeah, like like I like the fact that the book doesn't advance itself. You have to be reading at least think >> with a book if you get to the end of a paragraph and you you kind of wonder what did I just read? You could easily go back and restart that paragraph. >> With the slider, the video slider, it's it's harder. Um, also when you're, you know, going back for reference, when you want to go find that twominute part of the video that explained exactly what you're looking for, again, that slider is not a great search tool. And also, of course, if you ever want to copy and paste anything, it's it's very hard or impossible to do with a video. >> Yeah. And to go back to one thing, not to derail you with learning on a book, like when I'm reading a book, I can often remember like kind of about how thick the book was on one side of my hand and how thick it was on the other and maybe even like the position on the page that that text or if it had like a lot of the O'Reilly type books have like different kind of like panels type things inside there that are different colors or they'll have some sort of illustration. Those are just little hooks that your brain uses because of the weirdness of this associative network in our brain that will help you quickly find what you're looking for. Uh just because of all that additional context and you don't get that with a video. >> Yeah, it's uh amazing how our brains do stuff like that. >> Yeah. But getting back to the playback, sorry, I just wanted to add that and like loop back to that previous insight that I had uh because I think it is important that we acknowledge the way humans learn is completely different from computers. computers would just throw all that extraneous data away. We can't. It's just part of who we are, right? U so these playbacks combine the best of both worlds in a sense that they they combine the audio track with the textual content uh and the code. >> Yeah, that that was my goal is to take uh what I liked about books uh is uh the narrative part, but also you get to see the full code uh available uh at any time. So you could uh if somebody goes to the website, they can kind of click around the tabs. You always have access to the full code and the narrative is kind of on the side um that's describing uh that narrative. The other thing that I I think is great about the code playbacks is not only can you add text, but you can draw those pictures, those whiteboard style pictures. You can attach those right to the narrative. So when somebody's reading, you can read the code and then see the whiteboard style picture uh kind of side by side. It's a little harder to do that with a book, right? You have to usually go back a few pages and you kind of >> It is hard to do that sideby-side comparison because the text is going to wrap and you're like you said, it could be several pages back and so you're flipping back and forth. It's kind of like the math books where the answer would be in the back and you'd have to like flip back and forth. But with you have infinite size canvas essentially. uh in a browser to put all these things. One thing that you've been doing recently is incorporating LLM assistance and like code analysis into your tool. Can you can you walk through like how you went about doing that? Um because I think there are a lot of lessons there as to how to do it and not to be too handholdy or to be gimmicky, but to actually use it and actually get utility for having this LLM looking at your code and giving you feedback on it. So definitely my goal was to sort of build in that uh infinitely patient tutor. So as you are kind of going through these code playbacks uh you maybe I should have said this before you get to see the code evolve. So it's uh you don't start with a final product. You it sort of grows slowly over time. And at any point in time, you can uh basically ask this AI assistant a question about the code that's currently on the screen. And um so I I the way I built it was uh with you know one of the big companies APIs and I send the code and I send the author narrative to the LLM and um couple ways to interact with this. the the student can come up with a question like literally, you know, what's the head pointer going to uh be set to after this function is completed, right? Or uh there are a couple ways to have there a couple sort of built-in questions like uh summarize this code or what could go wrong here. Uh there's also the ability to um to make it a little more interactive. you can have the LLM generate these multiple choice questions, self-graded multiple choice questions that are about something that's on the screen, okay? Or or something that the the author is trying to talk about in their narrative. And I was shocked how well the LLM actually worked. So, I started experimenting with this uh probably a year and a half ago. Uh, and I've just been shocked that um, you know, it it's pretty darn good at analyzing the code and the narrative and the student question and coming up with a pretty good answer. So, it doesn't generate code. That's not not the point. It really is there to be that tutor, that assistant, uh, that can help answer questions. you know, I I measure how many students are actually using that and it's really only about 10% of the time do uh does a student actually use the that AI tool. And what that tells me is 90% of the time the human generated content that I came up with that's doing the trick just fine. uh it's only kind of like the edge cases and sometimes a a student will be uh have a particularly insightful question that maybe I didn't think of and so for that it's great. Uh but most of the time most students just are happy with the the human content that I generated. So all of my uh code playbacks they're code that I I write myself. So I I'm very specific when I I'm writing some code for teaching and it's just easier for me to write the code than to have the LM write it and then me kind of mess with it. So >> yeah, >> you know, I use the LLM's for to actually help me a little bit with writing the code for this tool, but when I'm doing some when I'm teaching something, I you know, I never use the LLM to generate code. >> Yeah, that makes sense. So uh essentially 10% of the usage is using the LLMs to address edge cases that the other 90% of usage uh which is focused on the coursework you've already created personally like manually uh that that does the trick 90% of the time and then the 10% or the LM's there to catch the 10% edge cases and then eventually based on that you can go and further improve the original coursework and it and maybe eventually it'll be down to like 1% of usage depending on uh how like the feedback loop and how um but like I know Google for example I talked with like a Google engineer working on search and they said like something like 15% of all Google queries have never been searched before. So there's always going to be that edge case that unexplored kind of frontier. Um I have two more questions for you if you have a moment. >> Yeah there there's also like remedial questions. Sometimes students jump in a little too uh they're not quite there to handle the the particular program. So edge cases, remedial type things. Yeah, those are uh >> yeah that's really interesting because like free co camp like people will get their their eyes will be bigger than their stomach. They'll like get ahead of themselves and then it is nice to have that kind of like release valve of like they don't have to be like oh damn I'm like completely uh you know I have no idea what I'm doing right? I'm out of my depth. Uh they can kind of chat their way back to feeling comfortable or maybe the LM could remind them like, hey, you know, you might not feel so out of your depth if you hadn't skipped this section. >> Yes. >> So I I guess that's something that your LLM tool can do, too. Um so my quick questions for you because uh you've been very patient with your time. I know you're a busy prof. Uh what are the most durable skills and concepts that everyone should still go deep with that you don't think LLMs are going to you know obsolete like like nobody's going to regret spending n hours learning XYZ because that's unlikely to be you know automated. >> I mean I always go back to problem solving. uh I don't have uh you know I don't think there's any one particular language that uh somebody has to learn or any one technology but just problem solving in general and often that means really uh getting comfortable with debugging code like when we write code it's different than when the code runs and the only way to really see what's happening is to step through that code and see what effect it's having on the other parts of the system. So if you build something from scratch or you build on top of you know something uh being able to to debug it and fully understand what effect it's having I think is the to me that's the core of problem solving. >> Awesome. So problem solving like nobody going to progress >> very general and generic but uh >> but in the context of programming like literally like like just understanding what's actually happening in there and being able to fix that and like you said earlier programming is just getting stuck over and over and over like when things are going swimmingly and you know exactly what to do like those are the parts that are actually like pretty hashed out and and uh well understood. Those are the parts that are going to be, you know, potentially automated by you just reusing code that you've already written, uh, or, you know, like grabbing a library for something that's very well understood. It's that that frontier of our understanding of a particular, you know, code base or trying to solve a particular problem. That's where you're going to spend almost all your time as a developer, right? >> Yeah. And uh again, the best way to learn is just build build, get stuck, get yourself unstuck, and you know, try and take lessons away every time you do that. >> Absolutely. You've been through the com bubble. Um you were like a pretty fresh dev in the late 90s when it happened. Um I don't know if you want to share any of your stories from that period real quick, but but like many people would say we're kind of in a similar era where just like you know kind of unbelievable amounts of money are being put into building out AI data centers or invested in uh training models when you know there might be diminishing returns that we don't know about. Uh there are lots of you know extremely expensive projects being built in parallel when likely only a few will actually see sustained usage over time. Uh just the sheer volumes of money uh and the the sheer brick neck speed at which people are trying to get things done and you have to spend more money if you want to get things done quicker, right? Like uh it's that whole good fast cheap triangle, right? And uh you can only have two and and most people are opting for good and fast. Good and fast, right? Um so the cheap is nowhere to be seen and trillions of dollars being spent. What did you learn from the doco on pubble and do you often think about that time in the context of like reading the headlines about you know investments and product announcements and and CEOs saying you know kind of grandiose things. >> Yeah. There have definitely been there's been hype, you know, since the.com bubble up until, you know, this AI era. So, I'm thinking of like uh NFTTS, for example. Most people knew that was a scam. But at the time, there were some people who thought, "Oh, yeah, NFTTS, that's that's going to change the world." with AI there's something different like like there's something really there that I can't deny. Um so I would say of all the you know right after the dot uh bubble happened I was actually uh just when I started teaching and the numbers of computer science students went down a lot but it didn't go away. That was actually one of the the best parts of my career because the only people who were studying computer science were the ones who really wanted to uh learn about programming. Uh you know all the other people they were scared off by the by the bust. Um, and then there have been several ups and downs over the last, you know, 20 years, but there's definitely something different about this this AI era that we're in. And I wish I had a better answer. I I don't know what's going to happen, but this one does feel different. So, one hardening takeaway from that is a lot of the fairweather, you know, people that would happily end up on Wall Street or wherever they could earn a lot of money, uh, they're not necessarily going to be in the computer science departments right now. >> So, exactly, at the very least, if you genuinely enjoy learning programming and building software, uh, then you're probably going to be surrounded by like-minded individuals if you go pursue a CS degree right now. Yeah, I think that's that's how it's going to be. >> Yeah. Well, this has been a very insightful conversation, Mark. It's been an absolute pleasure talking with you. Uh I hope everybody learned as much during this call as I have. Uh I've got like 179 lines of notes that I'm going to be reviewing as I try to figure out how to like process and break all this down and distill it into like an intro. Um, Mark, uh, I have linked to some of your playbacks and some of your free Code Camp articles in the description. I encourage everybody to check out that, uh, learn from this guy. He knows what he's talking about. He has been there both in industry and in teaching for decades. Uh, and there's a tremendous amount to learn from him. >> Thanks a lot, Quincy. >> Yeah, it's been an absolute pleasure. Until next week, everybody. Happy coding. >> Happy coding.

Generated algorithmically for Search Engine Indexing.

Summarize Another Video