DAVID MALAN: Why, hello, world.
And hello to Vladimir, who's kindly holding our cameras today.
My name is David Malan.
I teach CS50, which is taught, traditionally, in Sanders Theatre,
in a building called Memorial Hall, on Harvard's campus, here in Cambridge,
Massachusetts .
Wonderfully, today, our friends who run Memorial Hall
have led us into the attic, so we can explore
the upper boundaries of the building and even step out onto the roof.
So we thought we'd give you a little bit of a tour along the way.
Come on in.
And watch your head, as we go into one of the inner attics of the building
here.
Memorial Hall was built in the 1870s, so quite a bit of time ago.
And what you'll see in here is not only a lot
of the original brickwork, but also woodwork and then, more modernly,
a lot of the HVAC or air conditioning and heat
that now keeps folks toasty and cool in Sanders Theatre
and in the other spaces downstairs.
If you've ever watched the movie National Treasure with Nicolas Cage,
it feels a little bit like that right now.
So you'll notice here an angled roof.
We're roughly over Sanders Theatre, itself, which is downstairs.
If we take a look at--
over the edge of the railing here, you'll
see some of the top roofing of Sanders Theatre, itself, which you probably
haven't had occasion to look up at.
But here we are in the bowels of this building, almost 150-plus years later.
Besides Sanders Theatre, inside of this same building, Memorial Hall,
is a much larger space, if you can believe it,
known nowadays as Annenberg Hall.
Years ago, it was called Alumni Hall.
And it was used, for some time, for examinations
and for other large gatherings.
But most recently, as of the late 1990s, it actually
became home to the first-year dining hall,
where freshmen eat breakfast, lunch, and dinner.
In fact, I was class of 1999.
And my class had the distinction of being the very first class
to eat in the modernized version of Annenberg Hall with our meals.
It was in the spring of 1996, that that part of the building opened.
Come on down this way.
Now, in here, you'll see quite a bit of mechanical work.
And if Vlad points the camera up, you'll see the sheer height
of this part of the building.
Much of what's in here is not only the original bricks and the original wood,
but also, as you can see, a lot of noise and a lot of metal
that keeps the building cooled and heated nowadays.
Back in the day, though, there was actually a very large clock tower
in the tower of the building.
And this is before my time.
But supposedly, at one point, the clapper that hits the side of a bell
disappeared at one point.
And it was suspected that students from Yale
University, our rivals in New Haven, Connecticut,
might have absconded with it.
It was never actually found.
But to this day, it's suspected, apparently,
that it was in retaliation for Harvard students, back in the day,
having stolen Handsome Dan or Yale's mascot at the time.
Let's go up further.
Now, this is the stairwell that's going to feel even more like National
Treasure, particularly that part of the movie where the stairs all
fall apart, frankly.
So we're going to hold onto the railing here and watch our heads.
But we're going to go up even higher and see if we can't get up onto the roof.
Notice the very large archway here that I'm going to duck under.
You'll notice, along the right hand wall here,
some metal supports that are keeping everything tucked in place,
as well as some more recent, more modern lighting.
But then, to my left, is all of the HVAC, all of the heating,
all of the cooling that they crammed in here years ago,
when the building was modernized somewhat.
The building, itself, was actually built as a memorial
to those who died in the Civil War in the United States.
And you can actually see in what's called
the "transept" in the building a proper memorial
whereby there are names of past soldiers and Harvard students, and faculty,
and staff who were in the Civil War.
Let's go ahead and step outside now, if we can.
And here we have Cambridge, Massachusetts' and our old friend,
CS50'S own Carter Zenke.
CARTER ZENKE: Hey.
DAVID MALAN: Many thanks to the team of Memorial Hall, who
kindly let us pop up here today.
And what you'll see now is a whole bunch of buildings,
some Harvard, some Cambridge.
This tall building over there is William James Hall, which
is essentially the psychology building.
Back in my day, in fact, I would volunteer
for a bunch of psychology experiments, for better or for worse.
They would pay you 20 US dollars to participate for an hour or two.
And you would eventually, if at all, find out
what it had just participated in.
Over there, to the right, is more of Cambridge and, off to the distance,
Boston, some of the taller buildings there.
Boston's the larger city that Cambridge is adjacent to.
Carter, pardon us, as we finished the tour up here.
And to the right is even more of Harvard.
So down here is the edge of Harvard Yard, where a lot of dormitories are,
where the students live, where the large library called
Widener Library is, Memorial Church is.
And you'll see now just one of the towers here
that was recently renovated of Memorial Hall
and then Memorial Church is slightly there, off into the distance.
But if we pan all the way up to the very top of Memorial Hall, which
we won't climb up to today since we have frightening memories of having done
this in the past, but up there, you can see,
actually, a tower that was built on top of all
of the brickwork of the building, including some Ghostbuster-style
gargoyles on the left and right.
And that tower actually burned down in the 1950s.
And, in fact, on CS50's YouTube channel, we actually
digitized some years ago a footage of the tower burning.
No one, thankfully, was hurt, but a passerby at the time,
who had a very old school camcorder at the time,
actually captured some of the footage.
But it was high enough up on the building's height
that the local fire departments-- their hoses couldn't really reach that high.
And so, unfortunately, the tower itself, the wooden tower, burned.
But a lot of the brickwork, of course, here remains.
And, in fact, it was also coincidentally in my day as an undergrad
that they raised money to rebuild that tower.
So I believe it was in 1998 or so, late 1990s,
that it was reconstructed to look like it would have some 150 years ago.
Well, that, then, is Memorial Hall.
And this, then, is CS50 and, of course, CS50's own Carter Zenke.
CARTER ZENKE: Fancy seeing you here.
DAVID MALAN: Indeed.
What a pleasure to bump into you up here.
Lad's going to very carefully sit down on the edge of the building here,
and we thought we'd, for fun today, with our friend Max,
hold some of CS50's office hours, if only
to make it feel all the more like we are all here
at Harvard, albeit an unusual spot.
This is not the kind of place that people can very easily sneak up to.
So, again, we're grateful to our friends in the building
for letting us pop up here.
CARTER ZENKE: It's getting a little cold.
Should we ask them--
DAVID MALAN: Yes, why don't we dive right in and then head back up.
CARTER ZENKE: All right, one of my questions
for you is how long has CS50 been taught in Sanders Theater?
DAVID MALAN: CS50 has been taught in Sanders Theater since 2008.
It was the second year I taught it.
In 2007, the very first year I taught it,
it was taught in a building called Sever Hall, which is back over that way.
We quickly outgrew the space, and so we graduated, if you will,
to Sanders Theater.
CARTER ZENKE: And do you know how many students
can actually sit in Sanders Theater?
DAVID MALAN: It's about 1,000 seats, which we've never actually needed
ourselves, but for some of the very largest events on campus,
particularly some of the a cappella or musical performances,
large gatherings of students, faculty, and staff, it can certainly be filled.
CARTER ZENKE: Yeah, I know.
When I first saw it, I was very surprised at how small
it feels, but also how many students can actually sit in there at one time.
So it's pretty cool that way.
DAVID MALAN: Indeed.
It's quite the experience.
If you ever have a chance to travel to Cambridge,
whether to visit Harvard or Boston or CS50 specifically,
you should definitely try to come by.
CARTER ZENKE: Yeah.
A few more questions-- we're going to actually ask them in the YouTube chat
here.
I'll be able to ask them to David.
I'll take some myself.
And we'll go back and forth as you talk through your questions live here.
One question for you, though, David, is what
is your favorite programming language?
DAVID MALAN: What is my favorite programming language?
You know, it's funny you should ask because I got asked this just two
days ago down at Yale University.
And a student of ours there asked--
and my answer then, as it would be now, is
that I don't know if I really have a favorite nowadays.
I, and I think we, see CS50 use Python for almost everything
nowadays, if only to standardize among language
that's easy to onboard people to.
I went through a phase years ago of really loving JavaScript--
not actually the features, we tend to use
in CS50 which are very GUI or DOM-centric,
but rather the asynchronous stuff, and the single threading stuff,
sort of slightly fancier features that you
would get to if you studied more on your own or in a higher level class.
CARTER ZENKE: Yeah, I think I'm right there with you.
I'm kind of ambivalent right now.
But I often reach for things like Python just because it's
so easy to get started with.
DAVID MALAN: Yeah, agreed.
And I actually do, intellectually, really like C.
It's not a language I would really ever reach
for unless I had a very specific, specialized application,
but I actually really enjoy because of the control and the low-level details
that it offers you.
CARTER ZENKE: Yeah.
I know we start with C in CS50, and it was
kind of hard to design problem sets around that language.
But do you have a favorite that is part of CS50
for that first part of the course in C?
DAVID MALAN: I've always really loved the Recover problem
set, which is one in which we give students a forensic image of sorts
of photographs that have been deleted or corrupted on a memory card,
and then they have to write C code to recover them.
That was actually inspired by real life.
A former CS50 team member and friend of mine, Dan Armendariz, he was an avid
and is an avid photographer.
And he actually had one of his memory cards--
I think it corrupted once.
So he still had it physically, but for some reason,
his computer couldn't read it.
And so at the time, I think I poked around online, read up on some C code
that we could actually use to recover the photos,
and we adapted it a little bit ourselves, ran it,
and I think we got, like, 98% of his photos.
And so that was actually the inspiration for what is now problem set 4,
inspired by a real-world problem.
And we've actually had actual CS50 alumni email us a couple of years
after taking the class to say that they, too, had actually
use their C code to recover photos that got deleted or corrupted somehow.
CARTER ZENKE: Yeah, that's my favorite week, I think, in the class
because you can do so much with the memory part of C. Getting
to change the volume of files I found really fascinating because I was so
into electronic music when I was younger,
so seeing how I could actually modify it using C was really cool for me.
DAVID MALAN: Yeah, I will admit, though, I kind of love Mario too,
even though the problem itself I don't think
is nearly as fun as something like Recover.
It's sort of become representative of CS50
because it's been there it's among the problems that
have been there since the very first year that I taught CS50, so in 2007.
And even though it's just ASCII art, it's
sort of a nice way to bring the gaming world, for instance,
and programming to life.
CARTER ZENKE: Yeah, and when students start programming in CS50 nowadays,
they're using Visual Studio Code to program.
Do you have a favorite IDE you've used for the past time?
DAVID MALAN: No, not really.
In fact, don't tell anyone, but I rarely use VS Code myself.
I actually tend to go old school in a terminal window,
just open up Vim or Vi, which is an older command line
but, nonetheless, semigraphical program.
That said, I am starting to get on board with VS Code
because there's just so many useful features.
There's plug-ins.
There's the AI functionality nowadays.
So if I had to pick an IDE, it would absolutely be VS Code.
But I still tend, super quickly, to just open Vim in a terminal.
CARTER ZENKE: It feels very hacker like to just--
DAVID MALAN: Thank you.
Thank you.
CARTER ZENKE: And aren't there so many like keyboard shortcuts for that like?
What does it take to learn how to do Vi or Vim?
DAVID MALAN: You know, it's not actually that easy,
though it is easier than another program that I
daresay computer science-type people like even more,
at least in some circles, called emacs.
But Vim was actually-- or Vi at the time--
was the program that we used in CS50 when I took it in 1996.
And I definitely learned a whole bunch of keystrokes,
but honestly, I don't think I've learned new ones since, really, then.
And some friends of mine and former TFs are surely better at Vim
than even I am.
For some reason, I sort of got fixated in time there.
But you can actually use the key binding, so-to-speak,
as they're called of Vim, of emacs, in VS Code by poking around your settings
or using plug-ins to mimic them.
So you can kind of get the best of both worlds.
But also fun fact-- don't tell anyone this either--
when a student in office hours once years ago was actually themselves
more comfortably using emacs, I took over their keyboard
to help with something and, I swear to god,
I couldn't figure out how to quit out of emacs.
And I had to ask them can you quit out of emacs
because it's some magical incantation that I'm
sure is not actually very hard.
But it was a little embarrassing.
CARTER ZENKE: Only if you've memorized it would you know.
DAVID MALAN: Yeah, exactly.
CARTER ZENKE: OK, switching gears a little bit,
there's a lot going on with AI these days.
And so have we made any updates to the AI course,
or are we planning any updates to the AI course?
DAVID MALAN: Yeah, in fact, so Brian Yu's course on AI
was updated just a couple of months ago, in fact,
to update the very last of the lectures to focus-- that focus is already
on languages, but to focus all the more now on aspects of large language models
and, in turn, the GPT-like technologies that are being discussed in all corners
nowadays.
So even if you have finished Brian's CS50 AI class already, you're welcome,
just for fun, to go back into it at cs50.edx.org/ai,
and even just pull up the very last new lecture if you want to just absorb some
of the new material, and even the project from that one week as well.
CARTER ZENKE: Yeah, other courses people should consider
taking as they finish CS50x, then?
DAVID MALAN: In general, not just necessarily AI-centric,
but a common go-to--
and thanks for taking this up is CS50's introduction
to Databases with SQL, which I think you actually teach.
CARTER ZENKE: Yeah, got to film that one in this past spring, which
is now online on EdX as of October 1.
DAVID MALAN: And what do students get out of that class
that they wouldn't get out of the week or so of CS50 in which we look at SQL?
CARTER ZENKE: Yeah, so we take a week for SQL in CS50,
but if you want to learn much more about that,
not just how to query and do basic database design,
but how to actually design full-fledged databases,
how to answer more questions with data, I really
encourage you to take the SQL class.
DAVID MALAN: Yeah, and that's true of some of CS50's other follow-on classes
too, like Brian's Web Class, a.k.a.
CS50W, goes more into depth as to what you can do with web programming.
It really does pick up where CS50's week 9 or so leaves off.
Our new class in cybersecurity also draws inspiration
from the cybersecurity CS50x lecture that some of you
might have seen, although I should note that CS50x 2024, which will go online
in January of 2024, will actually have a short but new lecture
on artificial intelligence, which is actually inspired by,
and much of the material was prepared by,
CS50's own Brian, who kindly let us incorporate it into CS50x now itself.
CARTER ZENKE: Yeah, and when you're planning
lectures for either CS50 or another course,
how do you plan to make them engaging in the way that you do?
What goes into that?
DAVID MALAN: Oh, thank you.
I mean, I think I probably tried to imagine what kind of class,
what kind of lecture, what kind of homework assignment I
myself would enjoy.
I'm sort of very worried, always, about the audience being bored.
And so I think anything I, anything we can
do to bring the subject to life, whatever that subject might
be, I do think is compelling.
Otherwise, what's the point of us all being there
if you can just read it in a book or read about it online.
If there's going to be something to be said experientially
about either attending in person or watching live or on-demand afterward,
together, it would be nice to motivate that time spent.
And so there's a sense of theatricality as we've described it in recent years
that I think permeates CS50.
And as for the homework assignments, at the end of the day,
if you really dissect them, you can really take the fun out
of them quickly by just looking at the essence of what each problem set is.
For instance, Mario is really just about loops, like a for loop,
maybe a while loop.
Even the Recover problem set is similarly
about loops and a couple of conditionals.
Now that said, that really does not sound all that inspiring.
And so I think the trick is or the key is
to come up with some packaging, some real-world motivation that actually
makes the tools and the ingredients sort of subservient
to the actual interesting goal, which is like recovering photographs or creating
a pyramid that Mario might jump over.
CARTER ZENKE: I, think to add on, I feel genuinely excited about some
of the material we teach.
I really love it and feel excited about that.
So it's about trying to learn how to channel that to other people
can actually get the same excitement from it too.
DAVID MALAN: Yeah, that's the hope.
Yeah, no, I think some of the SQL classes projects
are exactly in that same spirit.
So if folks do like the world of databases and SQL,
you should dive into those kinds of P sets next.
CARTER ZENKE: Would you want to take a scroll through the questions
and see if there are any you want to take a peek at?
DAVID MALAN: All right, so let's see here.
We have-- oh, you know what my gloves are relatively old
and they've lost that ability to scroll, so I'm going to take them off.
They no longer conduct.
CARTER ZENKE: My hands are getting pretty cold out here--
DAVID MALAN: Scrolling-- all right, my turn, then, I guess.
All right, so let's see.
So one student here asks, can the courses
be multilanguages, which I'm going to interpret
as meaning you could implement the homeworks in different languages?
CARTER ZENKE: Yeah, so CS50 problems that
is, maybe doing Mario, which is currently in C, perhaps in Python?
Actually, you actually will do that in week-- what is it, 6 of the course,
when you actually learn how to use Python.
You'll go back and implement some of the prior problems
you've done in C now in Python.
I think it is kind of a fun exercise to try one of CS50's problems
in a new language, whether it is one we actually teach
or something brand new for you, just kind
of get a feel for how that language works
and how you could learn the ins and outs of it.
DAVID MALAN: Nice, and for those of you who are just joining,
we are literally here on top of Memorial Hall, which
is the building in which Sanders Theater, is
where CS50 itself is hosted.
So by all means, if you do have questions here in the live chat,
please do feel free to ask them of us before it gets a little too
cold out here.
All right, so I think at the bottom here, in the live chat--
this actually hasn't moved recently, so I'm wondering if maybe--
well, let's see, we're going to go off script here.
So Carter, you've been with CS50 for a couple of years now,
but your background is as much in or more in education
than it is in computer science.
Do you want to speak to the path that actually got you here?
CARTER ZENKE: Yeah, so I think the path that
brought me here is a little bit long, but primarily, I
found a lot of excitement in computer science as a kid,
like learning how to make things with computers--
like how to make music, how to make software, how to make video games, too.
And I always found that my own computer science classes
didn't really touch on how do I get the same excitement I felt
at computer science from this field.
They didn't teach so much programming as much
as they did just kind of typing at a keyboard-- like how do you type well,
how do you use Microsoft Word, and so on.
So I found myself wanting to help share that excitement that I
felt in computer science with others--
kind of what drew me to learning how to teach, how to engage a classroom,
so that's what brought me here.
DAVID MALAN: Well, we're glad it did.
CARTER ZENKE: Thank you.
DAVID MALAN: We have had a few other questions come in during,
and one of those questions was how do you avoid
taking long breaks while programming.
CARTER ZENKE: How do you avoid taking long breaks?
I actually think--
I'm going to push back a little bit on that
and say long breaks can sometimes be good for you.
DAVID MALAN: I think it depends because some people are--
it depends if you mean minutes, hours, or weeks.
CARTER ZENKE: That's true.
So I find it helpful to take a step back from a problem overnight
or even over the course of a single day because I
find I can come back and think about it in a new light.
But I also find it helpful to keep working on the same problem
consistently, so not taking like a week-long break, but like a day break,
and trying to come back to it so I have that same mindset that I had before.
DAVID MALAN: OK, nice.
And someone's asking about how easy C is versus Python.
How would you qualify them in terms of their accessibility?
CARTER ZENKE: I would say it depends on what
you want to do with the language is.
What I like about C is that it's a very kind of small language.
You can really learn all of C, I think, if you wanted to.
Python, on the other hand, is a really big language.
There are so many libraries and packages that it could take you a while
to see all Python can offer you.
So maybe a controversial statement, but I would say maybe, sometimes,
C is often better beginning language to learn because it's so small.
DAVID MALAN: OK, fair, but definitely challenging with aspects of it,
like pointers and memory more generally.
CARTER ZENKE: For sure, yeah.
DAVID MALAN: And Carter, what do you recommend someone
do after completing CS50x?
CARTER ZENKE: I would say--
so when you complete CS50x, you complete your final project.
And I'd be curious to ask you whether you could take
that final project to the next level.
Would you want to add AI to it?
Would you want to do more databases?
Would you want to think about more secure context?
You could use that to help guide you in your choice of classes
afterwards, perhaps.
DAVID MALAN: OK, nice.
And another student here asks is learning JavaScript worth
it nowadays, particularly for a noob--
no, sorry, I combined two questions-- specifically for jobs, not for a noob.
The noob was from a different question.
CARTER ZENKE: Specifically for jobs--
I would certainly say so.
So I think people are still using JavaScript.
It's certainly popular with web development.
So if you're working for a place that works on lots of websites
and trying to build things for the web, it's a good language to learn overall,
I would say.
DAVID MALAN: OK, nice, and do we have courses on web design
with HTML, CSS, and Figma?
CARTER ZENKE: For sure on HTML and CSS.
I don't quite know on Figma.
I don't think Brian touches on that in the web class.
DAVID MALAN: No, we don't.
So this is actually a popular third-party application
now for wireframing things, doing mockups and such.
And fun fact, if you're familiar with Figma--
no alliteration intended there--
at Figma now is CS50's own Yuhki Yamashita,
who was one of our former head teaching fellows years ago,
and now is a very high placed executive within Figma
and has always had a talent for artistry and multimedia and design work.
And, in fact, he designed the very first CS50 sweatshirt
and apparel, which was a riff on the Harvard Department of Harvard Athletics
sweatshirt.
And he made one for CS50 itself and so many other things as well.
CARTER ZENKE: How do you think we arrived at this very
basic, simplistic aesthetic in CS50?
DAVID MALAN: In terms of the logo?
CARTER ZENKE: Yeah, like the look of just CS50--
like that's it.
DAVID MALAN: Yeah, it's a good question.
So CS50's text mark is designed in a font
called Gotham, which is a commercially-available font that you
too can use.
It was inspired in part by being at an impasse.
We couldn't really decide, years ago, if and what we wanted as more of a logo.
And we toyed with lots of different things.
And you see some of the past candidates online.
We considered embracing the cat all the more.
Before there was a duck, there was really a cat that was everywhere.
And nothing really quite felt timeless other than just saying CS50 itself.
We considered stacking the letters, so it
would be CS on top, 50 at the bottom.
But we also wanted it to be readable and pronounceable
in sort of a single breath.
And so that's why it always reads left to right, even though that does
make it a little longer.
And as you can actually see here, it's actually just quite nice.
The font and a medium face, as we typically use it,
really just lends itself to simplicity and elegance
and, hopefully, timelessness.
So for now, I think it works pretty well overall.
CARTER ZENKE: I think it works pretty well, too.
DAVID MALAN: And I want to circle back to AI,
since a student commented that our speaker the other day,
Dr. Matt Welsh, who was a former Harvard faculty member, now
with his own startup, formerly of Google, and some other venues as well,
was fairly negative on the prospects for programming and programmers
because of the advent of AI.
And I wonder if you, and perhaps I in turn, have thoughts in response
to that Tech Talk.
CARTER ZENKE: Yeah, I mean, I think, in general,
it's only good to be able to learn more about computer science,
more about programming so you can actually
learn more about how AI actually works.
And I think, right now, to be able to guide
an AI to do what you want it to do, you need to know about programming.
You need to know what you want it to do in a very concrete, kind of deep sense.
So I think it still worth learning all you can about computer science,
about programming so you can actually guide an AI to do
what you want it to do in the end.
DAVID MALAN: Yeah, I too.
I mean, Matt's title was deliberately meant to be provocative.
And, in fact, I actually found it to be one
of the most interesting talks we ourselves have hosted,
and with friends of ours from industry in some time.
And I think that OneAI is absolutely going to change things.
And I think it has already.
I mean, CS50's own Colton Ogden, who teaches the games class,
for the past couple of years has attested to just how useful he's found
GitHub copilot to be, and easily a productivity boost for him of 20%-30%.
And I don't think you can ignore that.
That said, he's still a full-time software developer,
and I do daresay he's going to be that for some time.
But it's making him more productive.
And I think the most resonant thing that a buddy
of mine at GitHub actually mentioned to me a few months back, when
I was asking him and a lot of my friends in industry what they think too,
because this is becoming a frequently asked question, is he
encouraged me to think about just how many GitHub repositories out there
there are, including some of our own, that have
open issues-- that is, feature requests, bug reports, and the like.
And even now, as much as we want to, there are absolutely GitHub issues
that we will never get around, in CS50 alone, to closing, just
for lack of time, lack of sufficient time in the day,
people on the team to actually get through all of our priorities
as well as those other tasks.
So he encouraged me to consider just how much more productive
we can actually be as humans, as programmers,
as a society if we can now amplify the impact of our work
using something like AI.
So I think, in the near term, probably medium term,
I really don't think folks have to worry.
I would absolutely not change your academic or your professional path
in terms of technology because I do think,
as we even say in CS50, so much of what you're learning
is not about C or Python or JavaScript, eventually which are probably
going to drift into less popularity, but it's really
about how to think and solve problems.
And that's not going anywhere.
And I think that, and I hope that, frankly, programming eventually
will become a little more like project management, whereby you
or I, even if we are programmers and could write the code ourselves,
it's going to be way more efficient and productive to just tell the computer
what to do, but to have the instincts for knowing what's possible
and what it can do and how and whether it can speed up certain operations.
So I do think, long story short, that being a software engineer,
much like it has evolved in recent years to being a combination of operations
and development, a.k.a.
DevOps, will similarly evolve even more into a product management role, whereby
using natural language or some domain-specific language--
we are really just telling the computers what to build for us.
And maybe we're tweaking, maybe we're finetuning,
but we're going to be a lot more productive as a result.
CARTER ZENKE: I think what our own students
who, on campus, just transition from C to Python, how
relieved they felt, how much more they could do-- so maybe this next step
is just allowing you to do even more with less time of your own.
DAVID MALAN: Oh, great, and we've seen this before.
Those of us who learned HTML around the time this building was being repaired
were writing HTML and CSS, like 1.0, from scratch.
And then came tools like Dreamweaver, which
was a very popular downloadable program for Macs/PCs
that generate HTML for you.
And now we have Squarespace and Wix and other websites
that generate HTML for you, and static site builders
that generate HTML for you.
And web developers haven't gone anywhere.
Their jobs have changed.
I daresay they've gotten more fun, more productive.
So I think we've seen evidence that as technology advances,
it doesn't necessarily just eliminate roles.
It changes them.
And I think we've seen, at least in tech, it tends to be for the better.
CARTER ZENKE: Yeah, kind of inspiring to me,
I think, to think of how many shoulders you're standing on
as you do what you're doing today, like the people who first programmed
in assembly, then in C, then in Python, or other languages.
It's kind of like you're standing on top of a lot of work
from other people in the past too.
DAVID MALAN: Yeah, agreed.
Well, I think we have time for just a couple more questions
so we don't keep our friends from Memorial Hall
out here on the roof with us for too long either.
One question that came in as we were chatting,
Carter, is it OK to use the CS50 duck debugger if the student faces an error.
CARTER ZENKE: Absolutely.
That's kind of why it's there for you.
And actually, this is an adaptation of things like ChatGPT
that can sometimes be a little too helpful.
I think it's worthwhile for you, as a learner,
to sit down and think through the area yourself.
So the duck can help guide you through that error,
but also help you do the thinking to yourself
as opposed to telling you what exactly what's happening, if that makes sense.
DAVID MALAN: Sure, yeah.
And this is a question about CS50P which, granted, I teach, but perhaps
you could offer another perspective.
A student notes that he's feeling very frustrated with the CS50P course--
feels like a total loser.
How can I overcome that feeling and not give up
after the first week, which I don't think
is that uncommon, really, with programming in general.
CARTER ZENKE: Yeah, I was going to say, I
don't think that's quite an uncommon sentiment.
And so maybe the first step is just realizing
you're in the same boat as a lot of other people.
And often, reaching out for help from those people,
from our own AI tools, et cetera, can help you get unstuck and keep going.
So I'd encourage you to find community and realize
you're not alone in that feeling.
DAVID MALAN: Yeah, honestly, if it were coming easy,
and if it were just a matter of solving problem
after problem, what would be the point of the exercise anyway.
So it should be challenging, I think, for someone to get something out of it.
And we've all felt the same way, ever more so
when you're learning some new language, some new way of thinking.
So I really wouldn't think poorly of yourself.
It just takes time and practice.
How about-- let's see, time for one more question here.
All right, Carter, a challenge--
is it possible to explain pointers in two to three minutes?
CARTER ZENKE: Well, perhaps.
We'll say, a computer has to store characters or places in memory,
like some place inside the computer.
And we call that place an address.
A pointer is like a variable, which I know you're familiar with,
that just kind of points to an address.
DAVID MALAN: That was-- and you have time left over.
In fact, what would you like to share with folks in your remaining 75
seconds?
CARTER ZENKE: I mean, just thank you all so much for coming.
It's great to see you up on top of Sanders Theater.
DAVID MALAN: Indeed.
Thanks so much to our friends at Memorial Hall
who kindly let us come up here, to Vlad and to Max, who are holding the camera.
And in fact, we thought we'd end just as we
began with a beautiful panoramic shot here of Harvard
University and, indeed, Cambridge.
So with all that said, this was CS50, and this is Vlad on camera.