DAVID J. MALAN: Hello, world.
This is CS50.
And this is CS50's office hours, an opportunity
to have some questions and answers or Q&A with me, David and CS50's own Carter
Zenke.
So we are here today on a bit of a special day.
What is today and behind us?
CARTER ZENKE: Today, I think is commencement.
And we have a lot of schools undergoing activities.
We also have a lot of rain going on right now.
DAVID J. MALAN: Yeah, indeed.
And for those unfamiliar, commencement is Harvard's word
for graduation, when all of the seniors and graduate students
actually finish their studies here at Harvard.
And indeed, it's just started raining and even thundering and lightning,
so they've rather sent a lot of people inside.
For the curious, the way Harvard's graduation has been structured for years
is there was a morning ceremony.
And the rain held during that, so all was well.
And thousands of people gather in Harvard Yard.
They put up literally thousands of folding chairs.
And all of the dignitaries, and deans, and presidents are up on the stage
presenting students sort of verbally with their degrees.
But then in the afternoon, all of the undergraduates at least
go back to their dormitories or their houses, as they're called here.
And then on a much smaller scale, a few hundred students at a time
actually receive their diplomas.
And each of the graduate schools go back to their own campuses as well.
So where is this that we are right now, Carter?
CARTER ZENKE: Well, we're at the SEC, the Science and Engineering Complex,
which is over in Allston.
Apart from Cambridge, a lot of things are happening right now.
DAVID J. MALAN: Yeah, so this is actually a pretty new building.
It opened during COVID times.
And it's where computer science and a bunch of other folks recently moved.
So through these windows and over by that stadium,
if you can kind of see it in the background and even past
that is Cambridge, Massachusetts.
And that's where Harvard's original campus is.
But it turns out Harvard has a lot of land
here in Allston, which is a neighborhood of Boston, Massachusetts.
And so over the next few decades, Harvard's
probably going to grow all the more here.
And indeed, engineering is growing.
We're actually in a pretty empty space.
We're in this massive building.
But this building, this room that we're in,
is actually all concrete and columns still.
They haven't even finished building out the entire campus here.
CARTER ZENKE: Yeah.
Can I ask you what your commencement was like?
DAVID J. MALAN: My own commencement?
Yeah, so I graduated from the college in 1999.
I don't remember too much of it, but I remember that you wake up very early
at, like, 5:00 AM, 6:00 AM.
And I think we--
I mean, this is very silly, but I think we had, like,
champagne and strawberries as a special treat,
the downside being had to wake up at, like, 5:00 or 6:00 AM for this.
And everyone put on their black gowns at the time.
And then I think we probably--
I think we professed to the church in Harvard Yard, which
is called Memorial Church.
And in there, there was some kind of benediction or speeches
just to get folks thinking about the morning and the ceremony.
And then we went outside.
And on a per house or a per dormitory basis, we all sat together in clusters.
And then all of the other students gathered.
I don't really remember anything after that other
than being grumpy most of the day because everyone wanted to take photos.
And this wasn't even with cell phones.
This was old school cameras.
And it was film, and so you had to get the picture just right,
so everything took forever.
So I'm not really--
I have not really been back since my own graduation.
It was pretty tiring, honestly.
And you, at least, kind of lucked out in that you had a virtual commencement.
CARTER ZENKE: Yeah.
Mine was unique, for better or for worse,
where it was a virtual commencement.
And I remember we had pre-recorded these hello videos that
were going to play on the slideshow.
And I had filmed mine on this DSLR.
And those [INAUDIBLE] on their phones.
I think they cropped my face in a weird way,
so it's like my face was like this [INAUDIBLE].
DAVID J. MALAN: And yours should look the best with that kind of camera.
CARTER ZENKE: Yeah, but it was really funny.
I got a big laugh out of it.
It was really kind of fun.
DAVID J. MALAN: Did you say, hello, world in your video?
CARTER ZENKE: I don't know if I did, but I should have.
That would have been a good one.
DAVID J. MALAN: Well, this is actually Carter's last office hours with us,
sadly.
He's moving on to the real world.
And Carter, it's been so wonderful having you involved in CS50 full time.
And rest assured, Carter's still going to be
heading our SQL class, our new and new and coming
forthcoming course on our programming as well, so he's not really going away.
He's just going elsewhere.
What do you have in mind for the real world?
CARTER ZENKE: So joining a startup that focuses on computer science curriculum.
And they're focused more on K-12, so excited
to see what it looks [INAUDIBLE] excited about computer science
even earlier in their lives too.
DAVID J. MALAN: Well, wonderful.
Well, we definitely wish you the best.
And much like Brian and Colton before him still will be in CS50's ecosystem,
so you'll continue, I'm sure, to see Carter online.
CARTER ZENKE: Most definitely.
DAVID J. MALAN: In the meantime, I think we have a whole palette of questions.
And in fact, if you're tuning in live to the office hours
and you would like to, one, say hello to the world yourself,
and perhaps, what country or city you're from in the world,
please feel free to say hi to classmates.
And two, if you have additional questions,
I'd love to see what's on folks' minds.
Office hours here on campus, more traditionally,
is meant to be an opportunity for students and professors
or students and teaching assistants, or TAs,
just to talk about courses' material.
And while it's probably not the best use of all of our time
to talk about bugs you're specifically having and problem sets,
may be more broadly about CS50, computer science, the real world.
Happy to take any of those questions as well.
And you also kindly submitted a bunch of questions in advance via comments,
so we'll pluck off some of those too.
CARTER ZENKE: Yeah.
[INAUDIBLE] kind of apt for today.
People are graduating with their degrees in computer science,
for instance, is a reflection on undergraduate education in computer
science.
Somebody was asking, there's a lot of disciplines in computer science,
like machine learning, AI systems, and so on.
To what extent do you think the degree kind
of has too much in it right now and should be split apart?
Or [INAUDIBLE] it's actually pretty good as it is right now?
DAVID J. MALAN: That's a good question.
And this has actually come up a lot lately
in the context of artificial intelligence, which actually came up
in that other question.
And should AI be its own major or concentration, as Harvard calls it here?
And I don't really think so.
I mean, this has already happened to some extent.
Depending on the university that you're at
or the community college that you're at, it might be called computer science.
It might be computer engineering, electrical engineering.
There's physics, more proper.
And there's certainly other areas that probably are offshoots
of computer science that exist.
I'm not sure it really matters, though.
Like, at the end of the day, what matters is what you study
and not what you call it.
And I think, frankly, as a catch all calling
the field and the subfields computer science
is a pretty strong signal, anyway.
I think if we start to make things too niche by calling it
a specialization in artificial intelligence,
then it kind of does a disservice to all of the fundamentals
that you would acquire on your way toward learning more about AI
because underlying AI, of course, is algorithms, and data structures,
and so many of the computational ideas that would be in CS itself.
So I'm not sure it really matters.
CARTER ZENKE: Yeah.
I agree with that.
And I think some of that work is done by the undergraduate degree, the master's
degree, the PhD degree because they give you more specialization as you go on
in school, right?
DAVID J. MALAN: I think that's a good answer.
CARTER ZENKE: Yeah.
Makes sense.
All right.
One we had here too is, what's the biggest mistake you see
people make when they start out in CS?
DAVID J. MALAN: What's the biggest mistake?
Honestly, it's not allocating enough time
or thinking that it will go more quickly more easily than it actually will.
And sadly, among our undergraduate population
here, no matter how many times I feel we say
this at the start of the semester, no matter how many times we remind them
of this during this semester, there's still frequently,
I think, this frustration, this disappointment with oneself
that they just don't feel good at it, or it's taking too long, or it's too hard.
And at least for me, personally, when it comes to programming in particular,
if I can't clear out a big block of time, I just don't enjoy it.
I mean, I would hate the idea of trying to do one of our own problem sets
under pressure under a deadline because it takes the fun,
the delight out of actually doing it.
And it turns it into more of a slog.
So I think the best thing people can do in general and the best thing
to do to avoid that mistake is just clear your schedule,
or start early, or do whatever it is so that you're not bumping up
against a deadline.
CARTER ZENKE: Yeah.
I agree.
And to your point about being difficult and time consuming,
I think one mistake I see people doing frequently is going at it alone saying,
this is a thing that I need to learn by myself.
And one thing I value is CS50's community
that we've built up over the past few years,
like many years of people who help each other out online
and ask questions and respond to them.
So it's really, I think, an important part
of learning computer science, that community.
DAVID J. MALAN: Yeah.
No, I do agree.
It's funny.
What also comes to mind here too, because not everyone is like me,
certainly.
And I'm reminded of CS50's own Tommy MacWilliam, one of our former head
teaching fellows.
Some of you might remember him from some of the videos we've filmed online.
And Tommy had this incredible knack for being
able to make optimal use of his time so much
so that when we were traveling to a conference
once, sitting in the boarding area of an airport waiting for an airplane,
he was able to sit on top of his suitcase, take out his laptop,
and write code for 15 minutes.
And he sort of got in and got out of that mental headspace.
And honestly, I just am not capable of doing
that, unless it's something silly like fix a typographical error
or change some aesthetics on a web page.
I need to clear my morning and not have some deadline I'm
bumping up against because otherwise, I just can't get into that zone.
CARTER ZENKE: Yeah.
When I was first starting in undergrad, this idea kind
of resonated with me of this idea of deep work, which is you
have to set aside at least an hour to do something deeply and actually
get into their right mind space.
DAVID J. MALAN: There's a word for this, deep work.
See?
Carter actually went to Education School.
CARTER ZENKE: Yeah.
So I've tried to structure my days or have
at least a little bit of time for deep work, but it doesn't always happen,
right?
[INAUDIBLE]
DAVID J. MALAN: Well, that's the flip side is you probably know, I mean,
there's certain software projects that I, myself,
have been working on because I want to.
And they just kind of linger, and linger, and linger
because something always comes up.
And if it interferes with my ideal work scenario, I think to a fault,
I postpone it.
CARTER ZENKE: Yeah.
That's fair.
DAVID J. MALAN: Well, I think we have a bunch of other questions
that have come in.
For instance, next up-- let's see.
Why don't we go ahead and pluck off data science?
So one of our students online has asked, any tips for people
who want to pursue data science?
And I ask you because, of course, your interest in SQL
and in R, which are very germane to that world.
CARTER ZENKE: Yeah.
So I see data science as being a combination
of different disciplines, one being math and statistics
and the other being computer science.
And so I think you could really think about entering both those disciplines
at once and picking out which pathways you want to take within both of those.
So for instance, if you want to learn computer science, how
it relates to data science, You could take a course like our own Introduction
to Programming with R, which gives you this tool set in this language called R
to learn how to do the kinds of programming you
might do in data science.
But you'll probably still want to learn about the math and statistics
behind that field, so take courses in math and statistics.
And learn what you can learn to then implement it then
in code which you might learn in R, for instance.
DAVID J. MALAN: And this CS50 course on R I keep hearing so much about,
when does it launch?
CARTER ZENKE: July 1.
DAVID J. MALAN: Nice.
So you can go to actually cs50.edx.org/r in order to tune in to that.
Well, we also had a question about AI and ChatGPT,
which is germane to startups.
And someone asks, in the near future, like, two to three years,
can we use AI, like ChatGPT, as a co-founder of an actual startup?
CARTER ZENKE: Interesting.
I think I've actually seen maybe a LinkedIn post or two about somebody
who's tried to use ChatGPT to generate a startup idea and then implement it.
And they'll go back to ChatGPT and say, here's the results.
What do you think we should do?
And it actually gives pretty good advice about what
to do when you're building a startup.
At least, this one person found not one instance.
I don't know if that's a reliable way to go about it,
but an interesting example, I think.
DAVID J. MALAN: Yeah.
I do think if you have a friend, a colleague, an acquaintance who
has some skill set that you, yourself, don't have
and there's an opportunity to actually collaborate with a human, at least,
for now, that's probably the better bet.
But who knows down the road?
CARTER ZENKE: Yeah.
And I think to add on to that, a new model like GPT--
what is it 4.0, for instance?
Yeah, that can do a whole lot of-- you can just talk to it,
and you can get back a verbal response.
I think it's really cool.
DAVID J. MALAN: Yeah.
Makes sense.
Well, the pace that students should be taking CS50,
this is a question that's come up before because we
described the class as self paced.
But what does that mean?
And what would your advice be when it comes to actually successfully starting
and finishing the class?
CARTER ZENKE: Yeah.
Well, I think to go back to what you were saying earlier about this,
just taking time to learn.
When we say self paced, I would say move on when
you think you've mastered the concepts for that particular week.
So when you feel like you have solved the problem set and the best design
you can, maybe that's your cue to go on and try something new.
Here on campus, of course, it's, like, one week of content per one actual week
in person here, but that doesn't have to be the case when you go off
and do it on your own either.
DAVID J. MALAN: Yeah.
That makes sense.
And when it comes to building one's final project--
this is a very open-ended question because it's a very open-ended project.
Do you have any tips for folks on how to do that well?
CARTER ZENKE: I'm curious what you think too.
But one thing I think I've--
maybe two things.
One, again, carving out time to work on it can be really helpful,
like, just take a full hour to say, this is my final project time
and maybe two, I think just picking out things that you find
are problems in your own life.
Things you could automate, things you could use computer science
to help solve, that can give you some motivation
to actually spend the time on it because it's solving a real problem that you,
yourself, had, so yeah.
DAVID J. MALAN: And if we circle back to AI,
definitely a frequently asked question nowadays
is one that was explicitly asked here, which was,
what should we be focusing on to avoid getting
replaced by artificial intelligence?
I heard that cybersecurity, says this student,
is a good sector that's relatively safe from AI.
CARTER ZENKE: Yeah, potentially.
I got to listen in to Sam Altman's talk here at Harvard not too long ago.
And one thing that Sam was talking about is
we tend to think early-- underestimate how much better AI is
going to get, at least, in his mind.
And I think that is kind of a good point to take with you.
And I wonder if maybe the solution or one step in the right direction
is to try to learn all you can about AI, how it works, how you can use it to be
the person who's using the AI and not being replaced by it,
if that makes sense.
DAVID J. MALAN: Nice.
And let me ask our friends, Max here.
Max, we're seeing reports of folks having trouble hearing audio.
Is that, in fact, fixed?
All right.
So hopefully, you can now hear us again.
And we'll fix the audio you might have missed later on when
we post the video after the fact.
All right.
So Carter, what questions do you have, as you like to say?
CARTER ZENKE: Let's see.
So ones-- I'm trying to figure [INAUDIBLE] our chat here.
Any-- actually, let's go based on what we had from--
DAVID J. MALAN: Oh.
Carter, actually, as someone notes in the chat, R is fairly easy.
CARTER ZENKE: Oh, R is fairly easy.
DAVID J. MALAN: If anyone is wondering, so why would
you teach R if it's so easy, Carter?
CARTER ZENKE: Well, there are parts of R that are certainly a little bit less
easy and I think are helpful to do in a more
structured way with a community, where the group is
helping you learn those things.
But actually, R is easy if you want to do certain analysis.
Like, it is easy to do basic statistics with it, easy to do--
representing data with it, which is kind of by design for this language
called R. People made it to be able to work easily with data.
So if you want to learn how to do that easily, you should learn R.
DAVID J. MALAN: Yeah.
But I think there's something to be said,
as folks will see when they actually take the class,
if they do, online, that understanding some of the primitives
and the design decisions underlying R is probably
helpful for just wrapping your mind around what
it should be able to do, how it does it, what the data structures are in memory
so that it's not a complete abstraction.
CARTER ZENKE: I agree.
DAVID J. MALAN: Yeah.
So in the chat here, someone notes that recently the founder of NVIDIA
said that AI will make learning code irrelevant
and kids should focus elsewhere.
Your thoughts?
CARTER ZENKE: An interesting take.
I've seen it repeated around various platforms.
I think it remains to be seen.
I do like the idea of maybe eventually, we
move away from writing a lower level language like C
and more thinking in terms of this higher level English-like language
to do the work of programming.
But I also think it's still useful to learn these underlying primitives,
underlying ideas because it helps you understand why
things are working the way they work.
Yeah.
It's kind of where I would stand on that.
I don't know what you think too.
DAVID J. MALAN: I mean, I would note that NVIDIA
is in the business of selling hardware to facilitate AI,
so I'm not sure how objective that is.
And history is littered with examples of famous people
making bold claims all the way back to Bill Gates and technology
and the like that are then refuted or contradicted just some years later.
I do think the reality is that we hopefully
won't be writing code in exactly the same way because frankly, there's
a lot of TDM to it.
It's annoying to have to look things up or to have
to try to remember, oh what is that function,
or what's the signature of that function?
And then there's a lot of plumbing that needs
to be done, unit tests that need to be written and so forth.
So as much as even I, like, programming, there's
just so much baggage that comes with it, that takes away from the germ of an idea
that you're trying to solve.
So I certainly hope that AI changes what programming is.
And frankly, in an ideal world, I, and you,
and hopefully, others would often be programming, in some sense,
by just using our voice and getting natural language, processing,
or NLP to actually be where you would have long hoped it would be,
even though the voice assistants of today are still only just so-so.
But the reality is computer science, certainly as we presented in CS50,
has never been about programming in C or in Python,
even though as of 2024, those are two of the languages we use.
It really is about problem solving.
And we say that in, like, week zero of the class because what you're learning
is how to think more methodically, more algorithmically,
how to be and act as a smarter person.
And so sure, if all you're doing is picking up
a book on programming in Python, maybe that's not the best use of time.
But that's just an implementation detail when it comes to studying a field.
And so I don't think AI is going to replace the value of being an educated,
smart person anytime soon.
CARTER ZENKE: I agree.
And a related question here I think is somebody
who might be a junior in the industry, they
feel like they're being replaced by AI.
Their skills are being replaced by AI.
What would you recommend for them getting into the industry like software
development or working in AI?
DAVID J. MALAN: Yeah.
I mean, I would first disclaim that I think
no one knows exactly what's going to happen
or how quickly it's going to happen.
But I think it's only to one's benefit to move and learn quickly,
to be willing to and determined to adapt.
I think if you find yourself doing a lot of the same thing
again and again, even if you really like it,
like making lots of HTML, lots of CSS, or just
writing tests for a company, anything wherein you're
doing a lot of repetition, that's kind of ripe for disruption,
so to speak, by AI because it can probably be pretty readily automated.
We've seen examples of this before.
I've mentioned before that I think about this question in the context of, indeed,
HTML in how back in the day, I used to write HTML by hand, line by line,
character by character.
And then tools like Dreamweaver came around,
downloadable software that click, click, click, and it generates the HTML.
Nowadays, we have things like Wix and Squarespace
that you don't even need to download anything.
It's in the browser.
And soon enough, it'll be even more abstracted than that.
But once you've done that once, twice, 10 times, 20 times,
like for a lot of us, the fun starts to dissipate,
and it just gets a little monotonous.
So I think if you find yourself doing anything monotonous,
even admittedly, if you like it quite a bit,
just be willing to continue to adapt and evolve
because I think if you don't, then you will
be left behind as technology advances.
But otherwise, if you're keeping up as a human,
there's only going to be more exciting stuff on the horizon.
CARTER ZENKE: Yeah, I think learning the right skills, like you've mentioned,
is really a good point.
And I think just getting into the industry itself, like finding a job,
just trusting the process of applying, trying again, trying again.
I think if you're doing the right things, it will eventually work out.
And so you should just keep giving it that, try giving it that try.
If it takes six months, a year, longer, it is what it is.
It's going to work out at some point.
DAVID J. MALAN: Yeah.
I think a term in English is upskilling, which sort of refers to just upgrading,
enhancing your own human skills.
And I mean, case in point, I only ever formally studied
things like C a little bit of C Plus Plus when
it comes to programming in college.
And then after that, I taught myself SQL.
And I taught myself PHP.
I taught myself Python with a lot of help from other people,
but I didn't take classes on this.
And so in the sense of upskilling, I just continued to learn new things.
And so that's kind of kept me abreast of the latest trends in industry.
It's opened up interesting problem solving opportunities.
So just don't stay comfortable with where you're at.
CARTER ZENKE: And speaking of upskilling,
do you think there are any new features to be added to the duck debugger
to upskill, let's say, the duck?
DAVID J. MALAN: No.
Yes.
Well, hopefully, the duck will only get better and better.
Honestly, even if we don't do anything, thanks
to standing on the shoulders of folks like Microsoft Azure and OpenAI
on whose APIs the duck is built, we've long talked for years now within CS50
about complementing check50 and style50 with a third tool,
design50 so that not only the assessment of the course,
but also the pedagogical feedback is entirely automatable in addition
to any humans we might also have on staff.
And so a design50 tool in my mind would be sort of already
implemented by the duck now, whereby if you just
ask the duck for some advice about specific code you've written,
it might very well be able to give you that feedback.
But it's not automated.
We don't use it for assessment.
And you have to do a bunch of the legwork, literally the copying
and pasting yourself.
So I think that will start to help.
I'd like to see more tight integration with VS Code.
And these are features we've actually deliberately turned
off where you get little squiggles under things
that could be better or little notifications
in the gutter of the editor.
I think we could just have the duck more omnipresent.
And honestly, as we've seen from OpenAI recently,
I think just being able to talk to the duck
is going to get pretty compelling soon.
Browsers make this a little hard to do audio in two directions.
It's not impossible, but it just adds some complexity.
And so we don't have that plumbing in place just yet.
But I think if you could talk to or have the duck talk back
at you, that's just going to add another vector and aid with accessibility,
because everything has to be typed at a keyboard as well.
CARTER ZENKE: I think that opens the interesting question of,
what would the duck's voice sound like?
[INTERPOSING VOICES]
DAVID J. MALAN: [INAUDIBLE].
Yeah, I don't know.
I mean, at that point, you could probably choose your own virtual animal
to moo at you or bark at you.
CARTER ZENKE: That's really interesting.
Maybe a question to switch gears a little bit,
for folks who really like this field, want to perhaps teach it,
how can they become a teacher, like you, like us,
who are teaching computer science?
DAVID J. MALAN: That's a good question.
I mean, for me, it kind of happened accidentally or organically.
The way I tell the story in CS50 is--
or to people who ask is when I was in college,
I ran for student government, or the undergraduate council,
as it was called here.
And I lost.
And among my shortcomings I felt at the time
were my inability to publicly speak well.
And so I wanted to fix that.
And I signed up for Harvard's Computer Society,
which is the group of really geeky kids on campus, myself included,
who were just involved in computer things.
And the thing I chose to get involved with was their seminar series.
And so I had an opportunity to teach my classmates about HTML.
And I don't know if CSS even existed at the time,
but HTML at least how to make web pages.
And then that evolved into an opportunity my senior year of college
to be a teaching assistant, or TA, for a class called Computer Science E1
Introduction to Computers and the Internet.
So this was 1998, so we were still introducing people
to computers and the internet.
And then right place, right time, I had the fortunate opportunity,
thanks to Professor Henry Leitner here at Harvard,
to teach that same class as the instructor.
So it was me and a bunch of 100 or so adults.
I think I was definitely the youngest one in the room so much so,
that I was so determined not to look like the youngest person in the room,
that I wore.
Not only a suit, but also suspenders.
I have not worn suspenders since 1999.
But I wore suspenders because I remember thinking my childhood physician always
wore suspenders, and he looked old, so I should therefore wear suspenders.
And I don't know if it worked.
But anyhow, I really got a taste for teaching.
And on the scale of being a courses lecturer,
I'd been tutoring classmates in some form for many years off and on.
But this really kind of took the opportunity to the next level.
And so after that, at least here in the US, in higher education, a lot of doors
tend to be closed to you as an instructor,
unless you have a higher advanced degree,
like a master's degree in something or a PhD, as in my case, in computer science.
So I pursued that so as to keep those doors open to me.
CARTER ZENKE: And maybe similar to what you were doing as an undergrad,
thinking you don't have to know everything to teach somebody something.
You can know what you know.
And people will be grateful to know what if you can teach it to them.
So take what you know.
Try to teach it to help somebody out.
See what you can teach them.
DAVID J. MALAN: Yeah, I think just practicing.
And I think, frankly, a wonderful side effect of teaching
is ideally just being able to communicate effectively.
So even if you go off into the business world and you need to give a pitch,
or you're trying to convince someone to invest in your company,
or you're just trying to convince colleagues
to come on board with some idea you have,
it's all about public speaking at the end of the day.
So just getting rid of those nerves, I think,
is a wonderful feature of going that route.
CARTER ZENKE: Most definitely.
And just scrolling through here to see if we can find other questions for us.
DAVID J. MALAN: Do you look up syntax when working on a project?
CARTER ZENKE: Oh, absolutely.
All the time.
I look up a lot of R syntax to teach this course.
But I think that is a habit you can reduce with time.
As you learn a new language, you can look those things up.
Maybe intentionally try to learn them, so the next time
you encounter that same question of what was that syntax, just
try to remember it.
And if you can't, go look it up.
But I think if you just go through the process of trying it, and trying
it, and trying it, you'll eventually--
it comes to you eventually.
DAVID J. MALAN: Yeah, because suffice it to say,
the syntax aspects of programming languages
is generally not the intellectually interesting part.
If you don't know the syntax, you're just slowing yourself down.
And so there's this intrinsic motivation,
I think, to just get good at the syntax because you'll save yourself time.
And programming is no fun if you're literally tabbing back and forth, back
and forth, looking every darn thing up.
But yeah, I do this all the time.
And honestly, I have found ChatGPT, for instance,
to be especially helpful because frankly, it's hard to Google syntax
because you're typing in weird characters.
And sometimes they come up with results on Stack Overflow or the like.
But really, it's hard to express the question sometimes.
And there's certain languages.
Bash comes to mind.
Perl comes to mind, a little bit of Ruby that are just so arcane in their syntax.
I don't remember it.
And even code, I've written-- literally the other day,
I had a copy of a line of bash code, some kind of regular expression,
plus some other stuff and asked ChatGPT, what does this line of code do?
Because I don't even remember myself.
So those kinds of things, I think, are especially--
it's especially useful to be able to ask some smart human
or barring that computer.
CARTER ZENKE: Yeah.
And speaking of ways of getting help online by googling or through some AI,
a question here is, if it was a conscious decision
to limit the amount of text you can put into a chat bot like CS50.ai?
DAVID J. MALAN: Yeah, short answer, yes.
It's partly cost, honestly.
So the APIs, or Application Programming Interfaces that we, ourselves, use,
which borrow features from OpenAI, and Microsoft Azure, and similar such tools,
they cost money.
And we're fortunate to be supported by OpenAI, and Microsoft, and others
who make it possible for CS50x students and teachers around the world
to use these services for free.
But there is a computational cost, right?
There are servers somewhere running.
There is electricity somewhere being used.
There's internet bandwidth somewhere being used.
And all of that adds up.
And so we do try to minimize our utilization thereof,
so that we can maximize just how many students and teachers can use it
per day, for instance.
And the reality is there's probably diminishing
returns of being able to paste a bigger, and a bigger, and bigger, and bigger
chunk of text certainly relevant sometimes for code.
But honestly, if you think about how you would interact
with a human like on Stack Overflow, are you
really going to post pages, and pages, and pages of code?
No human is going to bother giving you the time of day
if you overwhelm them with information.
Now, ChatGPT might be a lot friendlier when it comes to that.
But presumably, the quality of results might
be better if you help focus the AI on your actual problem
and not just paste a big blob of text.
CARTER ZENKE: Yeah, I agree.
And speaking not just of the quantity of text, but let's say,
the number of messages you might send over
the course of an hour, what do you think is maybe
best for students who are beginners versus those
who are more advanced as they talk to these AI tools?
DAVID J. MALAN: Yeah, it's a good question
because this is something we've limited to.
As you might know, there's a heart system, like HP, like Zelda
or other games whereby you can only ask so many questions per unit of time.
And then the hearts regenerate, and you can ask more questions.
That, too, is partly for cost, but it's also for pedagogical reasons
whereby when we looked at this past summer at the distribution of questions,
most people were asking a, let's call it a healthy number of questions.
And I don't know what that number is, but it feels reasonable.
But then there was this long tail where there
were hundreds of questions being asked.
And we made this judgment call that if we think about the real world
and like a real world class, a student might go up
to ask a teacher a few questions.
And admittedly, that might not be enough.
So in an ideal world, a student would ask a teacher even more questions.
But if you're occupying the teacher for 200-plus questions,
odds are you're not really synthesizing or reflecting on the answers that are
being given.
And at some point, you should go back to your desk and think about the problem.
And I'm specifically thinking of one of my high school teachers
who used to send me back to my desk when I'm asking too many questions.
So I think the upside of AI in software is
that we can now empower humans to ask more questions than social conventions
or real world time constraints allow.
But I don't think that should be to the detriment of actually helping a learning
student find the sweet spot between asking, answering,
and thinking about the same.
CARTER ZENKE: I agree.
Other ones here.
DAVID J. MALAN: Well, along those lines, let's push a little harder.
As Isaac asks here, is there a limit to how much
is appropriate to use the duck AI independent of our own hearts?
CARTER ZENKE: Yeah, that's interesting.
I think it really depends on the context such
that I have a hard time giving a concrete answer of saying
you should ask no more than 10 questions per hour, for instance.
I think for myself, I can kind of get a good conversation
going with a tool like ChatGPT.
And I find that I do want to ask more questions than sometimes I perhaps
should, so maybe having a little bit of self-restraint is helpful sometimes.
Say, maybe I could figure this out on my own.
I don't have to just ask a question, ask a question, ask a question.
DAVID J. MALAN: Yeah, I feel like there's probably
some self-policing there because you want to solve the problem.
You don't want to just have an endless conversation.
And presumably, you enjoy the programming part, not
the asking questions part.
So I feel like there should be some intrinsic pressure on tabbing away
from the AI at some point.
CARTER ZENKE: I think there is a natural inclination, at least for me,
where I don't want to bother a human with 20 questions all at once.
But I can do that with an AI.
That's kind of a benefit to using a tool that is not a human.
But at the same time, there is maybe a limit to myself.
I can self-police.
DAVID J. MALAN: It occurs to me.
I should caution that once you move on from CS50's full-time team,
you become sort of like the ghost version of the Jedi in Star Wars.
So we might still call on you once in a while via Slack
or text message with questions, as Brian, and Colton, and Tommy,
and others know all too well.
So I hope that's OK.
CARTER ZENKE: Absolutely.
DAVID J. MALAN: But we will turn to the duck
when we don't want to bother Carter, for sure.
So there was an interesting question here.
And the chat asked about why Python is less
used in back end development than JavaScript.
That may or may not be true.
I don't know the statistics, but that sounds like a reasonable conjecture.
But whether or not it's factually true, why might that be?
CARTER ZENKE: Yeah.
I have to say I don't know exactly why.
I could give a hypothesis.
I might say we use a lot of JavaScript for front end development for making
things interactive on a web page.
I wonder if for folks who are designing web pages if it just made sense.
They already knew Javascript.
Just take that language, and do it on the back end as well.
Do you have other ideas?
DAVID J. MALAN: I think that's a big one because then
if you think about it strategically from a company's perspective,
your team only needs to know the one language.
And there's just an economy of scale there.
It's easier to onboard, recruit people, probably.
Pedagogically, though-- I'll take the CS50 perspective.
I just think Python is easier and more accessible for web
development, at least, in the sense that we want to do it.
I actually love JavaScript.
And of the languages out there, I kind of actually
prefer programming, only because there's just some intellectually interesting
stuff there.
If you're using a so-called single-threaded model,
but you therefore need to write asynchronous code,
you either need to use things like callback functions or promises.
Or there's a slightly newer syntax like async, await.
But you have to understand the sophistication of what's
going on inside of the computer, whereas Python just kind of does
what you intend.
And there's a value to that.
But JavaScript is just kind of interesting.
But when we thought about whether or not,
for instance, we should introduce even more JavaScript server side into CS50,
I just don't think we can do it justice in the time we have.
And honestly, it escalates too quickly.
I mean, so many of the students who've taken CS50, CS50x literally started
programming, what, three months, six months before in Scratch.
And that's just-- at some point, it's too much and too many ideas.
And I'd much rather students get their footing
with a more procedurally-oriented language like Python,
even though it has functional aspects than context switch too much.
CARTER ZENKE: Yeah.
And it's partially why we have courses like Brian's webcourse
that dives even more deeply into Python as a backend language, but also
JavaScript too.
DAVID J. MALAN: Yeah, indeed.
I think we have time for a few more questions here.
Let's see.
Feel free to pluck anything off what you see as well.
CARTER ZENKE: One-- let's see.
Oh.
Maybe related to the changing of the field and all these new things
happening, what keeps your interest in the field
after you've been doing it for as long as you have?
DAVID J. MALAN: Oh.
That's a good question.
Honestly, it continues to evolve.
Certainly, CS50 and CS50x in turn itself are continually evolving.
I think we focus much more on the human aspect of things, right?
It's not just the teaching and the execution of the courses' curriculum.
It's the communities.
We, just a few weeks back, spent a week in Indonesia in Jakarta
working with almost 300 teachers who will now
go back to their own classrooms, be it at middle school or high school levels,
and teach computer science to their own students.
And so there's that social aspect to it.
We've done a lot of that within the US and elsewhere in the world.
And so for me, it really has been that community aspect.
And if I think we were just doing more of the same for all of these years,
then it wouldn't be nearly as fun.
CARTER ZENKE: Yeah, I agree.
I think it's the social aspect that keeps me going for this kind of--
DAVID J. MALAN: Yeah.
And even technologically, I mean, being a geek, the course has evolved.
Even though fundamentally, if you peel back the packaging of it
and the implementation details of the languages and the problem sets
and so forth, the syllabus, the backbone is still really the same,
but the libraries are changing and the techniques that you can use.
And therefore, teaching things have been getting easier for students and teachers
alike, thanks to just advancements in coding platforms and frameworks.
So that keeps the geek in me interested too.
CARTER ZENKE: Yeah, absolutely.
DAVID J. MALAN: Do you have a favorite language?
CARTER ZENKE: Hmm, favorite language.
I've really liked learning R and teaching it recently.
If I had to have a go-to language, I would
say that's probably still Python just because it's so high level, very easy
to use.
I do like C for its ability to get a little more low level.
I feel like you can just kind of learn the entire language.
You can't often do with other languages.
So I guess, I would appreciate each one for its own merits if I had to say.
DAVID J. MALAN: OK And when you--
for those unfamiliar, Carter did his graduate education in Education School.
And for those, particularly those who asked earlier about teaching itself,
what does one learn in Education School that you don't in school, school?
CARTER ZENKE: Sure.
So it takes a more reflective approach to your own educational experiences
and thinking through what works and what doesn't.
And to that end, there are lot of directions you can go in.
One that I really like thinking about is just human development and how do people
learn things.
And once we know that, we can know a lot more
about how to deliver an effective lesson or create an effective experience.
I think one thing that I took away that I
think is maybe useful for those who are just beginning
is thinking maybe less of teaching as I told somebody something
and they learned it and more about trying to create, I don't know,
conditions and structures to help support learning in a long-term way,
so checking for understanding, asking questions, getting students
to give you feedback on your own teaching
is really valuable as you're going off and doing things like education.
DAVID J. MALAN: And one other question that's come up in the chat a few times
is about a different sort of engineering, prompt engineering.
What is that?
And is this something students now need to learn?
CARTER ZENKE: Yeah, so prompt engineering
refers to writing a prompt to some AI, like ChatGPT, like the duck,
for instance, that helps it behave in the way you want it to behave.
And so we actually did some prompt engineering ourselves
to create the CS50 doc to have it be built on top of a model like GPT-4,
but then say, for instance, you should behave like a duck would, like a teacher
would.
And so I think it's a good skill if you want
to be able to use AI appropriately thinking
of what prompts you can use to get the AI to do
what you want to do successfully.
DAVID J. MALAN: Yeah.
I think our friend, Rongxin, just the other day, put it in a way
that I really liked, which is that prompt engineering,
it's not really engineering.
I mean, it really is using English or whatever human language
to just, with higher probability, get the AI
to do what it is you want it to do.
But in that sense, it's really just about asking good questions
or giving good instructions.
And ironically, that's arguably what computer science
is all about, or at least, the algorithms in computer science
is all about.
And so it's not really a skill one should be putting on LinkedIn.
It's not really something that one should be taking courses in.
Frankly, I do think AI, as it advances in the coming months and years,
is only going to get more tolerant of us humans being bad at prompt engineering.
And it's just going to tolerate free form English.
And we see this already in CS50.
I mean, you would be surprised to see just how
terse some of the questions that are asked of the--
case in point, someone copy and pastes a bunch of text.
And then the question is, any thoughts?
CARTER ZENKE: Any thoughts.
DAVID J. MALAN: But this is a real question.
And amazingly, the duck can handle sometimes questions like that and infer
from context what it is the student is probably asking about.
That is not a good example of prompt engineering.
But I do think this is sort of a short-lived term of art
that I'd be surprised if we're still living with it before long.
CARTER ZENKE: I agree.
And maybe one to close us out on this same theme,
do you get tired of hearing of AI all the time?
DAVID J. MALAN: That's a good question.
No.
I got more tired of hearing about blockchain and Bitcoin for a while.
I got more tired of hearing about cloud computing
as though it was suddenly invented when really it
was just a very clever branding and abstraction on top of outsourcing,
and servers, and renting things, and so forth.
But AI does feel a little different, at least, to me.
Like, this has happened quicker and sooner
than I would have expected, having something like ChatGPT in the wild.
It is better in its first, well, version 3.5 and now 4.0
than I would have expected.
And it's been impactful, really, overnight.
I'm reminded of other flashes in the pan, so to speak,
like Google Glass, which the whole world was talking about.
And then it completely went away.
But it didn't really move the needle or do anything fundamentally
game changing, at least, in the time.
But AI in this form and large language models in particular
have kind of done that already so much so,
that CS50, within the span of months from November 2022
to the late spring of 2023, we steered the ship that
is CS50 in the direction of AI and the CS50 duck.
And that's pretty unprecedented for us curricularly,
I mean, even a change from PHP to Python,
which is a different kind of change.
But we talked about that for years before finally deciding, OK, now
the time is right.
But we pivoted fast.
And to me, that just reinforces what is already my instinct that yes, there's
something different here.
So I'm not tired of hearing about it, but I am
very excited to see where it's going.
I feel like we might actually live like the Jetsons in our own lifetime.
DAVID J. MALAN: Yeah.
Check back in a year.
CARTER ZENKE: Indeed.
DAVID J. MALAN: Well, Carter, thank you so much, not only for today, but also
for the past several years in CS50.
So glad you'll remain in CS50's family online
through CS50's SQL class, this new R class, which everyone
should register for if of interest.
But thank you so much from us all.
CARTER ZENKE: Thank you.
And thank you to the team.
And thank you to all of you who've supported me in this role
and helped me contribute something, I hope, to your own education.
DAVID J. MALAN: Should we end it on a fun note?
CARTER ZENKE: Yeah, sure.
DAVID J. MALAN: Why is the CS50 profile pic a cat?
CARTER ZENKE: This?
In my three years here, I haven't figured out.
DAVID J. MALAN: Well, I can answer that.
So back in, like, 15-plus years ago when we signed up for YouTube and other
accounts, we needed a profile picture, and I certainly wasn't going to use
my face.
And so happy cat was a very popular meme at the time, who sadly doesn't really
get talked about much anymore.
And he's even a little hard to google, even though knowyourmeme.net or whatnot
has a bio on him.
He's just a very happy, adorable cat.
And so we used his face for some time.
And now that we've done it for so long, it feels like, well, that is the mascot.
And it's only because of rubber duck debugging
that the AI took on the persona of a duck.
But otherwise, a cat is probably the de facto mascot,
even though the duck seems to be eclipsing it now.
CARTER ZENKE: Cats are great.
DAVID J. MALAN: Yeah.
It was close.
The duck was almost a cow, I will say, because we
know-- you might recall that in CS50's Python class and now CS50,
we introduce cowsay, a sort of older school program that with ASCII art
lets a cow say something out of its mouth virtually.
And I thought that would be kind of a cute version
because the Android and iOS emoji for a cow is actually super cute too,
the big face one.
So that would have worked well.
And in fact, ironically, the duck emoji isn't quite apt
because it tends to be depicted as a mallard.
I wish they would change that to a rubber duck.
CARTER ZENKE: You could petition the consortium.
DAVID J. MALAN: We could.
We do know someone within the Unicode group that we could ask,
but I don't know if that's going to happen anytime soon,
but thus was born the CS50 cat, and thus was born Carter's years with us.
I'm so happy again to have had you with us.
CARTER ZENKE: Yeah, me as well.
DAVID J. MALAN: All right.
Well, this was CS50.
If you're new to the community, go to cs50.edx.org.
To register for the R class in particular,
add a /R to the end of that URL.
This then was CS50.