DAVID MALAN: So we'll go ahead and
dive into the Q&A portion of today.
So here at Harvard, office hours are?
And here are the results
which you should now
see on your screen particularly
down toward the bottom for all
of the courses.
So what office hours are at
Harvard are an opportunity
for students to drop by
professors offices for an hour
and just talk about the class,
talk about how life is going,
any questions they might have
about academics or the real world.
So even though we're all in
just a virtual office today
the goal is just to
interact and chat a bit
about topics that are on your minds.
Let Brian and I just ask
that if you have questions
that are specific to a
problem set or a project,
like code, let's answer those on
Slack, or on Discord, or on Ed,
or some other tool
because I don't think we
could do a very good job debugging
people's code live on video here today.
So let's focus more on concepts.
Without further ado
why don't we go ahead
and start the questions and answers.
I see Galaxym20 your hand is up first.
You want to go ahead and unmute yourself
and ask a question of the group?
Galaxym20?
Still muted, Galaxym20.
No?
All right, let's move around.
We'll come back to you if that's OK.
Tony Su, is it?
Can we start with you?
AUDIENCE: Yes.
Yes, this is Tony.
I'm Tony Su.
I'm right out from Taipei.
I actually have a couple
of questions I want to ask.
But right now the most pressing
question I'm curious about
is really mostly about security.
I've really only
programmed for one year.
I sometimes stream my
coding sessions online.
And some of my developer
friends in coffee shops
tell me, don't stream your code online
as everyone sees your secret key,
everyone sees everything.
And I'm just wondering, what
ware the typical conventions
to basic security management
for during development,
or during post development
for managing apps?
Or-- what should I even do to try to
get into network security or cyber
security, or with Python or like if I
have some analytic skills with Python
and so on and so forth.
What should I study
and stuff, like that?
DAVID MALAN: Sure.
Why don't I answer the first part
and then turn to the latter part
over to Brian?
So if you are live streaming your
code and with it your secret keys
on the internet, don't.
That is bad.
You answered the questions
yourself already.
If you've taken CS50 or CS50 Web
you might recall that anytime
we dealt with secrets,
like API keys, we would
encourage you to put them into what
are called environment variables which
put them into the computer's memory but
in a place where it's not in your code,
which means people on the internet
can't see it if you're live streaming,
and you don't accidentally
therefore push it to GitHub
or save it in your code repository
if you're using version control.
So generally speaking anything
you put in your code really
shouldn't be that sensitive.
You should not have passwords,
not secret keys or the like.
Use some other mechanism for those.
As for Python itself and security
practices and learning more, Brian,
you want to take it from there?
BRIAN: Yeah.
I mean, certainly if you're interested
in learning more about security
the domain I'd suggest looking into
the world of cryptography, which
is this very vast discipline
within computer science
all about trying to
communicate things securely
which is becoming very, very necessary
in the context of the internet
where you want to be able to send
messages to someone across the internet
but you want to do so securely
so that nobody in the middle
is going to be able to access whatever
information you're trying to send them.
And there are a whole bunch of
now algorithms and libraries
that exist in languages like Python
that might be worth exploring there.
And this kind of
cryptography is the basis
for how communication
over the internet works.
It's the basis for how
cryptocurrencies like Bitcoin work,
if you're familiar with
or ever heard of those.
So a lot of applications now have
used cryptographic techniques.
And we talk about these a little bit
in CS50 and the web programming class,
but definitely a lot
more there to explore.
DAVID MALAN: Wonderful.
Well, thank you for that question.
Can we go next to, let's say, Moritz?
If I'm saying it correctly?
AUDIENCE: Yes, hello.
My question is a two parter.
So I started out programming with
CS50X, and well, our university semester
is kind of on hold now because of
the whole coronavirus situation.
And I've long considered
the CS50x in particular
to be the master class when it
comes to teaching programming
in an online kind of environment.
And I'm sure that a lot of work has
gone into getting it up to that level.
And I'd like you to share with
us some of the insights that you
had going through developing this
online course and all of the material,
and what perhaps other
educators could take away
from it to improve their own materials.
DAVID MALAN: Well thank
you, first of all.
I can say that it's been very
incremental over the years what
we've done with CS50.
And I think what you see now
is really the aggregate effect
of a lot of efforts by
myself, by people like Brian,
by other members of our
team over the past 13 years
now since I took over the class.
And I think the simplest
answer from the get go
is that we set out some time ago
really just to solve a problem.
So back in 2004 or so I was
teaching a different class
at Harvard's extension school,
which is our continuing education
program for adults primarily,
both on campus and off.
And at the time Harvard was
using video technology called
Real Video, if any of you remember it.
It was one of the earliest
streaming video formats.
It wasn't that great but it was still
cutting edge nonetheless at the time.
But it didn't allow you to
save the videos locally.
It didn't allow you to
take the videos with you.
And so it was around 2004 that I think
the first iPod came out, give or take,
and podcasting became a term.
I didn't really know what it was
but it seems interesting to us
that we could allow our students
in that class to maybe download
these videos, or even MP3s--
audio recordings of them--
and then take them with them on
the train, to work, to the gym,
on the treadmill.
And so we really
started doing everything
on the internet just for
our own students' sake.
But [INAUDIBLE] that a whole
lot of people around the world
start tuning in which was
a pleasant surprise to us.
And then in the years since
then did we very consciously
start making sure that
any materials we create
are digitally accessible as well.
And this is PDFs, and this is
handouts, and this is software,
and everything else.
And we also became more sensitized
to internationalization.
So very early on we would ask questions
about American sports or even US
currency, which of course if you're
living abroad like many of you
are you might not have those
same experiences or backgrounds.
And so I think in recent
years too we've tried
to be more culturally sensitive and
geographically sensitive to students
disparate backgrounds
and not assume anything.
And so now we still have
a problem set you might
recall on cash, a greedy algorithm.
But we define for everyone what a
nickel is, what a dime is, and so forth.
And then lastly I think
I would propose that it's
thanks to members of
our team, one of whom
is-- a few of them actually are on
this video call with us today, Ian
and Arturo and Ramon.
We have this amazing team
focusing on videography.
And we now stream in
widescreen 4K video.
And I mean, that's very deliberate too.
I think all of us take
pride in what we're doing.
And the goal is not to
have, ironically today,
small little video screens
of people normally,
but media that really draw the students
in and make education as engaging,
if not entertaining, as possible.
I spent 18 plus years in high school
and prior not really loving school.
I sort of worked hard just
because I thought I should.
But I don't think school needs
to be this obligatory thing.
I think it can be a passion.
And so we've tried to create,
we hope, an environment
that draws folks like yourself in.
Thank you for asking.
Can we go to our next question
here, how about from--
looking for some blue hands--
Debashis?
If I'm pronouncing that right,
against the green screen?
Still muted.
AUDIENCE: My voice is clear?
DAVID MALAN: Yes.
AUDIENCE: OK.
I was asking, I follow your
videos from your group.
Hello?
DAVID MALAN: Yes.
We can hear you.
AUDIENCE: I follow your
videos from your group.
I wanted to know, is there any
more because [INAUDIBLE] Hello?
DAVID MALAN: Yeah.
Can you say that question again?
AUDIENCE: Can you suggest more videos
which we can get from the internet?
I am from India and I follow your
YouTube videos and CS50 lectures.
Hello?
DAVID MALAN: Yes.
We can hear you.
AUDIENCE: OK.
I follow your CS50 lectures.
And can you suggest
some more [INAUDIBLE]
on the internet which you follow?
[INAUDIBLE] comments.
DAVID MALAN: Yeah.
Let me let Brian answer this too.
There aren't that many courses
I've taken online to be honest.
I tend to be so focused
on what it is we're doing.
With some bias, let me paste
into the chat window, which
you should be able to see--
this of course is all of CS50's
courses which go beyond CS50 itself.
Brian now teaches a
course on web programming,
soon on artificial intelligence.
But another one that I do like-- let
me go ahead and Google it real quickly
and then paste this as well--
is of course from Princeton
University on algorithms.
It's freely available on Coursera.
And if you're looking to
learn a little more CS Theory,
see the algorithms class that I just
pasted into the chat window as well.
Brian I think is a
better student than I am
Do you have courses you'd recommend too?
BRIAN: Other courses I'd recommend--
really depends a lot on your interests.
So if algorithms are something
that are interesting to you,
definitely that Coursera
class on algorithms is great.
A former Harvard
professor, Jelani Nelson,
taught an advanced algorithms classes at
Harvard too and most of those lectures
are also available on
YouTube if algorithm design
is something you're also interested in.
And then depending on
your other interests,
MIT has a great class on deep learning
if machine learning is something
that you're interested.
They have a great course on deep
learning that's available on YouTube
as well.
And then I personally am--
I studied linguistics in college.
I'm very interested in
natural language processing.
Stanford has a great online class
about natural language processing too.
So lots of universities make a lot
of their courses available online.
So just a little bit of
looking around and you
can probably find the
ones that I just mentioned
and also a number of others too.
DAVID MALAN: Indeed.
Please feel free to paste URLs
of courses into the chat window
for everyone as well.
Let's move on.
And if you do have your hand
up but your video is not on,
if you do have a camera
do try to turn it
on because it'll make it easier for us
to see you, literally, and interact.
How about next question from
Suhaus, if I'm saying it right?
AUDIENCE: Hello.
So I'm doing CS50X 2020.
And I have a friend who
did the 2019 course,
and based on what I taught
them, I personally--
I don't know if this is true but I felt
as if the 2019 one was actually tougher
than the 2020 one.
How do you decide the
pieces of each year?
You change some of them every year.
So how do you decide which ones
to keep and which ones to replace?
DAVID MALAN: Yeah, that's
a really good question.
And Brian and I especially
spent a lot of time
last summer, summer of 2019, thinking
about what problem sets to change,
which ones to keep.
There are several that we really like.
So for instance Mario, which of course
is the first one, Cash and Credit we've
used for many years now, CS50
Finance on the end of the course
we've used for many years now.
But there's always some
number of problem sets
that I, and Brian, and the
teaching fellows, don't quite love,
either because it's not quite
as engaging as we would hope
or it's not quite focused as
we would like on some subject.
So Brian wonderfully came up with a
long list of new problems set ideas.
I, after 13--
12 years at the time--
was running low on new ideas.
And he wonderfully infused us
with a number of new problem sets.
And in fact, do you, Brian,
want to speak to what
guided your decision making there?
BRIAN: Yeah, sure.
So a big part of the
guiding ideas that we
have when we were coming up
with new problems for CS50x 2020
was thinking about the
different backgrounds
that people come to this class with.
That most of the people
that are taking the class,
they haven't had computer science
background before but they maybe
come with some other background.
Maybe they know a little
bit about government
or maybe you know a little bit
by a biology from other classes
they might have taken.
So with a lot of the problem
sets that we've created,
especially in the past year, we've
tried to integrate computer science
with other fields and
try and show how you
can take the skills you learn
in CS50 and really apply them
to other domains outside
of computer science.
And so if you've done
the CS50X 2020 problems,
you might be familiar with
the election problems.
There are three different
election problems
that are all based
around the idea of trying
to simulate an election and various
different election algorithms.
And these algorithms come at varying
different degrees of complexity,
which lends itself really nicely to our
less comfortable and more comfortable
problems where we like to offer a
bit of a more comfortable challenge
for students who would like to
try a more challenging problem,
or who complete one of the problems
and are looking for another problem
to try to complete as well.
So we created a problem set
to integrate with government.
We created a problem set to
integrate with English and literature
in the context of the readability
analysis in problem set two.
And then we had another new problem that
was all about biology and DNA analysis
in terms of the types of things
that happen in criminal justice
investigations.
And so problem set six
now includes that as well.
And with all those problems
our goal was to try and create
something interesting
to really demonstrate
the power you get with just a couple
of weeks of learning about programming
and learning about computer science.
DAVID MALAN: And Suhaus, just so we
get a sense, what country are you from?
AUDIENCE: I'm from India.
DAVID MALAN: India?
OK.
AUDIENCE: Yeah.
DAVID MALAN: Wonderful.
Thank you for the question.
AUDIENCE: I have a question
that's an extension.
Could I ask that if that's fine?
DAVID MALAN: Sure, sure.
Go ahead.
AUDIENCE: I've noticed this, especially
if you look at week four, the filter
ones, and even week
three where you're only
required to fill out certain functions.
But like there are other pieces where
[INAUDIBLE] function from scratch.
So on what basis do you decide that?
DAVID MALAN: That depends on the
complexity of the problem sets.
And one of the goals
of problem set four,
to which you're referring
this most recent year, where
if you're unfamiliar we had students
implement in addition to JPEG
recovery, which some
of you might recall,
we also had students implement
a number of Instagram
like filters which is just one
of Brian's new problem sets.
One of the goals for that
problem set is not just
file I/O, but is also how to read code,
read code that someone else wrote.
So one of the things
we tend to do is start
to put place holders in
code so that students first
have to understand everything we
wrote and then write the actual logic
themselves.
We often provide distribution code
too if we think that either one,
it would just be way too
hard for new programmers
to come up with everything on
their own, or if it would just
be too boring or mundane
to do some of the details
like getting command line
arguments or things like this.
We want each problem set to focus
and only focus on something new.
Thank you.
Carolina, can we go to you next?
And do you want to tell us what
country you're in right now?
AUDIENCE: I'm actually
in Miami, Florida.
But I'm from Colombia.
DAVID MALAN: OK.
AUDIENCE: I decided to join CS50 because
I'm actually in the beauty industry
and I came up with an idea
to do an app for the industry
as a professional in it.
And it has turned out
to be crazy but I wanted
to learn more because if I
had decide to hire people
to do this for me, which I have tried
in the past, I haven't had any luck.
It's not good to hire
people if you don't really
know what you're talking about.
I have to speak the same
language as the programmers.
So this has been interesting for me.
I actually went to visit the
business school in October last year.
And I noticed there were so many
people in different industries
but not one person in
the beauty industry.
So that gave me a little
more enthusiasm to do this.
And I just finished my
first problem, which I've
been procrastinating for a long time.
But now with this [INAUDIBLE] going
on I've been trying to upload it,
but it shows that I'm not
registered although I even
paid for the certification.
That's one thing that I need to--
I've been writing to a
few people and no one
has been able to help me to
submit my first [INAUDIBLE]..
But one question that I had, previously
I had an account on GitHub for the app
that I was working for, [INAUDIBLE].
And the developer kind
of abandoned that.
And I just [INAUDIBLE].
So I created a new
account for this course.
And I'm not able to use that either.
And how safe is that?
Because I noticed that he
had the whole coding exposed.
And I keep getting
notifications from them
about possible issues, or
security issues, with the coding.
So I don't know for this
program for Harvard,
if it's going to be the same way.
DAVID MALAN: Tough to say.
AUDIENCE: --to upload--
DAVID MALAN: [INAUDIBLE] this.
I've just pasted into the chat window
an email address for our staff.
If you can write us your
question about the account,
that would be best answered there.
Hard to say about the GitHub
scenario you described,
but if you don't mind
elaborating over an email that
would be best for a question like that.
And then I should mention too, we
do have this class that I also just
pasted into the chat window,
an introduction to technology
for managers, which is based on the
classes I teach at Harvard's Business
School.
That might also be of interest.
It focuses less on programming
and more on concepts,
especially for folks who want to
apply CS in real world businesses.
AUDIENCE: Yes.
I was thinking of the
algorithm class too
because I feel like that's so
important, especially for what
I'm trying to do because it has
to do with the categories in how
I want to divide everyone
in the beauty industry.
I think that would
probably work as well.
DAVID MALAN: Yeah, absolutely.
AUDIENCE: What do you think?
DAVID MALAN: That one it's probably
better to do after a programming class,
just because Kevin and the professors
there assume more of a background.
All right, well next can we go to--
Cem, or Kem is it?
Salta?
I'm sorry if I'm not
pronouncing that right.
AUDIENCE: It's actually Jim.
It's Turkish so that's why.
DAVID MALAN: OK.
Do you want to tell us where
you're from, if not MIT?
AUDIENCE: Sure.
Well, I don't go to MIT
but I'm from Turkey.
I had an exchange year last year.
I lived in Massachusetts.
So that's how I get it.
And right now I'm in
the IB program, which
is the International Baccalaureate.
I actually want to go to Harvard.
I'm in high school.
So I'm taking the course, CS50,
and right now for my school
I'm also writing a paper.
And I have this question.
It's, to what extent are
Massive Online Open Courses,
MOOCs, more effective than those courses
completed face to face within Harvard?
DAVID MALAN: That's a good question.
I'm not sure if we should
do your homework for you.
But--
AUDIENCE: Yeah.
Well, eventually I will have to
ask you a couple of more questions
so I'll probably email it to you.
But yeah.
DAVID MALAN: Sure.
I think I have a few
thoughts in general on this.
So I do think there's value to taking
courses in person when you can,
not because I think it's that
useful to be in the same classroom,
with the same classmates, with the same
professor two or three times a week
for 12 weeks or 16 weeks.
I think there is some value certainly
to that interpersonal aspect.
So for instance in CS50, among
the goals of our own lecturers
is not only to present material
conceptually so that hopefully students
are understanding the
week's topics, but also we
hope to just get students
excited and maybe
a little bit inspired
about that material
so that they rather
care about what it is
they're going to be doing
in the homework assignments.
I'd like to think that we or I can
do a good job, or a decent job,
maybe once a week for 12 weeks at
generating excitement and generating
enthusiasm.
I don't think I can do
that three times a week
and have everyone leaving with
the same sense of excitement
for the material the next day.
So at that point I think
that it becomes very
reasonable to do a lot more of the
learning on one's own asynchronously,
via a MOOC or via online
education more generally.
But what I think is important
and helpful for a lot of people
is just to have some community.
Maybe ideally its classmates,
or friends, or teachers,
who can look over your shoulder
at what it is you're programming
and give you very specific advice.
I don't think it's
unreasonable though to have
a roomful of people on
Zoom, or Slack, or Discord,
or Stack Exchange, or Reddit,
or any of those communities
that CS50 itself uses.
I think what's just important
is that you have a community.
And I do think that in some
ways CS50 is a better experience
to take online because all of you
can pause, rewind, fast forward,
search a transcript, hyperlink
to some other website,
and take a moment to
apply those lessons.
Whereas the Harvard
students in Cambridge
are a captive audience for two hours.
And if I go too fast
they're sort of out of luck.
They can't ask me to rewind.
I mean, they can ask a question but
they can't necessarily rewind in time
or take some time to absorb it.
So I think there's a balance.
And what we try to do
in CS50 at least is,
we present the conceptual
material just as effectively,
we hope, in person as on video.
But then we have these communities.
In Cambridge we call
them sections on campus.
Online you might just call them
cohorts, or friends online.
I think just having that human
support structure is important.
And I don't think it's
effective if a course is really
just videos and multiple
choice questions,
or PowerPoint slides that
you're flipping through.
I've taken some very bad online courses.
But the hope is to find
the best of both worlds.
So I hope that helps
you do your homework.
Feel free to reach out to us.
AUDIENCE: That's a great answer.
Thank you very much.
And also, there's an
aspect to it because I
have some friends in the business
school and doing that, during the class
they always participate.
It's like a lecture where the professor
is teaching whatever the material is,
but they're participating,
or the situation
is they're talking a lot like
students too, inside a classroom.
So I think there's variables to it.
And there's also people's
attention, like are they
able to look at a screen for two hours?
Or are they better at looking
at the professor on the board?
I mean, there are many variables to it.
DAVID MALAN: Yeah, absolutely.
AUDIENCE: Thank you
very much for answering.
DAVID MALAN: No.
And it's funny timing.
I mean, hundreds of
thousands of people are now
getting used to online education
for unfortunate reasons,
but I do think this will start
to change minds, too, at just
how well or not well certain aspects
of online education can work.
Can we go next to Omarion,
if I'm pronouncing it right?
AUDIENCE: Hey, thanks.
Yeah, my name's actually Omar.
That's just my--
DAVID MALAN: [INAUDIBLE].
And where are you from?
AUDIENCE: I'm from Toronto.
DAVID MALAN: OK.
[INAUDIBLE]
AUDIENCE: So I just
wanted to start by saying
thank you so much for your program.
I've actually done CS50, and
I did the Princeton course
that you mentioned as well.
I work as a recruiter
at a tech company here
and I feel like having done
these courses has really changed
the relationship I have with my job.
So thank you so much.
My question is kind of around
computer science education in general.
So in today's world I feel like it's--
I personally think given
the way we're moving,
and especially now
looking at what's happened
to coronavirus, people working online,
everything is all internet focused.
I think it's really important for
people to understand the basics of maybe
computer science, or at
least how these things are
built because a lot of what people do
deals with these kinds of concepts.
My girlfriend for example
is a lawyer and she actually
works for tech companies
and things like that.
And I think for her to understand these
kinds of things would be very useful.
At the same time though,
I feel like there
is such an abstraction of some of these
things at a certain level, where people
don't necessarily have to touch code.
They can use a GUI or something
to do various operations.
And so you've almost got this separation
of a group of experts that do the stuff
and then a bunch of people that don't
necessarily understand the stuff
but just use the stuff.
And I'm trying to understand
maybe your opinion on--
and maybe there's no
right answer to this.
But do you think that we're
moving more towards a world where
you do have these experts in
machine learning, and AI, and NLP,
and stuff like that, that are building
the stuff, that understand maybe
the minutia of what actually
builds the systems that we use,
and then catering to a group of the
larger group that doesn't necessarily
understand?
Or are we moving now
more towards a world
where people are really
interested in the stuff
and I think they want to get
more involved in it and--
I don't know.
It's maybe not even just
a question, just something
I wanted to put out there.
DAVID MALAN: Yeah, it's
a really good question.
And let me turn to Brian
too in a moment, who
focuses on security for instance in
the web programming class especially.
So I'm reminded of Tony's question
which kicked us off about secret keys
and live streaming.
I think what's valuable about certain
courses in technology and computer
science is that they
give you certain building
blocks from which you
can reason deductively
as to how other systems work.
I don't think it's necessary
for everyone in the world
to take an artificial intelligence
class, or machine learning,
or even a programming class per se.
But just any class that's really
about computational thinking and logic
because I think once you
start to clean up your thought
processes and you start to
think a little more methodically
in terms of ifs, and elses,
and so forth, then you
can take some information as
input and produce from that
some conclusion that you can
make better decisions based on.
And this is so true in
the worlds of security.
I mean, all of us right now have our
cameras on pointing at ourselves.
Who's to say when this
session ends in half an hour
so that those cameras
aren't still watching?
Who's to say our phones haven't
been sending everything we
say to Google or Apple for years now?
And those are risks.
But I think among the topics we try to
get students to think about in CS50,
and in the business class,
and in the web class,
is to recognize that yes
everything I just said is possible,
but then to sort of evaluate
the risk for themselves.
So I know for sure Apple could be
listening in on everything I say.
Are they likely doing so?
Probably not, but at least
make an informed decision
as opposed to naively buying the
latest and greatest technology
and then being surprised and caught off
guard when your privacy, for instance,
is compromised.
And Brian, do you want to address
how you think about this, especially
in the context of software?
BRIAN: Yeah, of course.
So I agree with a lot
of what David was just
saying about how a little
bit of computer science,
even if it's not about
programming, gives you the building
blocks to understand a lot
of the technology around us.
And I think that in part
the wide availability
of some of the courses
that we've talked about
has helped in order to
bring more exposure,
or bring to light, some
more of this knowledge
even to people that aren't
computer scientists.
But it is definitely not widespread.
I think if you look around
in the news there are so
many stories about lawmakers
who seem to be disconnected
in some way from technology and that
they might be creating policy or trying
to draft laws that might not be
consistent with a real understanding
of security and technology.
You see this a lot
with lawmakers that are
trying to make laws that are
about security, like trying to--
there's been a long ongoing tension
between the federal government
and Apple, for example, about whether
Apple should be creating backdoors
into all the iPhones that the federal
government's able to get into.
And there is this idea that
even if you create a backdoor
that the government can get into, that
this creates security vulnerabilities
elsewhere.
Having a real understanding of how it is
that this cryptographic process works,
how it is that information is
actually encrypted and then decrypted,
can give you a better understanding
for the implications of technology
when you might not recognize
those implications without having
some of those building blocks.
So I do think there's a
lot of value in having
an understanding of
those building blocks.
And I would hope that
the world is slowly
starting to become more educated about
these matters, even outside of just
the world of computer scientists.
AUDIENCE: I appreciate that.
Thank you.
DAVID MALAN: Brian said it well.
And if some of you might
have tuned in some months
ago to when Mark
Zuckerberg, for instance,
was testifying in the
United States to Congress--
I mean, not only was it
quite frightening what
Facebook had been doing
at the time but also
frightening how ill informed so many of
the politicians who were interviewing
Mark and just had no idea of how tools
like Facebook or online advertising
even work.
It's, I think, incredibly
important for folks
just to have this modicum of
understanding of technology
and of reason so that if they
are ultimately the decision
makers, whether it's in business, or
law, or politics, or any other domain,
that they're making better decisions.
And you see this unfortunately even
now with all of the health concerns
going around the world, people
not appreciating statistics,
and data, and models, that students
of any number of STEM fields
would derive an appreciation for.
So we make better decisions, I think,
when we understand fundamentals.
Thank you for your question.
Saket, ready?
Can we go to you?
Still muted.
Click unmute in the bottom left corner?
AUDIENCE: Hi.
DAVID MALAN: Yes, there we go.
AUDIENCE: [INAUDIBLE].
Can you hear me?
DAVID MALAN: Yes.
Yeah.
AUDIENCE: I'm Saket.
I'm located in India.
I graduated in 2018,
I did my bachelor's.
And in 2020 August I'm going
to pursue my master's degree.
So there has been a
two year break for me
in terms of the computer
science background.
I've been working [INAUDIBLE] industry.
So I want to brush up my
concepts so now before I
am going to my masters degree for CS.
I want to start--
what are the courses that I need
to start up and base up myself
for the [INAUDIBLE]?
DAVID MALAN: Good question.
Brian, do you want to take that?
BRIAN: Sorry, you were asking
about what courses you should take?
I didn't quite catch
the end of the question.
AUDIENCE: Yes.
There has been a one a half
year break for me with respect
to computer science
for my master's degree.
So I'm going to pursue
my master's in August.
So what do you suggest in terms of
the courses and the timeline of,
what do I study about?
BRIAN: Yeah.
So I mean, if it's been
a year and a half one
thing I might start by doing is
just brushing up on any material
that you did learn a
year and a half prior,
because likely those
will be the fundamentals
of the basis for your
future work in the program
that you're beginning in August.
And so I often find
that taking some time,
going back and reviewing prior notes,
some prior videos if you have them
from prior classes, is just
a helpful refresher in case
you're going to need that
material in the future.
And then beyond that I think it's
going to depend in large part
about what your master's program is
focused on, and what type of research
that you're going to be doing.
Computer science is
a fairly broad field.
And so research is happening
in the world of cryptography
as we've talked about,
but also happening
in the world of artificial
intelligence, it's
happening in the world
of networking, it's
happening in the world
of algorithm design.
So all sorts of these
very different domains
that might lend itself towards
different skills and different tools
that you might need in order
to be successful there.
So I would start by thinking about what
type of research and what type of work
you're going to be doing.
And that would help me, at least,
to inform the types of topics
that I would focus on
in the upcoming months.
DAVID MALAN: All right.
Thank you for that question.
Can we go next to Tommaso Padula?
AUDIENCE: [INAUDIBLE] question really
simple and [INAUDIBLE] to learn.
According to you, CS56,
it's better to learn
in a small period of time, three
or four months, achieving 70%,
80% of a problem set completed, or
taking a longer time and doing 100%?
Just that.
DAVID MALAN: It's a
really good question.
And where are you from, Tommaso?
AUDIENCE: I'm from Italy, [INAUDIBLE].
In science I'm studying
and I'm trying to frame it.
It is better to finish the first
[INAUDIBLE] so I believe 85.
[INAUDIBLE] to review,
to do 100%, and then go,
I'm going to finish, at the
least at the minimum we can say.
DAVID MALAN: Gotcha.
Well I hope you and your family, in
Italy especially, are doing OK lately.
AUDIENCE: Thank you.
DAVID MALAN: It's a hard question.
I think it really depends
on the student and what
you want to get out of the class.
We have many, many, many more
students who do parts of CS50 then
who do all of CS50.
And I think that's partly because
some people only have so much time.
But I think it's also
because some people only
want to get certain aspects out of it.
For instance, some students are
interested in the C programming.
Some students are interested in
the web programming later on.
I think that if you are looking to
take future courses in computer science
and programming, I think taking more
time and finishing the whole course
will probably better prepare you.
If you are interested--
AUDIENCE: This is a
slightly different question.
To finish the course is the main goal.
I will do that I hope.
But about if I take 85% in the
problem set one, it's better to--
DAVID MALAN: Oh, I see.
AUDIENCE: OK.
DAVID MALAN: I think the best
answer is, the best approach is
to get 100% in three or four months.
So we officially say that if you get
a 70% or higher on all of the problem
sets, that is quote unquote
satisfactory and you have successfully
completed the class.
I think it's better if you can push
yourself to do even better than that
even if it takes more time.
I think it's very, very
reasonable to take six months,
maybe a bit more to take the
class, maybe a full year.
But to take more than a year I think
you should consider what it is you
want to get out of the class.
And I wouldn't just try to get
100% and just do everything
just because you think you should.
I would decide based on where your
interest is starting to waiver.
AUDIENCE: Thank you.
BRIAN: The other thing I'll add is
that any time you get less than 100%
on any problem, we do our best
to try and provide feedback
to you, provided in an automated sense,
through some of our web based tools.
And so anytime you submit you should
get a little URL that appears in the IDE
where if you click on that link, you'll
be able to see feedback on which parts
of your program worked and which parts
might have some room for improvement.
And hopefully that
can be a good learning
and a lesson in terms of where
to place your focus if you
want to go back and iterate on the work
that you have done in order to then
potentially submit that problem again.
DAVID MALAN: Can we go
next to Omar [INAUDIBLE]??
AUDIENCE: So I'm 15 and I'm
taking the course at the moment.
And supposedly I make it into
Harvard, like when I graduate.
If I finish the course, does that count?
Do I have to retake it or does
it count as if I took it before?
DAVID MALAN: So neither, in fact.
At Harvard at least, if you have taken
a class like CS50X online successfully,
you don't get credit
per se but you don't
have to take it once you get to campus.
Instead Harvard has other introductory
courses, three in particular,
and you have to take
any two out of those.
So in your situation if
you were to attend Harvard,
you would take the two
other introductory courses.
One is on what's called systems
programming, which is lower level C
code and assembly code.
The other is on what's
called functional programming
and object oriented programming.
You would take those two
courses instead of CS50.
But you don't graduate earlier because
you've taken the course already,
for instance.
Good question.
Can we go next to the Slav?
AUDIENCE: Hi.
DAVID MALAN: If you'd like to
tell us where you're from to?
AUDIENCE: Well, I'm originally from
Russia but I live in Miami, Florida.
DAVID MALAN: OK.
Two from Miami so far.
AUDIENCE: Yeah.
So first of all, I want
to say thank you to Brian.
I take the CS [INAUDIBLE].
And my question is actually
related to the homework
I'm told that we had earlier.
[INAUDIBLE] I submitted two
projects so far and both got 100%.
But there is no feedback on 100%.
So I'm wondering if
it's really that good
or if there is some
feedback can be provided.
BRIAN: Yeah.
I'm glad you're enjoying the class.
The projects for the
web programming class
and several of the follow
on classes after CS50
are graded on a pass/fail basis.
So one of our staff reviews your
submission, looks at your video,
and then just evaluates
it on a pass/fail basis.
If you're looking for some more detailed
feedback and certainly other people
to take a look at your
code, there are a lot
of CS50 communities that have
grown now across a variety
of different social media platforms
that you can look to in order to get
some additional feedback on your code.
I know there's a pretty active
channel on the CS50 Discord, which
you can join in order to post
a little bit of your code
in order to get feedback from
other students, from other staff,
about the work that you've done.
So certainly that can be a
nice way for code review,
to get people to give
feedback on your work as well.
DAVID MALAN: Wonderful.
Can we go next to--
[INAUDIBLE] some hands here--
Johanna Sabi?
AUDIENCE: [INAUDIBLE].
Yes, it's correct.
Johanna [INAUDIBLE] as Johanna.
I'm from Egypt.
Kindly, I'm doing development
since five or six years.
I'm graduated from computer science.
I have a big problem through my
career, and even when I started CS50.
The problem is that I don't know at
which level should I dig and deepen
the information on that
trail that I study.
For example, when we
started [INAUDIBLE] CS50
I didn't know to which
[INAUDIBLE] I have
to open a tutorial [INAUDIBLE] tutorials
learning more and more about big O,
and then to solve some
problems upon this.
Or just I need to respect
this global discourse
and later on I can dig and
deepen the information.
I'm asking this question because in past
I have tested or went through these two
scenarios.
I went through that I need to
dig and deepen any information
and the result is that I have
finished courses or one months
or two months just in one year
because of much dig and deep.
On the other hand one, when I start
adjusting the parts of a course
I feel that I miss
many important subject.
This is my question and thanks a lot
for the tutorials that you've presented.
DAVID MALAN: Of course.
If I understand it correctly when
learning a topic like big O notation,
if you'd like to understand
it better or learn more,
for CS50 you can absolutely
go and read other resources,
you can google for other
references, take another class.
That is certainly OK.
When we discuss in the class academic
honesty what would not be appropriate
is if what you're googling is
literally the answer to a question
that we've asked within the
course, literally googling for code
that's the solution to some problem.
But absolutely you are welcome
and encouraged to consult
other references, Google, Stack
Overflow, classmates, anytime you
would like to learn some topic better.
We do not claim to be
teaching it in the best way.
AUDIENCE: I think to this question,
my original question is to which level
should I dig and deepen any information
of the course or any online course.
I mean, there are many
topics on the same course.
Should I dig and deepen
each topic of this course
so that it takes much time
for finishing just a code?
So this is a reasonable
question if you got this.
DAVID MALAN: Yeah.
It's a good question.
I think it really depends
on your interests.
If you want to go down those rabbit
holes, so to speak, and better
understand the material,
yes you should do that.
But I'm not sure I would do that if it's
going to take you four times as long
to complete the class.
Maybe twice as long is reasonable but I
think there's probably a balance there.
And in fact, the best way to
think about it might be this way.
Personally when I'm teaching a
class, especially for the first time,
I find myself doing what you're doing.
I might take the class
that I need to now teach,
or I might watch previous
videos or do previous homeworks,
but I try to approach
the class like I know
I'm going to be a teacher, or a
teaching assistant, or a teaching fellow
as we call them, because
I try to think if I'm
about to teach this material to someone
else what questions might they ask me?
And I do start to google and I do start
to learn more about some topics so
that I'm not caught off guard,
so that I'm not embarrassed
because I don't really know something.
So I think it's healthy
to try to google and read
other references when you want to
understand the why and not just the
what.
But use your rule of
thumb may be a saying.
I want to understand it well enough
so that I can explain it or teach it
to someone else.
And that's good enough for version one.
Can we go next to Hassan Roman?
Hassan?
AUDIENCE: Hey?
DAVID MALAN: Yes.
We can hear you.
Yes, we can hear you.
AUDIENCE: OK.
Now I'm taking CS50 Introduction
to Computer Programming.
After finishing it I intend to take
the course about [INAUDIBLE] Web
Programming.
And I want to know what's
next after the web.
DAVID MALAN: Quite fair.
You froze on my screen, but
Brian do you want to take that?
BRIAN: Yeah, sure.
So after that it really
depends on what it
is that you're interested in studying.
So CS50-- David posted a link
before but we can post it again,
in terms of all of the courses that CS50
offers that you can take after CS50.
So in addition to the web
programming class that I teach,
there's also a class on game
development if something
of interest to you, [INAUDIBLE]
and other CS50 stuff.
And then coming in just a couple
of days will be a brand new class
on artificial intelligence.
So if that's something
of interest to you,
diving into how machine
learning works, and how it is
that computers can become intelligent.
We have a class in
artificial intelligence
that will be coming soon as well.
So depending on your interests there are
CS50 classes that are available to you,
and then other classes that
are available online too.
A couple of people have
mentioned Coursera in the chat,
for MIT's OpenCourseWare that also
have a lot of great course offerings
there too.
DAVID MALAN: Wonderful.
Can we go next to Sarah, if you'd
like to tell us where you're from?
AUDIENCE: Hello.
I'm Sarah and I'm from Toronto.
So I am attending university
and cells and systems biology.
So in the third year towards the
end of my studies I discovered--
I took this bioinformatics course
and that introduced me to coding
and computer science in general.
And I kind of regretted even
going to cells and systems biology
when I discovered my passion
for computer science.
But it's kind of like, I
don't know what to choose.
So it's kind of, I want to
have both at the same time.
But I also thought of
finishing this degree
and even reapplying for another degree.
But financially to be honest, I
really cannot afford both degrees.
So I tried looking up
online and I read on how
Google and so many other
major companies have retracted
their requirement for a CS degree.
So right now I'm on my
last year of studies,
and I'm taking a grad level
bioinformatics course.
But the programming aspect
of it is not as challenging
that I was expecting it to be.
I also took some CS courses
that my university was offering.
So I already have some basic in
Python and other intro courses.
So the text that is mentioned on CS50X
is mostly on web development, games,
iOS, Android, et cetera.
So for someone like me that is in
the health care and biology industry,
I really want to know which other
courses I can take and develop
my knowledge based upon them.
So if there is any advice on that
I would really appreciate it.
DAVID MALAN: Yeah, absolutely.
I think that's a good problem
to have, that you're so
passionate about two different fields.
I would recognize that first.
I don't think you should worry as
much about pursuing a computer science
degree solely for the purpose of
getting a job in the tech industry.
There is certainly so
much demand right now
for technologists that simply having
a strong technical background I
do think will help open doors already.
In terms of types of
courses to take, I think
a course like CS50 that's an
introduction to procedural programming
is compelling.
Another course that's very popular
out there is this one here from MIT
called 6001, which you
might find of interest
as well which focuses on Python.
The algorithms class that I mentioned
earlier I think is a good way of--
and there's two parts to it.
Let me go ahead and paste
both URLs, one and two.
I think it's a good way,
especially for industry,
to get better and algorithms and
data structures more generally.
And then I would also recommend a
course on functional programming
specifically, which is a different type
of programming than we teach in CS50.
And I think that will help
round out your knowledge.
Brian, do you perhaps
have any recommendations
along those lines or others?
BRIAN: Yeah.
I would agree with all
of those recommendations.
In addition to that for
biology specifically,
and for bioinformatics in particular,
I think a course on data science
is going to be especially helpful.
A lot of what you'll do in data science
are going to be tools that are related
to computer science but will
specifically help with a lot of what
bioinformatics is all about, which is
in large part about looking at a lot
of data, whether it's--
AUDIENCE: A lot of genetics.
BRIAN: --evolutionary data or--
yeah, exactly, a lot of genetic data.
And to that extent I'd
also suggest maybe a course
on artificial intelligence too.
That will help you think
about a lot of the problems--
AUDIENCE: I'm actually looking forward
to the AI class that is coming up.
BRIAN: Oh, I'm glad.
You got it.
A lot of the problems--
AUDIENCE: I'm really happy about that.
Thank you.
BRIAN: I'm glad.
A lot of the problems in
bioinformatics, things
like when you're trying to do
evolutionary biology analysis,
trying to look at how evolution
has happened, that's often--
AUDIENCE: [INAUDIBLE]
BRIAN: --done using machine
learning techniques too.
Yeah, exactly.
So a lot of AI and machine
learning can be applied
to biology and bioinformatics now too.
AUDIENCE: Thank you very much.
I really appreciate it.
DAVID MALAN: And I
hope you'll forgive me.
We have a few minutes left.
And invariably we won't get to all
questions but love to take a few more.
Can we go to User next?
And do you want to tell us your
name and where you're from?
AUDIENCE: I think that's me.
I'm from Germany.
I'm from Augsburg, it's near Munich.
And I'm still a high school student.
Went to UCLA for summer and planning
on studying abroad in the US
for this summer, hopefully if it works
with all the coronavirus stuff going
on.
And I've also taken
one of your courses--
the first one, just CS50.
And I'm really looking forward to
the course on artificial intelligence
and also glimpsed inside it
at YouTube because you already
uploaded some videos on there.
So my question is regarding
this course, actually
is it ever possible in the
future to get credits for it,
like real college credits?
Or will it be?
DAVID MALAN: Brian, do you want to
answer that from the Extension School's
perspective?
BRIAN: Yeah.
So ultimately, that's going to be up
to the university as to whether to get
credit for something.
There are some universities that will
allow you to cross register in a class
through Harvard's Extension School.
So Harvard Extension School is
Harvard's Distance Learning Initiative.
And the students from other
universities can sometimes
enroll in a class like our AI
class through the Extension School
to get credit at your own university.
But you'll want to check with
your university about that
because every university has
slightly different rules about how
to make that work.
But even if you don't take it
for credit all of that material
will be made available online.
AUDIENCE: Great.
And will there be also a deep
learning course in the future?
BRIAN: No immediate plans.
In the tail part of the
artificial intelligence class
we spent a couple of
weeks on machine learning,
in particular looking
at deep neural networks,
looking at image recognition
and those sorts of topics that
are common in a deep learning class.
But certainly it's just a
couple of weeks out of our class
as opposed to other classes that
could spend a semester or a whole year
on deep learning.
So you should think of this
class as more of an introduction
to those topics, from
which you could therefore
most certainly go deeper and discover
more about the field as well.
AUDIENCE: All right.
Thanks.
DAVID MALAN: Wonderful.
Can we go next to Muhammad Yunus?
Mohammed-- yeah.
AUDIENCE: Hello.
DAVID MALAN: Hello.
AUDIENCE: OK.
I'm Yunus.
I'm Yunus from Egypt.
I want to ask one question.
What can you [INAUDIBLE] that
combines computer science and business
development to get a job in
Google, Facebook, Amazon?
[INAUDIBLE] That's my question.
DAVID MALAN: What was the
first part of the question?
About--
[INTERPOSING VOICES]
AUDIENCE: What career path?
What career path that combines computer
science and business development?
DAVID MALAN: Sure, and
business development.
So I think a common intersection
of those two worlds,
for instance, is what people would
call project management whereby
you have ideally some
technical background
to understand what it is
the engineers are doing
and enough of a vocabulary to
talk with them about features,
and goals, and motivation.
But you're also interested
on the business side
and interacting with
customers, and clients,
and translating their desires into
more specific technical requests
of the team.
That tends to be the place
that a lot of recent graduates,
for instance, start whether they take
a business degree or a computer science
degree.
If they know they don't want
to be programming all day
long but they want to straddle
both worlds project management
tends to be the place to start
at least in the tech world.
AUDIENCE: OK.
Will CS50 help me to get my goal, yes?
DAVID MALAN: To some extent, yes.
You will have more than
enough technical background
to have those kinds of
conversations with the engineers.
Let me go ahead and paste the
URL of the same business class
that I mentioned earlier.
This URL that I just pasted
into the chat window,
it's the OpenCourseWare version
of a class similar to what
I teach at Harvard's Business School.
And that class talks more about
security, cloud computing,
how the internet works, so topics that
we don't cover per se in CS50, at least
at that conceptual level, but
that's useful for a business
minded person to understand as well.
So I would say the two
classes, CS50X and CS50B,
for Business, might help
you with those interests.
AUDIENCE: OK.
Last question, do you recommend
any books or other courses
to cover this, project management or?
BRIAN: Yeah.
So if you're interested in a PM role,
otherwise known as a Product Manager
role, one of the most
popular books is this one
that I've just pasted into the chat
here, Cracking the PM Interview.
It's quite popular in terms of just
preparing for that sort of role.
It'll be the types of
questions that you might
be asked in an interview for that
type of role and the types of problems
that you might face if you actually
end up working in that sort of role.
So you are looking for a book that
one might be a good one to start with.
AUDIENCE: OK, thanks.
Thanks a lot.
DAVID MALAN: Time for a
couple more questions.
Raj, can we go to you?
AUDIENCE: Absolutely.
So first of all, I wanted
to personally thank you.
CS50, like literally, I'm not
exaggerating, changed my life.
I switched careers after taking CS50.
I'm just so thankful with you guys.
I just wanted to
express that personally.
So that's point number one.
And number two is that obviously due to
the COVID-19, a lot of people with kids
like myself are going crazy right
now with the kids at home all day
long, and with homeschooling going on.
And one question for you,
I guess, is are there
any resources or an approach you
would suggest to make useful--
useful?
Valuable use of time and get kids,
let's say between 6 and 10 years old,
engaged with the very, very first
steps in computer science and computing
in general, computers?
Are there any-- because there
are so many projects out there.
You can buy a Raspberry Pi and I
don't know, play with Minecraft,
and write some simple things in
Python, and there's Scratch, there
Scratch Junior, there's the Sprite Box.
There are so many things and
so what do you recommend?
DAVID MALAN: Well I am
definitely a fan of Scratch.
Anyone who's taken CS50 itself
is familiar with this one, which
I've just pasted in to the chat window.
A fun addition to Scratch is--
let me go ahead and google this for you.
It's something called Snap at Berkeley,
which is very similar in spirit--
I'm going to go ahead
and paste that URL here--
but it has a lot more features.
So in fact, I think
Sarah, we were talking
earlier about functional programming.
And so Snap is actually a--
has functional features,
even though it is a drag and drop
block based language as well.
But it has features where you can
talk to APIs, Application Programming
Interfaces, you can make
internet connections.
So it does several things that
Scratch itself does not do.
And it also interfaces
well with hardware
if children might like to actually
play with some physicality.
Brian, do you have other suggestions
from experience or siblings?
BRIAN: Yeah, a couple.
So Scratch is, again, a favorite
of mine, for even younger students
like children ages five to seven.
I think you mentioned Scratch
Junior, which I'll paste in as well.
Also really great because
Scratch's user interface
can be a bit much for a
six-year-old but Scratch Junior
is typically designed to
make it even easier for them.
And then with regards to
hardware, another popular one
especially for younger
children that's often
used in primary school
classrooms and such
is KIBO, which is one of these
robots that allows you to build
programs that have little blocks.
And you can build programs out of blocks
and scan the blocks with the robot
and the robot can respond
to those programs.
And I've seen kids have a lot of
fun with that kind of approach too.
That one is hardware,
though, so it's not
going to be just a web
application the way
that Scratch is,
[INAUDIBLE] for example.
AUDIENCE: OK.
Thanks a lot, super useful.
DAVID MALAN: For sure.
Let me go ahead, everyone, and paste
into the chat window a Google form.
Invariably we're not going to be able
to answer all of today's questions.
But if you'd like to
fill out the Google form
that I just pasted into
the chat window, you
can tell us your email address so we
can let you know when the next office
hours will be online with us because
we'd love to let you know and continue
the conversation.
And those of you who submitted
wonderfully some questions in advance,
I hope you forgive that we haven't
even turned to that spreadsheet
yet because there were so
many questions in person
and we thought it would be more
engaging for everyone if we
focus on the in-person questions first.
But let's go lastly for one final
question perhaps to Arsh Dixit?
Your hand's been up for a while as well.
Oops, still muted somehow.
Zoom is showing you is unmuted
but we're not hearing your voice.
Something doesn't seem to be connected.
Any luck there?
BRIAN: Yeah, I see you in the chat Arsh.
If you'd like to type your
question that's OK too.
DAVID MALAN: Sure go ahead and type.
OK.
As you type that, Arsh, let
me go to another question
but we'll come back to yours.
Go ahead and type it in the chat window.
Jason, can we go to you?
AUDIENCE: Thank you so
much for the opportunity.
Can you hear me?
DAVID MALAN: Yes.
Where are you from?
AUDIENCE: Yeah.
I'm from Pakistan, Asia.
DAVID MALAN: Wonderful.
AUDIENCE: And the questions
are a couple of questions
I have noted down, and quickly questions
at the moment about mathematics.
How good a person
should be at mathematics
if you want to start with a computer
science or CS50 and something
beyond CS50 to get some
introduction in computer science
and land a job on a tech company?
Number one question.
And--
DAVID MALAN: Sure.
Go ahead.
AUDIENCE: Should I go
for the next question?
[INAUDIBLE]
DAVID MALAN: Oh, sorry.
You got muted.
Say it again?
Still muted.
Still muted, Jason.
AUDIENCE: [INAUDIBLE] OK.
So first question answer, to you please.
DAVID MALAN: We missed
your second question.
AUDIENCE: OK.
The second question
is about the contents
that you are just delivering to
the internet or the web based.
How about creating some kind of
platform, a central platform,
that can eventually gather all the
resources that you are just teaching
and other platforms
like Coursera, edX, MIT,
that would be a common hub for everyone.
Like a couple of guys just ask about
this, where we can do for the further
after CS50 or something like that.
How about considering a project, even
though, if I'm looking for a project
to work on, how would it look like?
[INAUDIBLE] want you to know how
would you recommend to do this,
that we're building a central project,
a central distribution, that we
can put all of the courses,
all the resources at one place,
and anyone can come and
just utilize that resource
for further studying and all that.
DAVID MALAN: In reverse order,
we have thought about that,
having a central platform
for all of the courses
especially now that we have multiple
courses taught by myself, by Brian,
and by other colleagues too.
We haven't started that process yet.
We might.
We have historically, though, tried to
bring the material to where students
are already are, so putting it on
YouTube, on edX, on iTunes, on Fire TV,
and on any number of other
channels, rather than presume
that people should be coming to us.
We've generally preferred
to go to where they are.
The downside, of course,
though, is that it might not
be obvious to students
what is in fact available
because there's so many
different things out there,
not to mention different versions.
So we might get to that point in
answer to your second question.
As for the first, I do
think that math should not
be an impediment in one's mind
to pursuing computer science even
if you don't think of yourself as
very good at math or as a math person.
In CS50, certainly
comfort with arithmetic
is a precondition, so knowing how to
use basic mathematical operations.
And I think some comfort with
algebra, just symbolic expressions
when you have x plus y equals z, so
generally formulas along those lines
are helpful.
But beyond that nothing
more is needed for CS50.
In higher level classes other
mathematical tools come into play.
And Brian, do you want to speak
to a few higher level assumptions?
BRIAN: Sure.
So we can speak about artificial
intelligence, for example.
We've talked about the AI class a bit.
One of the goals in
CS50's AI class has been
to try to create a class
that doesn't require
a whole lot of mathematical
background coming into the class.
So if you look around at artificial
intelligence books and other resources,
a lot of them will assume a
lot of multivariable calculus,
or linear algebra, or other
high level mathematics,
which are quite helpful
if you want to really dive
into this world of designing
algorithms for artificial intelligence.
But there's a lot you can
do with these technologies
without necessarily having
that mathematical background.
So CS50's artificial
intelligence class does not
assume any of that prior
mathematical background.
We'll assume familiarity with
algebra and the mathematics
that you need to know to
be successful in CS50,
but we will then introduce some
of the other mathematical concepts
that come up in the class-- things
like probability and formal logic,
those are things that we will cover and
teach over the course of the AI class
itself.
But depending on where you
choose to go after that,
a little bit of familiarity with the
mathematics can often be quite helpful.
And a lot of computer science now
has to do with big data, for example.
And so looking around for some
statistics classes, for example,
might be helpful if that's
an area where you're
really interested in going further.
DAVID MALAN: And allow me to--
AUDIENCE: That is a great answer.
Thank you.
And the last [INAUDIBLE]
DAVID MALAN: Still muted, Jason.
Still muted, Jason.
AUDIENCE: OK, unmuted, right?
DAVID MALAN: There we go, yes.
AUDIENCE: OK.
The last question is, ideally
speaking-- what the heck?
DAVID MALAN: You're good.
No, now you're muted again.
AUDIENCE: The last question so to
speak is ideally what is the best time,
in your opinion, to get to yourself in
particular one discipline in computer
science rather than
getting on and on and just
tired of learning new
things and new technologies?
But eventually everyone,
particularly me, I just
want to get a job in a
career for a tech company.
So what time you would recommend to
just get in one specific discipline
and then continue with only that
instead of going here and there
and searching for the
next stuff to learn?
DAVID MALAN: A good question.
And in fact, let me read
our last question aloud
that Arsh kindly pasted into the
chat window, which is similar--
have you heard of people going straight
into the field of technology right
after CS50?
And how much of a gulf is there between
the skill game from CS50 and the skill
needed for a basic unpaid internship?
That is, is it a good idea or feasible?
So another angle on the same question.
Generally speaking here
at Harvard, we recommend
that students have taken CS50
and one other course, presumably
a software class or an algorithms
and data structures class.
That generally tends to be the
expectation of a lot of tech companies,
that you've not just
taken one class but you've
taken a second that tends to round
out your knowledge, that gives you
more experience and practice
with programming in particular,
and frankly so that you
have a different perspective
and you've not learned computer science
from just one person or one course.
You've seen different
ways of solving problems.
So I think it's very reasonable to take
something like CS50 for free online,
or through any of our
various channels, and then
take some follow on class-- maybe one
of MIT's, maybe Brian's web class or AI
class, or a class at
Princeton on algorithms,
or any number of free courses too.
And then I think pursuing a tech
internship, or paid or unpaid position,
is quite reasonable.
So thank you both for that question.
And allow me to squeeze into
the chat window one final URL.
Invariably again we can't field
all of today's questions today,
but if you'd like to reach out to
Brian, and me, and CS50's whole team,
by any of our online
communities I've just
pasted the URL that gives you a list
of all of those various tools where
we hang out.
And we will absolutely follow up via
email if you fill out the Google form
from a few minutes ago to let you
know when the first such office
hours will be.
So thank you so much to Ian, and Ramon,
and Arturo on CS50's team for having
helped us with the stream today.
We'll post a recording
online later on if you'd
like to take a look or
share with any friends.
And we'll let you know
soon when the next one is.
And all our best truly, especially right
now in the world with so many people
holed up at home and
hopefully quite healthy.
All our best to you and
your families and friends.
