Summary
Writing a book is hard work, especially when you are trying to teach such a broad concept as programming. In this episode Ana Bell discusses her recent work in writing Get Programming: Learn To Code With Python, including her views on how to separate the principles from the implementation, making the book evergreen in its appeal, and how her experience as a lecturer at MIT has helped her maintain the perspectives of beginners. She also shares her views on the values of learning about programming, even when you have no intention of doing it as a career and ways to take the next steps if that is your goal.
Preface
- Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
- When you’re ready to launch your next app you’ll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 40Gbit network, all controlled by a brand new API you’ve got everything you need to scale up. Go to podcastinit.com/linode to get a $20 credit and launch a new server in under a minute.
- As you know, Python has become one of the most popular programming languages in the world, due to the size, scope, and friendliness of the language and community. But, it can be tough learning it when you’re just starting out. Luckily, there’s an easy way to get involved. Written by MIT lecturer Ana Bell and published by Manning Publications, Get Programming: Learn to code with Python is the perfect way to get started working with Python. Ana’s experience as a teacher of Python really shines through, as you get hands-on with the language without being drowned in confusing jargon or theory. Filled with practical examples and step-by-step lessons to take on, Get Programming is perfect for people who just want to get stuck in with Python. Get your copy of the book with a special 40% discount for Podcast.__init__ listeners at podcastinit.com/get-programming using code: Bell40!
- Visit the site to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at @Podcast__init__ or email hosts@podcastinit.com)
- To help other people find the show please leave a review on iTunes, or Google Play Music, tell your friends and co-workers, and share it on social media.
- Join the community in the new Zulip chat workspace at podcastinit.com/chat
- Your host as usual is Tobias Macey and today I’m interviewing Ana Bell about her book, Get Programming: Learn to code with Python, and her approach to teaching how to code
Interview
- Introductions
- How did you get introduced to Python?
- Can you start by describing your motivation for writing a book about learning to program?
- Who is the target audience for this book?
- What level of competence do you want the reader to have when they have completed it?
- What were the most challenging aspects of writing a book for beginning programmers?
- What did you do to recapture the “beginner mind” while writing?
- There are a large variety of books on learning to program and at least as many approaches. Can you describe the techniques that you use in your book to help readers grasp the concepts that you cover?
- One of the problems of writing a book about technology is that there is no stationary target to aim for due to the constant advancement of the industry. How do you reconcile that reality with the need for a book to remain relevant for an extended period of time?
- How do you decide what to include and what to leave out when writing about learning how to program?
- What advice do you have for people who have read your book and want to continue on to a career in development?
Keep In Touch
- MIT Bio
- @anabellphd on Twitter
Picks
- Tobias
- Ana
Links
- Get Programming by Ana Bell
- edX
- MIT
- Machine Learning
- Github
The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA
Hello, and welcome to podcast.init, the podcast about Python and the people who make it great. When you're ready to launch your next app, you'll need somewhere to deploy it, so you should check out Linode. With private networking, shared block storage, node balancers, and a 40 gigabit network, all controlled by a brand new API, you've got everything you need to scale up. Go to podcastinit.com/linode to get a $20 credit and launch a new server in under a minute. As you know, Python has become 1 of the most popular programming languages in the world due to the size, scope, and friendliness of both the language and its community, it can be tough learning it when you're just starting out. Luckily, there's an easy way to get involved. Written by MIT lecturer, Anna Bell, and published by Manning Publications, Git programming, learn to code with Python is the perfect way to get started working with Python.
Anna's experience as a teacher of Python really shines through as you get hands on with a language without being drowned in confusing jargon or theory. Filled with practical examples and step by step lessons to take on, Git programming is perfect for people who just want to get stuck in with Python. Get your copy of the book with a special 40% discount for podcast.net listeners at podcastinit.com/gitdashprogramming using code bell 40. And visit the site at podcastinit.com
[00:01:25] Unknown:
to subscribe to the show, Sign up for the newsletter, read the show notes, and get in touch. Your host as usual is Tobias Macy. And today, I'm interviewing Anna Bell about her book, Git programming, learn to code with Python, and her approach to teaching how to code. So, Anna, could you start by introducing yourself? Sure.
[00:01:41] Unknown:
Hi, everybody. I'm I'm Anna Bell, and I'm a lecturer at MIT in the electrical engineering and computer science department. So I've been teaching the intro to computer science course or intro to computer science and programming with Python course at MIT for the past 5 years or so. And I've also been involved in in the course that typically follows the intro 1, which 1 which is named intro to computational thinking and data science. And I'm also running these same courses on the edX platform, which is a massively open online course. Before this, I got my PhD from Princeton in computational biology.
But it was during grad school that I was TA ing for the intro programming class there using Java. And I enjoyed interacting with students and pretty much just introducing them to what I consider the wonderful world of computer science so much that I decided that I wanted to continue doing that for my career as opposed to continuing on with computation biology. And do you remember how you first got introduced to Python? Well, it was actually during grad school. So it was during during that work. I, there was some some code that other grad students had written, and it was in Python. So I sort of had to to take over that code, and I started using it to apply machine learning and statistical techniques to genomic data.
So I first started using it, and I found it super intuitive and really easy to use without a bunch of setup code. So even, you know, even code that others had had written without comments, I could understand. So that was pretty cool. So I just started using it in my day to day life to to write really quick scripts instead of, you know, organizing data using Excel or Java or even just doing things by hand. And going from
[00:03:33] Unknown:
working as a lecturer and in education, what was your motivation to then start writing a book about learning to program, and,
[00:03:43] Unknown:
what got you started on that path? So I I felt like there were so many people who were starting to see that programming can can be useful in fields that haven't really traditionally had gone hand in hand with computer science. So these are fields like, like biology, which was, when I was doing my research in or education or even sports. Right? And that's just really true. You know, just because they're fields that aren't traditionally, you know, computer science fields doesn't mean you can't really apply. Doesn't mean you can't apply these, these ideas to it. So I'm really glad it's becoming so widely used in all of these different fields. But, personally, I think you can use programming to just improve your day to day life. So it's an you know, as a tool for automating certain tasks that are really boring to do otherwise.
So for example, things like, renaming, you know, a bunch of vacation pictures that you took, you know, writing, like, a little little program to organize your DVDs and to, like, randomly pick 1 to watch tonight. You know, sending personalized emails using details from file, just things like that. So so, that was my my main motivation for writing a book just for for people who
[00:04:58] Unknown:
don't really think about using computer science in their day to day life. And there are a lot of different books that purport to be for people who are learning to program in, you know, their various languages and approaches to doing that. So how did you decide on the target audience for the book and the assumed level of confidence
[00:05:21] Unknown:
of the reader when they were first starting it? So I guess the best answer here is probably my audience was somebody like my mom. So she's, she's familiar with some technology, knows how to use computers and phones. Right? Maybe knows somebody in their life who's a programmer, but, you know, this my audience has never really programmed before themselves. So, so to my audience, the idea of programming is intriguing, but daunting, which, you know, from, you know, explaining what I did to my mom, it it kind of felt that way. So but I I just wanted to make it clear that you don't have to come out of so if you're learning how to program, you don't have to come out of it with a career in programming per se. If you want to make a career out of it, you'll need a little bit more training, a lot, and a lot more practice than I would I, you know, what I show in the book.
But if you don't wanna make a career out of it, then, what I hope this book accomplishes is just a demystified programming. Right? So I just wanted to show that, you know, my target audience is just some people who, you know, who can see programming as a way to improve day to day tasks that you traditionally do by hand. Or maybe, you know, they could see that programming can be a neat little hobby where you can build some small games or just create little personalized programs.
[00:06:40] Unknown:
And when somebody has gone through all of the exercises in your book, what level of competence and capability and, familiarity with the principles of programming do you want them to be able to walk away with?
[00:06:56] Unknown:
So at the end of the book, I mostly just want people to understand what is possible to do with programming. I feel like, you know, some people feel like it's daunting because they they don't really know, you know, what you can do with it. So they're not sure, you know, if they know somebody who programs. They don't know if, you know, what they might wanna do is is possible. So I want them to just understand that, you know, I I can write a program that renames all my files for me or something like that. So, you know, I want them to, by the end, to come up with an idea for something that they want might wanna create or automate, and to use Python to accomplish whatever their task is.
If the idea since, if their idea seems too complicated, then they could just, you know, I feel like I don't want them to feel like they'll be intimidated by searching online for projects that are similar to what they wanna do. Right? So if they search online for projects that other people have done, then by the end of the book, they'll be able to understand somebody else's code and even try to modify it to their needs. So I guess at a high level, my goal was to introduce the the everyday person to programming concepts that are that are common across most pro most popular programming languages.
So, I mean, I guess I can get into the specifics about what they'll learn. So, you know, the most basic is what a variable is in programming. I know it seems pretty, pretty simple, but I, but it, but most, most people just know what a variable's in math. Right. And when they see operations done with variables in programming, I think it's a little confusing. So for example, like, I think the best example is if they see x is equal to x plus 1. If I just show this to a random, you know, to just a person who's just done math, who just has a math background, you know, they'll just try to solve for x. Right? And they'll end up with 0 equals 1. So that's just at a at the most basic level. Right? They'll learn what a variable is in programming.
They'll learn that you can have different types of objects. Right? Scalars, tuples, lists, dictionaries, and the kinds of operations you can do with them. They'll learn how to write interactive games, right, using print and getting input from the user, how to add decisions and loops to make, to make little games and little programs that that repeat tasks. And beyond that, they'll learn more high level stuff. So things like how to organize their code using functions, and then what it means to write their own object types through object through object oriented programming. So, sort of a a wide variety of of topics covered, but I think these topics are should be transferable to to a lot of other languages.
[00:09:48] Unknown:
And it can often be challenging as somebody who has been working with computation and programming for a while to be able to remember the things that you didn't know when you first started. So what did you find to be some of the most challenging aspects of writing a book that's targeted at people who don't necessarily have that knowledge and trying to recapture that beginner mind in order to be able to, relate these principles from a place that they're able to, relate to and understand.
[00:10:23] Unknown:
Yes. So I guess, yes, I have been programming for a while. And but I have I have been around beginner programmings for the past 5 years, so I've taught the intro programming course at MIT. So I, you know, so I am familiar with teaching programming to nonprogrammers. But having said that, the MIT course moves really fast, and it's really hard. So, so over the years, you know, as students have come into my office hours, I've made some notes about how to better explain certain concepts. And a lot of these notes have have gone into the book. So let's see. So it's, after chatting with with students in office hours, I've, you know, I've had to explain something in a few different ways before it clicks.
When I was writing this book, the hardest part, I think, was just not being able to show some sort of animation. So in office hours, right. I can draw on the whiteboard and I can just explain things step by step as I'm going through it. And, you know, computers work in a very logical way. They do everything step by step. So to me, at least the most natural way to show how a computer does something is to show a step by step animation, which is hard to do in the book. So I the hardest part about, you know, writing a the book for beginner programmers was trying to, trying to think about how to mix images and text in an effective way to match, you know, match to to have the same point be put across that an animation could could, you know, could show so easily. Yeah. That goes into a whole area of what are the appropriate pedagogical techniques
[00:12:00] Unknown:
for teaching, you know, any subject matter, but programming in particular because of the fact that it is in many ways very abstract. And so it can be difficult to relate the various concepts in ways that are easy to grasp, particularly in a very static print fashion. And there are many different books that have tried many different approaches to that, whether it's just, you know, rote memorization and putting programs in line or, some of the things like the Head First books from O'Reilly, where they have the sort of mixed media approach. So I'm wondering I've I've looked at some of the samples of the book, but I haven't read through it all the way. And it looks like you are sort of took the approach of having a lot of sort of smaller blocks of text with, very real world examples mixed in to try and use those as metaphor for the different pieces of computation that you're trying to relate throughout the book. So wondering if you can talk a bit about your overall approach and, how that relates to the way that you teach in the classroom and, any feedback that you may have gotten from people who have read the book and how effective that was for them. Sure. Yeah. So
[00:13:17] Unknown:
keeping things simple was the main theme of the book. Right? It's for people who have never programmed before, and I didn't really want to introduce anything too specific to Python that couldn't be transferred to any other, you know, popular language. So I was really trying to use Python as a vessel to teach the, to teach the audience basic programming concepts, variables, branching, looping functions, and, you know, hardest of all, what it means to have an object and to create your own objects. So, yeah, each lesson is is very short, which sort of mimics the, mimics what I learned from from the way that students learn on edX. So, you know, they want something quick. They want a little bit of information to digest, and then they wanna do an exercise to kind of make sure that they got it. So that's basically what we tried to do in the book. So each lesson is is really, really short. It has, in between each section some exercises called quick check exercises that that students can try out.
They're not necessarily coding. They could just be, you know, like, what is the type of this variable? What is the type of this variable? Something like that. And I throughout throughout the whole book, I'm just constantly in for reinforcing that they need to practice coding a lot before they can, you know, before they reach the level where they can immediately tell what structure the program should take, right, given a given a task. So I'm also constantly reinforcing that they need to type everything out to get the hang of writing code. And I'm also constantly re reinforcing that the computer's there to do the work for them. Right? So they should just just try things out. Right? There's no point in asking somebody what, you know, what does this command do? So if they wonder what if blah blah blah, they can just type it in the the console and try it out. Right? It's it's it's free. It's free. There's there's no there's no downside to doing it. You find out what happens and you get to practice writing code.
So I yeah. I think I think that answers the question. Was there a second part to it?
[00:15:22] Unknown:
Well, I was curious if you have gotten any feedback from anybody who's read the book as to how effective your overall technique was in, allowing them to grasp the concepts that you were covering? So I guess the book,
[00:15:38] Unknown:
recently came out. I think it's I think it's been pretty positive. I think people seem to like the the short lessons because you can just, you know, do 1 on the bus or something like that on the way to work. But, yeah, beyond that, I'm not I'm not sure.
[00:15:52] Unknown:
Sure. And, 1 of the additional challenging pieces is, as you mentioned, you're trying not to tie it necessarily to the specifics of Python, and you're trying to more generally teach the fundamental principles that are, fairly universal across programming languages. So I imagine that it's challenging to try and, sort of divorce yourself from your, experience with Python as an implementation of a language from the, principles that are universal across languages without have without accidentally introducing concepts that are more native to the Python language and implementation that aren't necessarily present in other languages. So 1 thing I'm thinking of is things like the list and dictionary comprehensions that you wouldn't find in something like JavaScript or PHP. That's a perfect example. Yes. So yeah. So
[00:16:53] Unknown:
I I basically wanted to, you know, exactly as you said, kind of write a book that should remain relevant, right, for a while. And it shouldn't just teach, you know, teach Python because there's a bunch of tutorials online that already do that. Right? So there's no point in in writing a book about that. So there are 2 big things that I kept in mind. 1 is is related to just general beginning programming tips. And the other is related to just the programming concepts themselves. So related to the the programming tips, I remembered some of the misconceptions that I had or that I noticed with my students.
So for example, I I just remember the the first, you know, the first few times when I was programming, I thought that, you know, I was very scared to try things out because I thought I would you know, break the computer. This was back in 99, something like that. So I was very young. And, you know, I was reluctant to try things out because, you know, I could crash it or you know? And then I just I wouldn't be able to get it working again. But, you know, 1 thing that I try to get across is you cannot break your computer when you're writing a program. Right? Worst case, you just restart it and everything is back to normal. Right? So the programs kind of work in this little sandbox. So I try to get that point across very early on in the book. Another beginning tip, another beginner tip is know, typing everything out instead instead of copy and pasting. I think we're just so used to copy and pasting things in forms and online these days that it's just really tempting when you're learning the program, especially at the beginning to just, you know, copy and paste because it's the same line over and over again. It's another loop. Let's let's just copy and paste it and change a couple of things.
But, you know, the points that I'm trying to make, to make in the book is that you want to get the syntax to become second nature faster so that you can focus on understanding the big ideas. So it's just these little beginner tips that, you know, that I that I wish I knew when I was first starting to program that, that I'm trying to get across. So the, the other the other thing I kept in mind was just related to the, the concepts themselves. So I tried to introduce concepts that are universal to most popular programming languages. Right? C, Java, Python.
I didn't really get into details about Python too much. So as you mentioned, you know, we're on the same wavelength. I did not put in list comprehensions, even though it you know, some of the some of the some of the early reviews from the book were, you know, were mentioning that they would like to see list comprehensions and how they work. But I decided not to put that in there because it's specific to Python, and I didn't really want to write a book that was about Python. I included things like branching loops, just the idea of a, of a dictionary, right? And how you map 1 thing to another, how to make your own object type. So these are important concepts that, you know, that every programming language has.
Right? So if you understand all of these concepts, then you can understand any programming language. You can write pretty much any code. For example, for functions, I tried to relate the idea of a function to something real that most people would understand. Okay. So I guess, for example, for functions, I tried to relate the idea of a function to something real that most people would understand. So what happens when you order an item online? You know, what are these blocks of of actions that take place? And, you know, I tried to relate that to why you'd wanna write blocks of of of code.
For branching, I tried to relate that to making a decision in your real life when, like, when you're you're waking up. Do you have time to eat breakfast or not? You make a decision depending on what time you wake up and what time you need to be at work. Let's see. I guess, more indirectly related to the concepts, I tried to pick some libraries that would showcase the kinds of cool things you could do with programming. Just general libraries. I mean, they are specific to Python, but I think these libraries sort of exist for any other languages.
So, you know, this is along the same vein as picking concepts that are timeless. So, you know, I showed, how you'd use a library to program, like, a really simple game or, you know, how you use a library to manipulate dates and times to write, you know, some cool programs that you can show off. So yeah.
[00:21:27] Unknown:
Yeah. And 1 of the other challenges of writing any technical book that is focused on programming is that it's a constantly moving target where languages have new implementations and new versions fairly constantly, and there are new programming paradigms that are introduced periodically. So there's always the challenge of figuring out how to make the book evergreen so that it remains relevant for a long time without requiring a revision every 6 months, while still making sure that you're presenting information that is useful at the time that it's being read and is up to date at the time of writing as well. So I know that for your book, you ended up focusing on, I think it was Python 35 as the, sort of implementation target.
So I I imagine that there are even things like the beginning part of just, instructing how to get the interpreter installed that might require some reworking in future additions as Python evolves and new implementations come out or, you know, the website changes, various things like that. So are there any areas of the book that you have in mind that you are considering having to, update in future editions, or do you think that you've been able to keep it fairly evergreen and timeless? Yeah.
[00:22:53] Unknown:
So you're right. It was written, you know, when Python 35 was was going strong, and now we're on to 37. So I think it's it's mostly been I think it it could mostly stay the same. I think the 1 thing that I did mention was, you know, when I talked about dictionaries, I said that a dictionary doesn't keep its order. So when you print something out on a different machine, it might, print, you know, the the keys and the values in a different order. That's, you know, that's changed in 3.6. And, you know, that stayed, you know, it's 3.7 also now keeps the order of the items as you put them in. So that's probably 1 1 area where, you know, I got into the details a little bit too much for that version.
And, you know, it's possible that some libraries might not get ported. There's a chapter at the end about, just some interesting and cool libraries. But, otherwise, I think it's it should be pretty, pretty pretty universal.
[00:23:55] Unknown:
And as you were going through and laying out the structure of the book and the exercises, how did you decide what to include and what to leave out when you were figuring out, what concepts to cover and what areas of the Python language to include in the exercises?
[00:24:21] Unknown:
Yeah. So I originally had so many things that I wanted to include, you know, like data analysis and NumPy and bunch of other cool libraries. But as I started writing, I realized that I was, especially in the early chapters, I was making assumptions about what the readers would know. And I, you know, I was like, wait wait a moment. Wait a minute. This is supposed to be an introduction, like an introductory book. Let's keep it that way. So let's explain why I'm doing things, in a certain way. Let's mention 1 more time why I named this loop variable count here. But when I introduced loops, I named my loop variable I.
So I just took a step back and I focused on the big concepts that are transferable to other languages. Right. We're coming back to that idea. And I think the biggest decision that I made was, was to not include inheritance in the concept of object oriented programming. So ultimately, I I thought that I would just prefer to include a really clear explanation of what a Python class is and why you want it and why you'd want to use 1. I felt like any example that would explain inheritance, especially to a beginner programmer, would over engineer a problem where inheritance does not need to be used. And I felt like this would really confuse the audience. So for the purpose of my audience, I didn't think that the code that they'd write would ever need to use inheritance.
You know, but of course, with the knowledge they gained from the book, I think that they could easily pick up that idea of inheritance from other books or online tutorials. And just related to this this question, I think that's probably why Python is so popular. Right? The basic point in does enough Python is know, simpler as simple is better than complex.
[00:26:26] Unknown:
And so, for people who have read through the book and decided that they want to go further along the path to working in programming or even making a career out of it, are there any particular pieces of advice or resources that you recommend to help them along that path?
[00:26:50] Unknown:
So I would just say, first, just practice coding a lot more after you, after you read the book. Do online coding challenges. There are so many of them, and they're actually pretty fun. After that, I would, I would highly recommend that, you know, you take a course that applies the programming skills that you gain in this book to to some real computer science problems. It's going to be really beneficial, and I think I think it will solidify your skills. So, you know, classic ideas are to implement a searching algorithm, to obviously write your own game, work with some libraries that deal with web data, write code that implements a database, things like that.
And I'd also try to look for an existing project, you know, that you find interesting through GitHub, and just try to contribute to it. I think that would be really useful in terms of, you know, learning to read someone else's code and seeing if you can, if you can, you know, improve on it or or add some new features to it.
[00:27:58] Unknown:
And are there any other aspects of your time spent working on the book and, helping people get introduced to the concepts of programming and the ways that it can be used that you think we should discuss further before we close out the show?
[00:28:16] Unknown:
So So I think there was a question where you talked about the beginner mindset and how I recapture the beginner mindset. I just wanted to add to that, because I just remembered 1 thing, which it's not it's not a traumatic experience, but it's just something that I always I always try to think about. So I just remember back when I was learning object oriented programming, And it was it was my dad who had to explain classes to me. So this is just, you know, working at home, and he tried in so many he tried to explain classes in so many different ways, and I just could not get it. You know, so he, you know, he was like, you can have a house object, and then the house object is made up of a few room objects, and a room object is made up of other objects like a chair or a table. And at a high level, I understood that. And I feel like a lot of the beginner programmers understand that when people explain it.
But, you know, even myself, I couldn't really make the connection between that high level idea and how that gets translated into code. And it just every every time I you know, object oriented programming is 1 of the hardest things to to explain. And every, you know, every time I have to teach that in class or even in this book, I just I just remember this this experience where I just did not get it. And he would explain it to me in so many different ways. But I think the missing piece was when I realized that you talk about objects as these as these things, right, that you see in real life, and they're very complex. Right?
But in code, an object is just made up of some variables that define define what whatever you wanna define, like, just its length and its width and its height, something like that. So I think it's just that connection that is is sometimes hard for beginner programmers to get is, you know, they have a high level idea of how a concept is supposed to work like branching or loops. But how that exactly translates into code is is is a little bit, you know, hard hard to understand. So just lots of lots of practice is is very useful. And, you know, we'll sort of get help help beginner programmers get the hang of hang of it. Yeah. It can often be daunting
[00:30:34] Unknown:
trying to go from understanding some of the individual pieces of, as you mentioned, a loop or a variable, And then you have this grand ambition of a project that you want to build, and then figuring out how do you fill that gap from, you know, this 1 element, this 1 component of a program to this, you know, large complex, multifaceted thing that you want to build. And it's just a matter of 1 step at a time and iterating slowly and just continuing to work off of what you have and then figuring out ways to, compartmentalize that so that you can then use that in future projects and just keep building off of it.
[00:31:16] Unknown:
Exactly. Yes. Yes.
[00:31:20] Unknown:
And for anybody who wants to get in touch with you or follow the work that you're up to, I'll have you add your preferred contact information to the show notes. And with that, I'll move us into the PIX. And this week, I'm going to choose the NetData project, which is a, pretty interesting monitoring program. So I installed it locally on my laptop recently to gain some better insight in some IO pauses that I was having, and it just exposes a vast amount of information, has some interesting alerts, and then you can also use it in a, you know, operations context where you can delegate it to, have a centralized view of multiple servers. So it's definitely worth checking out, and I've been enjoying using that. And with that, I'll pass it to you, Anna. Do you have any picks this week?
[00:32:10] Unknown:
Sure. I have 2 board games, actually. So we recently my husband and I got into board games. We've got 2 boys, a 1 year old and a 3 year old, and they've got a ton of energy. So at the end of the day, it's nice to just relax and and do something that's, you know, a little bit mentally stimulating, not be just be couch potatoes. So my first board game is Star Realms. It's a really cool deck building game that can be played by 2 people or more if you want. It's, you know, it's interesting. You cycle through the deck picking 5 cards each time, and you get to use the powers on the cards. You know, you get money. You can buy new ships, and then you can attack the other person. So pretty standard in terms of mechanics, but it's pretty fun. And I I just like the fact that it, you know, you can just play with 2 people and it's, it's pretty mentally challenging with even with just 2 people.
The other game, the other board game is called Between 2 Cities. So I like this 1 because it can be played with as many people as you want, and it's cooperative, you know, which is it's pretty cool. So, in this particular game, you try to construct cities, between the person on to your left and the person to your right. And the goal is, is to have a city that's really well balanced in terms of malls and businesses and parks and factories. And the ultimate goal of the game is not to have the the highest scoring city, but, the the the score per person is going to be based on the your your your lowest scoring city. So you can't just focus on building a really, really great city with 1 person. You kind of have to balance in between the 2.
So, these are my picks. Both of these are very different than the traditional board games that I grew up with. So I grew up with Monopoly or Life. So it's pretty refreshing to, you know, to see these these other really, you know, just just a different take on on board games or just, you know, games in general.
[00:34:24] Unknown:
Alright. Well, thank you for taking the time to talk about your experiences writing a book and, your thoughts on how to introduce people to programming. So thank you for that, and I hope you enjoy the rest of your evening. Thank you so much for having me. It's been wonderful.
Introduction and Overview
Interview with Anna Bell
Anna's Journey into Python
Target Audience and Book Goals
Teaching Programming Concepts
Challenges in Writing for Beginners
Deciding What to Include
Advice for Aspiring Programmers
Recapturing the Beginner Mindset
Contact Information and Picks