Alana completes Harvard CS50 at 13 years old

Alana, 13, finished Harvard's CS50 and built a Flask app to track reading goals. She used AI only for a logo, relied on mentorship and discipline, and says the hardest part was getting started and customizing the layout.
Chapters
Okay, well, last time I talked to you about Harvard CS50, you were almost done with your project. Have you finished your project, or you're still working on the last bits?
Yes, I'm done. I turned everything in.
Oh, wow. So you're completely done?
Yes.
Have they evaluated it and gotten back to you yet?
Yeah, I got the certificate. I can show you if you want.
Oh, congratulations. Do they give you grades, or? Percentages, or what do they give you by way of feedback?
I haven't found— there probably is. I haven't explored it too much. Um, there probably is a way to see the percentages, but the site where you see if you completed the assignments or not just tells you, um, or because you have to pass certain check— checks. You have your project has to do certain things in each one, and if you pass all the checks, then you're good to go.
Good.
So that's how that works.
Good. Well, yeah, do you want to show us your project?
Yeah, let me share.
This is the last project, last assignment of Harvard CS50.
Yeah, so it was kind of open. You could really do anything you wanted on any type of thing on the internet. You could make things in other languages, but I just decided to go simple and kind of use what they taught me. Um, so yeah, I made a web application where you can keep track of your reading goals and books you want to read and books you've already finished, because that's kind of like me. Got it. Uh, you can log in, save your data, stuff like that. So I'll register a new account just so I can show you.
Mhm. Um, by the way, when I was a little bit younger than you, I started writing down on a piece of paper uh, you know, all the books I read, how long they were, when I finished them, that kind of thing.
Oh, that's funny.
But yeah, nicer to have software.
Yeah, it's a little easier. Okay, so this is the index. It's got no data on it yet because I just made a new account. Uh, the first thing I made is a future reading list, so you can choose to add a book. What's a book you want to read?
Um, let's say, uh, Charles Dickens. Or let's see the title. Um, what's a, what's a great Dickens book? Let's do Wuthering Heights by Jane Eyre.
Okay. Is it Wuthering with a U or weathering like weather?
W-U-T-H-E-R-I-N-G. And this is by Jane Eyre. J-A-Y, right? J-A-N-E, and then, right. You know how to spell it.
I've seen her name before, I think.
Okay.
It's, uh, Rhi with Alana, I guess. Michael. Okay, cool. So you're gonna click add and then it gets added to the, to the page. Um, just for context, I have a database in my project file that keeps track of everything with a couple tables and stuff.
Yep.
Uh, yeah.
It's beautiful, professional. Where did you get the graphic?
Well, I came up with most of it by myself, just with CSS.
Uh-huh.
To the extent I used AI for the entire project was just to help with logistics and then teaching me concepts I didn't know. But I came up with most of the CSS by myself. And just so that the list isn't empty, I'm just going to put another one so I can show you. You can delete it if you press Delete. Delete, and it's gone. It's gone from the database too. Okay, uh, so there's another thing, finish books. There's two ways to finish a book, but the first one is if you already finished a book and forgot to put it in your future reading list, you can just go add book and then go and then fill out the stuff, uh, and then rating, and then add, and then it's there. If you want to finish a book that was already in your future reading list, you can just press finished and then put in comments. Uh, it was long. I don't know if it's long or not. Anyways, reading, 5, save, and then it goes out of the reading list and into your finished books list. Uh, great. The last one was pretty simple. Um, it just tells you your goals and your accomplishments. So Michael has read 2 books so far and has 0 books in the reading list. You can change your goal to read books by clicking these buttons right here, so either plus or minus, but you have to click save in order to click save, otherwise it won't save. Uh, anyways, back to the index. All of the data has been shown here. Welcome to your bookshelf, Michael. You finished 2 books. There's no books in your future reading list, and you've read 2 out of your 6 goal. A recently finished title is Wuthering Heights, but since your future reading list is empty, you don't have a next read. Anyways, you can log out if you press log out and then log in with a different account, um, and my data is all different.
Got it. Um, so you're going to read George R.R. Martin?
I listened to the audiobook.
And did you like it? You liked it? I loved it.
Okay. I'm watching Game of Thrones and House of the Dragon, so I wanted to like know a little bit more.
Did you like the book better or the movie better?
Well, I mean, obviously I like spent most of my time or enjoyed watching the show more, but during school days it was really fun to listen to learn more of the history.
Got it. Very interesting. And then can we see the code, the code base behind this?
Yeah. So I did it in the CS50, in the CS50 Codespace, because one thing I noticed in the course is that they give you a lot of, like, CS50 libraries and shortcuts that are different from real-world applications. And since that's another journey I have to go down learning actual, like, all the actual syntax. I just decided to do it here so I could use what I know. Anyways, it's both front end and back end. Let me show you the database. Okay, never mind, I'll do that later. Um, so I use Flask and a bunch of HTML files with layout so that it has the same header and buttons and stuff. Um, layout is one of the main concepts that they covered in the HTML section. It's basically, um, if you name an HTML file called layout, then the computer will know that if you add a certain extension to your other HTML files, it'll use this as like a template for the, for the thing. So it's got the header and the AI-generated logo I got and all the buttons and stuff to go to different pages.
Do they, um, use you to use AI now at Harvard CS50?
Say that again.
Do they encourage you to use AI in Harvard CS50?
Do you mean for the logo or like generating code?
Anything either?
Well, you can't use it to generate your whole project for you. That'd be cheating.
Right.
The only things I used it for was to generate the logo and help me with logistics and teach me new concepts if necessary. But I never had it write out a full file of code for me.
Got it. And they say explicitly that, and it makes sense, of course, that you should not use AI to generate code. What was the hardest part of this particular project?
Uh, the hardest part was getting started, I think, because, um, like, I was familiar with all the code, but most of the layout code I got from previous projects, which is fine. They did say that it's fine. Um, but customizing everything and adding my own implementations was pretty hard, but once I kind of got into it, it felt normal.
So, um, is there— in the, in the backend, are you using Python or C or C++? Or what code are you using in the backend?
Uh, for the backend, Flask. I'm using Python, um, in my app.py. It's just handling all the data for the database.
And, um, yeah, was, uh, would you say you prefer working on the frontend or the backend, or both the same?
Uh, both, because they kind of work together, especially in an application like that, even though it's pretty simple. You You need both. I don't think I really had a preference. I think just because I had background with Python, I was better at it and it came more natural, but learning HTML and CSS was fun. I had a hard time with the JavaScript with everything. So right now I'm doing like a Khan Academy JavaScript course just so I can get to know it a little bit better because I had done Java in the past, but Java is different from JavaScript, so it kind of messed me up.
Got it. Uh, yeah, they're very different things. Um, would you say that, uh, you have come to like coding, love coding, it's okay? What's your relationship to coding at this point?
I like it. I think it's fun when I get to do things that are fun. Um, I would like to pursue it, but, um, it's kind of ironic, like, just after I finished, uh, this course, I've been seeing like ads for, oh, you can generate like an app or website with like this app or website. So it's a little disheartening, but, and even though I know that I might not like be able to do the things that I'm learning right now as like work in the future because of all this new technology, it's still fun to learn and tell people I made this.
So yeah, and the, the take I'm getting, and I know a lot of coders first who've spent a lifetime learning to code and code well, for whom, uh, you know, they're mostly using AI to generate code now. At the same time couple of things. One is there's some people who are saying that there's still some cases where having the human correct the code afterwards might occasionally be necessary. But the other thing is, uh, kind of having gone through the process of creating a website, even if the app, um, even if a Vibe— if you use AI to Vibe code and basically AI is basically doing all the work that you had just done here, you have a sense for what's happening.
Yeah, absolutely.
Having gone through this process, you know, I think people who have not coded, you know, don't sort of know. So there's some phrase called computational thinking, and in some ways it means how to think like a computer. And, you know, now that you've done this, you know that, you know, there's a certain way you have to organize information in the back end, and you have to think through what do I want on the front end. Basically, you have to think through what you actually want the computer to do. And I think people who have not coded, it may not come as naturally to many of them even to ask AI what to do. Does it make sense that maybe having produced a program, you've got a more concrete sense of what it means to ask a computer to do things and what kinds of things to ask it to do?
Yes, I completely agree. If I remember when AI just first came out, I'd like tried to have it make me a program or whatever, and I didn't really understand it. So I was like, oh, there's no, there's no point. Uh, my uncle, he's a web developer and he wants to, um, have sessions with me where we just live code because he thinks it's fun. And even though he's like a professional web developer and he knows like, oh, AI is coming, um, he still wants to like learn how to do it, which I think is cool.
Oh, that's fantastic. Because I do think, I do think most of the future is using AI and coding for sure. But I think combining your experience, so I think rather than kind of be sad that now you've learned to code, it's obsolete. I think the other way is you've learned computational thinking by getting into the weeds about how to do it. And so now as you use AI, you'll have, I think, a significant head start over most people who haven't. Just you've spent a lot of time going through the process of thinking through how to create a website in this case and how to create the backend and how to organize data and all of that. Um, where's— to what extent was your project something where you were modeling it on something that existed versus thinking through it on your own?
Uh, well, my idea— well, I didn't know. I looked it up like after I had started making it, and apparently there is like an entire other application, professional application called Bookshelf, and it's like a reading list with like APIs and stuff. But that's okay. I came up with it all on my own with all of the implementations and stuff. There is a real-life bookshelf that you can go and make an account on. But that's okay. I had no idea. So for the record, it was original.
Got it. Yeah. So you had mentioned when we talked last time that when you first started Harvard CS50, it was kind of hard and maybe not fun. But this last project was mostly fun. What was the transition? Do you think it's mostly maturity? Is it that you learned, learned how to do things better? Was it having Kevin help to explain things or AI help to explain things? What changed it from being kind of hard and not fun to mostly fun and manageable?
A couple of things. First of all, maybe I did mature a little. It's been maybe like 2 years. Having a schedule and a system and a teacher really helped because especially since I prefer doing other things in school over coding just because I wasn't familiar with it. I would tend to procrastinate. So I put it off and then I'd get back into it and then, oh, it's so hard. But having Google going on every day and having a schedule was awesome and it got me into a routine. Also, I do notice that I prefer HTML and CSS and just generally producing things rather than algorithms. And the first half of the project was mainly focused on algorithms. And I was not very good at that, I think. I mean, I'm not sure if this is like a true, a real phenomenon or whatever, but I feel like my brain is more oriented towards making things than like creative side of things rather than the mechanical algorithm side of things.
Yeah.
And so I had a really hard time with like 2 or 3 weeks, but yeah. Yeah.
No, that totally makes sense. And then when you were working with Kev, did he mostly provide explanations? Did he mostly help you fix your code? What kind of, what kind of, how exactly did he help you?
When I came to him with my problems, Usually we would just work through it together. I would explain it to him. Actually, like half the time, when I was talking through it aloud, I would be like, oh, that's wrong, or you should fix that. But then if there was anything else, he would try and lead me to it or just explain it to me if it took too long.
Got it. And were the Harvard CS50 lectures valuable, not valuable, it varied?
Definitely valuable. If you paid attention and took good notes, they taught you a lot of things for sure.
And would you say you became better at paying attention and taking good notes?
Yes. Before, I thought I could just memorize and remember everything, but it's a 2.5 to 3-hour lecture, so I can't. I started to take notes That you're above, you're blanking out.
Can you hear me?
Yes, I can. Sorry.
Yeah. Yeah, well, that makes sense. Would you say you learned to take notes for kind of a hard lecture course, that that's part of what you learned is simply how to pay attention and take notes?
Yeah, for sure.
Got it. Suppose, would you be interested in taking another college course in, say, a completely different subject or another college course in CS?
Yeah, I would be open to either, for sure.
And if you could pick any subject at all, because, you know, they teach everything at colleges, what course would you be interested in taking?
Uh, I don't— I think I'd have to do a little research and think on that. I have never really thought about that.
OK, no problem. No problem. But yeah, I admit when you started and you were 11, that was pretty young to start Harvard CS50. I'm not surprised. Were you tempted at all to tell me, Michael, this is too hard. I can't do it?
No, no, because that's not how I do things.
I thought— do you think that the jujitsu has given you kind of a determination to work through things? Or are you just by nature somebody who doesn't give up on things?
Both. I also didn't want to disappoint anybody. That was like my internal feeling. But I'm glad I pushed through it because I had a lot of fun at the end.
Good, good, good. No, I think it's an incredible achievement. Congratulations. I think very, very few 13-year-olds finish Harvard CS50. So yeah, let's kind of think about— not that you need to take another college course, but I would say Harvard CS50 is probably one of the harder college courses. So now that you've done a hard one, you know, I don't know if there's, you know, psychology or Japanese or medieval history or, you know, biochemistry or whatever. Basically, the world is open to you. And yeah, if you want to take more college courses, then at least at some colleges you can go into college with perhaps several credits or a year or two of college done by taking college courses, and you learn things, hopefully learn things that are interesting to you. And yeah, having done a bunch of college courses before college will make college easy for you because, yeah. Would you say that Harvard CS50 was harder than any high school class you've had?
Yes, because it was more self-paced, and I didn't have— or for most of the time, I didn't have an actual teacher by me. But I didn't— it wasn't really intimidating because it didn't really feel like a college course because I wasn't in a college, I guess.
Got it.
I kind of forgot sometimes.
So it's in some ways it's just one assignment after the other. With the algorithmic assignments that were tough, was Kev helping you through that or you did those before he was helping you?
So when I started with Kevin at the beginning of the year, I actually did, like, redid one assignment from each week just to, like, refresh so I wouldn't be behind on anything. And when I did them again, I actually took notes, and I think I did a little better, but I believe I also got stuck on a couple things. And yes, he helped me out.
Got it. Well, good. Well, again, I'm super delighted that you have done this. As I mentioned, I'm going to be in Spain the next couple of Sundays. So just, I'm thinking my intuition is maybe before going to Jane Eyre, which is— Wuthering Heights is worth reading, but it's sort of heavy. I'm thinking my instinct is maybe to do Charles Dickens first, and I'll pick a Charles Dickens and propose we read that. And then you and I can figure out how much to read by when I come back in 3 weeks or whatever. And then maybe we can do Jane Eyre after that. People may not be talking about Wuthering Heights, but presumably you don't care if people are talking about the movie or not.
No, I don't think I know anybody who would watch that right now. I think it's okay.
Okay, right. Wonderful. In which case, yeah, congrats, and we'll talk to you in a few weeks.
Thank you.
You're welcome. Bye-bye.










