DAVID: All right, hello, world.
This is the CS50x Educator Workshop.
Can everyone hear me OK here at Harvard?
Yes?
Well, so nice to see everyone again.
I hope you had a happy and a healthy weekend over the past couple of days.
I thought we'd begin where we always do, which is with just a few hellos.
Might anyone be comfortable volunteering a blue raised hand
if you'd like to say hello to the group this week to kick things off?
RANPUR: Hi, David.
DAVID: Nice to see you again.
RANPUR: Yeah.
Hi, to all.
This is Ranpur, from India.
Yeah actually, I was waiting for Sunday to complete so that I can join now.
Thank you.
DAVID: Oh, good.
You're very welcome.
And Siam, I'm not sure if I'm saying your name right.
I saw your hand up.
Did you want to say hello too?
SIAM: Yes, hi, David.
I'm Siam from Bangladesh.
Nice to meet you.
DAVID: Likewise, Siam.
Nice to meet you as well.
Any other hands, if folks aren't too shy?
Chefket, if you'd like to say hello, nice to see you again as well.
CHEFKET: Yeah, also for me too.
I hope to enjoy today, because my background is technology.
So we have first part in business and law.
So normally it's better to know some other and get some skills in business.
And law will be faced in our job with this [INAUDIBLE] problem.
So thank you so much that you will involve
these two kind of topics in our course.
DAVID: Of course, thank you, and so glad it'll fit a need that you have in mind.
And last but not least, Ramon, would you like to say hello again to the group?
Welcome back as well.
RAMON: Hello everyone, again.
This is Ramon from Brazil.
I'm very excited to be here again.
And I hope we all can take the most out of it.
So let's go.
Let's get started.
DAVID: All right, I love how you're ready to kick things off every time.
Well, let's indeed dive right in.
Today and this week will be entirely focused on other courses
that you can teach in your own classrooms in some forms
before or after CS50x.
Today's focus will be on three courses that
are nicknamed CS50T, CS50B, and CS50L.
So each of these courses has their origin
here on campus in some form or other.
CS50T, titled officially, "Understanding Technology,"
is essentially the first class that I myself taught some 20 or so years ago.
It went by a slightly different name and number back then.
But nowadays, this is an adaptation of that very same class, modernized
for technology that we have 20 years later.
This is a course, as we'll see, that's meant really for anyone.
It's meant to empower students to understand the technology
that you and I use every day, that you and I carry in our pockets every day,
but don't necessarily understand how it all works.
And so it's meant to provide students with a better
understanding of consumer hardware, of internet technologies, and a lot more.
CS50B, otherwise known as "Computer Science for Business Professionals,"
is inspired by a class I teach here on campus each year
at Harvard's business school, where there is an MBA program, master's
of business administration, where the students in this class
learn from a top-down perspective about technology as well,
but it's a little more managerial themed.
It's a little more decision-making themes,
not so much in the consumer space, but in the corporate workplace.
How do you understand the various technologies that you and your staff
can use to solve problems?
How do you make estimations as to how long things should take to create,
how much projects should cost to create, and essentially provide business
leaders with a better understanding of technology so they can make themselves
better decisions in their own enterprise?
And then lastly, and most recently, is CS50L, CS50 for lawyers.
This is a class that I co-teach with CS50's Doug Lloyd
at Harvard's law school, where students are pursuing degrees in law.
And this class, similar to the other two classes,
is also top down, conceptually.
None of these are programming classes.
But CS50L intersects all the more with real-world issues of law,
real-world issues of intellectual property,
of security, a lot of the topics that lawyers, and paralegals, and others
in the legal profession might have to think about,
might have to advise clients on day in and day out.
So we'll give you a sense, then, of all three of these courses today
so that you're welcome to adopt or adapt the courses in some form,
either integrating them into your existing class.
Maybe it's CS50x or something else.
But we position these courses essentially
as precursor courses to CS50x.
CS50x, as you may recall from last week, especially if you've taken
it online, really as the backbone of CS50's curriculum.
It's meant to be a rigorous introduction to computer science
and to programming itself.
But these three courses do not assume that students have taken CS50x.
They do not assume that students have any prior programming experience.
And the goal of these courses is not to teach students how to program,
but to give them exposure thereto into concepts related, as well.
If at any point, as always, if you have any questions, or comments,
or would like clarifications, please do.
Just raise your blue hand.
Happy to make this as much of a discussion as we can--
and please feel free to chat with each other via the chat window as well.
So all of these courses, if unfamiliar, are available in multiple locations,
perhaps the simplest of which is on edX, if familiar with the MOOC platform,
at edx.org/cs50.
And there is a few other classes there that you'll
see that we'll learn more about later this week if you
choose to join us as well.
So here is essentially where today's three courses fit into CS50's growing
curriculum.
Once upon a time, CS50 was just CS50, that is, CS50x.
But now we would describe the ecosystem of the team's courses
as being CS50 as this backbone that I described earlier and then three
possible on ramps to CS50x itself, so the business version of the class,
the law version of the class, and the technology version of the class.
Those three courses aren't necessarily mutually exclusive.
You could teach multiple courses.
Your students could take multiple courses
of business, law, and technology.
But there is definitely non-trivial overlap.
And so we would generally advise that, if considering one of these courses,
you start with the one of most interest to you and your students
and then perhaps adapt other aspects of the other classes
as opposed to having students take multiple precursors to CS50x itself.
Ahmad, I see your hand is up.
Question or comment?
AHMAD: Yes, David.
I believe there is also CS50 for form mobile development.
And I don't see it mentioned.
Actually, there is no session for it this week.
What happened to this course?
DAVID: Correct.
What is not pictured here is CS50's mobile app development
course, which is drifting out of date.
It's still available as OpenCourseWare.
Teachers are still welcome to use it, but we don't currently
have plans to update it enough so that students can follow along
with the latest and greatest versions of software.
So while the projects, the lectures, everything is still available,
the world of mobile app development changes
so quickly that the materials have fallen out of date.
So at this point, in 2020, odds are there
are better, more-current resources online
for students who want to dive right in and not struggle
with changes in documentation and API.
So indeed, this week, will only focus on today's three courses, and then Brian's
AI class and web class, and Colton's game class as well.
So indeed, we'll focus on exactly that today, just three
of these on-ramp courses in some form.
And we'll go through them one at a time.
And please, again, interject at any point if you have questions.
And I'll highlight at the end the similarities and differences
among these courses, outright.
So CS50T, or that technology class, is freely available as OpenCourseWare
at this URL here, Brian, if you wouldn't mind pasting this into the chat window
as well.
And CS50T essentially follows a syllabus along the lines of these topics here.
So it's broken down into six units or modules.
You can present these as six disparate weeks.
We tend to spend two weeks on each of these topics.
But at the high-school level, college, university,
you could certainly spread it out over a longer period of time as well.
In terms of the particular topics that we introduce students
to in understanding technology, AKA, CS50T,
we actually start where we start CS50x itself, introducing students
to the representation of information and giving them a taste of
and understanding of binary.
From there, we talk a little more about--
a bit more about hardware in CS50T than we do in CS50x
so that students understand what's literally
inside their laptop and desktop.
Pictured here, of course, is a CPU, or the brains inside of a computer.
And we talk in a bit more detail in this class about what
it is the CPU is doing for students' computers
and how it connects to other pieces of hardware.
Indeed, another piece of hardware we talk about in CS50T is hard drives.
So pictured here is the inside of a 3 and 1/2 inch hard drive
with its spinning platters, and such.
And we allude to this model in CS50, but we don't talk in great detail
about the physicality of what's inside the drive in the magnetic particles
that are storing your information.
So we try to peel back more conceptual layers in CS50T
so that students do have this top-down understanding of how
the hardware in their computer actually works.
And we also take a look at the back of or the side of students' computer,
so to speak.
And we actually look at and talk about ports, display ports, and HDMI,
and VGA, and USB, and bunches of others that you
could find on the side or the back of a modern computer
so that students are able to understand exactly what are these wires all doing.
We encourage students as unofficial homework,
go home, if they own a desktop especially or live in a household
where someone owns a desktop, and we actually
encourage them, once it's powered off, pull all of the cables
out and then go about figuring out how you plug them all back in.
And while, for many of you in this Zoom meeting
might find this pretty straightforward exercise,
I'm guessing you can think of someone in your life,
maybe family or friend, who might very well struggle to get the thing back
online if they don't know where the various cables go.
And so this is the sort of theme and the spirit
of the class to really make students feel more comfortable with technology
by helping to take away some of the fear factor.
Well, if they just pull out the plugs and put them back in,
provided they power down safely, they're not going to do any damage.
And all of these things, of course, have disparate shapes, if not
colors, if not labels.
So the goal is really to take that fear factor of technology away from folks.
Now, you might recall a familiar face on the screen here.
We also infused this class with some visual demonstration.
So CS50's own Colton Ogden joins me here in his scientific lab coat.
And we walk through some actual pieces of hardware.
On the desk there in that photograph, do we
have CPUs, and RAM, and other devices that you would see inside
of a computer.
And we draw all the more attention to those components to students.
We then transition and focus for one or more weeks on the internet
and how it works.
We talk to students about home internet connections.
Here in the US, cable modems are quite popular,
as are DSL modems and other technologies.
And we help students understand what it is
you're getting from your ISP, or Internet Service Provider,
and what all of those cables and technologies are doing for you.
We then look more technically at one's Mac or PC.
And we talk about how your computer is using the internet.
We talk about IP, Internet Protocol, and IP addresses.
We talk about a DNS and DHCP, a lot of these acronyms
that students don't need to care about every day,
but if they need to configure their computer or troubleshoot some problem,
odds are they're going to see some mentions of these acronyms.
And so the hope is to dispel any fear or confusion around these terms
and help them understand that, while these terms might look fairly esoteric,
once you have a basic understanding of how the internet works,
you can start to make sense all the more of your world.
Here is a screenshot of the same idea pictured here with Windows as well.
And then we talk to students about their own home topology.
Odds are many students have internet access in some form these days,
whether through their phones, or cable modem, or DSL, or Fios,
or something else.
And so we help students understand how the home router interacts
with maybe a built-in firewall, with their laptops,
and desktops, and printers, and any number of other devices
so that it just all makes sense and it isn't just something that someone
more technical than they setup.
It's something they could set up and troubleshoot themselves.
Now, in CS50T, we also spend time on multimedia and file
formats, so relate it to sound, and images, and videos, and the like.
And while we do spend time in CS50x itself on digital forensics,
and on file input and output, and on the representation of bitmaps and JPEGs,
that's very low level.
In CS50T, we sort of focus conceptually up here so
that students understand what a GIF is, a JPEG, a ping,
and how these file formats differ from one another, an MP3, or AAC
file, or MIDI file, or WAV file.
We help them make sense of all the various file
formats that they might hear about or they occasionally
download onto their own computers so that they
can sort of understand why it is there are
so many of these things in the first place.
We talk to them about how images are represented.
Here is a literal bitmap, zeros and ones that represent black and white pixels
on the screen.
And we talk to students about what an image really is.
We encourage them to go home, and on their desktop,
or laptop, or better yet, TV, put their eyes really close to the screen
and see if they can't see the actual pixels on today's LED or LCD screens
as well, so that they realize, oh, this technology
has been with me all this time.
We talk about compression.
And let me ask the audience this one.
Pictured here is an apple against a blue sky or background.
And no matter what file format it's stored in,
odds are we could compress it in some form.
We could use fewer bits, less disk space to store the same picture.
Any thoughts on how a file format might compress this photograph of an apple?
What's the opportunity here, technically?
Even if you don't know, what might your conjectures be?
Ignacio, would you like to start with your thoughts?
IGNACIO: Yeah.
Good afternoon to you all.
Thank you.
Glad to see you again, David.
DAVID: Likewise.
IGNACIO: I think that one way to do this is,
if you take all the blue area and match or bye or one bit for example and map
all the red area another bit for example.
I think that this compress a lot of this image in really small piece of file.
DAVID: OK, by somehow grouping together the red and the blue--
I think that that makes sense.
It's a step in a good direction, I think.
Ahmad, do you want to elaborate from your perspective on the same question?
AHMAD: Yes.
I believe also we can do lossy compression.
By reducing the resolution of the image, this can also--
so what Ignacio said is basically--
I'm sorry.
What Ignacio said is maybe lossless compression.
But we also have lossy compression that reduces the resolution of the image.
DAVID: I'm so glad you used those terms, because we use them
in CS50T as well, lossless compression, where you somehow use fewer bits
but you don't lose any useful information, and lossy compression,
where you do start to throw away quality as by shrinking it or using
even fewer colors in the spectrum.
And so if you think about this, though, at a low level,
as we encourage students to do, how might you
describe this picture to someone else without using
the abstraction of an apple?
You might literally start at the top and go from left to right, top to bottom,
and say that there is all of these pixels, horizontally and vertically.
And you might literally describe each pixel, blue, blue, blue, blue, blue,
blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue,
blue, blue, blue, and so forth.
Eventually you might say, blue, blue, blue, red, red, red, red, red, blue,
blue, blue.
But you can hear in my voice, of course, a huge amount of redundancy,
as I'm describing again and again, really,
the same color of different pixels.
So you could imagine taking a lossless approach
and just storing less information but--
sorry, storing fewer bits, but not losing any information fundamentally.
For instance, I could describe the same picture with blue 10 times
to the right, blue 10 times to the right, blue three times to the right,
then red, then blue again.
And you could imagine sort of verbally and digitally compressing
the image by using run lengths of some sort
and describing a series of pixels and their colors as opposed to every pixel
individually.
So we talk to students about these primitives.
And we get them thinking about technology in a way
where, even if they've never heard of a file format before,
they can start to reason methodically about how this problem could be solved,
even independent of the particular technologies with which they're
familiar.
Here is another one.
So this picture here, of course, represents
a few flowers and a bumblebee flying from left to right.
And even though the bumblebee is moving literally
from left to right in each of these frames, from a video,
for instance, what's not changing is the flowers.
So another thought question we might ask of students is,
for video, how can you go about compressing the video?
Well, you can do lossy again, as Ahmad proposes.
And you can shrink the resolution or use fewer colors.
But you could also perhaps do it losslessley,
as by storing only what changes frame to frame.
A frame in the video is really just an image flying across the screen
very quickly.
So if we really store the first picture of the flowers
and the last pictures of the flowers, but in between there,
we just store what's changing, the position of the bumblebee,
odds are, that is sufficient information to reconstruct the original video
losslessley with no loss of quality, but we can store a lot less information,
because we don't have to remember the flowers again, and again, and again.
So we also talk to students about Hollywood, and TV, and movies.
And this is a clip from some show like CSI, Crime Scene Investigation.
And in these kinds of shows, there is always, like, a glint in someone's eye,
like this one here.
And if you zoom in on it, there is the bad guy.
And you can capture the criminal.
But of course, if you zoom in on a screen like this, in a photograph
or video, odds are you're only going to see pixels like this.
And you can probably only barely see them
on my screen because of compression.
But there is certainly no clear evidence of who
it was that was shimmering in that fellow's eyeglass.
And so we talk to students about why this is
and why some of what you see on movies and TV
is just nonsense, technologically.
It doesn't make sense to be able to see that glint in the eye
if the information was not stored, for instance, at a high enough resolution.
Well, after multimedia, we transition to security.
And we talk about passwords, for instance.
And here, for instance-- this is of last year--
were the top-10 worst passwords on the internet.
And if you yourself are using any of these passwords,
you better change it, because any of the students you
might teach this material to are perhaps going to get a bit
curious as to whether you indeed are.
So we talk about why these passwords are insecure
and how a hacker might go about figuring out your password.
And it might be via brute force, literally
trying all of these most-popular passwords
on your system or mine trying to get into someone's account.
And we talk about why websites have you add things
like numbers, and punctuation, and have a certain length.
And we even give them a sense mathematically of how much more secure
a password that's this long is than a password,
for instance, that's this long--
or less secure than a password that's this long.
After that we talk about other factors, two-factor or two-step authentication
that you might use with your Gmail account or some other service,
where you tend to have a physical device like your phone
that you need to read a code off of before logging into an account.
And we talk about familiar technologies as well, like Wi-Fi, for instance,
and just to what extent are students data insecure
when using a laptop or phone, and what it means to actually use
WPA or WPA2 and some form of encryption in your Wi-Fi, let alone something
like HTTPS.
We talk about matters of privacy most students are probably
generally familiar with cookies having some implication for their privacy,
but odds are, most don't really understand what that means.
So we explain what cookies actually are, sort
of small files or pieces of information on your computer left there
by some server.
And we help them understand what's going on when they use incognito mode,
or more importantly, what's not going on when they use incognito or private mode
so that they understand the implications of their decisions
when they're doing something sensitive, whether it's
with some personal document, or financial, or health
information, or the like, they understand exactly what information
is being stored on their computer, where it's being transmitted,
who can access it, and for instance, for how long.
And then we transition towards the end of the course
to some final topics, one of which is web development.
Now, we don't go into nearly the same depth as we do in CS50x.
There is no flask.
There is no dynamic user input and output.
But we do introduce students to HTTP, the protocol
that underlies the web itself.
And we help them make sense of 404 and all of the other status codes
that you may or may not see when visiting a website.
We talk to them about HTML and how you would make your own web page.
And we have students make their own personal home page, but purely
static ones using only HTML and CSS, maybe using a little bit of JavaScript.
We help them understand as a teaser for classes like CS50x
how this text-based language, HTML, can really
be mapped to a picture of sorts, like this DOM here,
this Document Object Model, but of course it's
not until a class like CS50x that students
might code that manipulate in any detail that kind of tree structure.
But they see it in this class,
And then lastly, and perhaps the best setup
for something like CS50x itself as a next step
is the course's introduction to programming.
We start, as in CS50, with pseudocode, flipping through a phone book,
for instance, looking for a name and a number.
We introduce students to scratch.
And so we spend time introducing them to primitives
of procedural languages, like conditions, and loops, and variables,
and functions, and the like.
We don't get into great detail on more advanced topics like threads,
and events, and that kind of event-based programming per se.
We leave that more for CS50x and onward.
But students do have an opportunity to make their own scratch project
and hopefully whet their appetite for diving
all the more immersively into a programming class like CS50x itself.
And then at the end of the semester, and really, throughout the semester
do we have assignments followed by a final exam of sorts.
And Brian, if you wouldn't mind pasting this URL into the chat window,
here is a sample exam of questions that we might
administer at the end of this course.
And you'll see that all of the questions really are thought provoking,
they're concept oriented.
And they're meant to help students wrestle with new problems
that are inspired by the concepts that we've looked at in the class itself.
And so indeed, in terms of assessments, and what we make available to teachers,
is each week, each of these modules, hardware, and internet, and multimedia,
and web development, and so forth, all are
accompanied by these sorts of assignments
that look like this sample exam.
We tend to use Google Forms with them.
But you can certainly use any technology that allows you
to ask questions and solicit answers.
And they all tend to be short-answer-style questions, to which
there is often a right answer, but there is often a gray area and opportunity
for students to really think about a problem
and propose, with the proverbial engineering hat
on, their own solution to a problem.
And so that, then, is CS50T.
Any questions or comments that I can answer here?
And all of these materials already are available
at both the OpenCourseWare URL that Brian pasted earlier,
as well as on edX and other sites.
David, can we go over to you?
Question or comment?
DAVID LANE: So I see how the link that was provided by Brian
provides access to the resources.
It look like when I went to submit a unit assignment,
then sent me over to edX.
And I think if the students submitted through that, I might not
be able to see that work.
So how would you recommend students access these forms
and submit assignments if we're using it locally?
DAVID: Really good question-- so for these courses,
we would encourage you to use your own copies of the forms.
Odds are, depending on your students and your schedule,
you might want to assign them in shorter form any way
to split them up into multiple assignments,
assign one question per day.
It's really varied at both the high school and upper level as well.
And in that case, the answers would all go directly to you.
We do not all automatically grade these answers, in so far
as they are short answers.
So there isn't something like check50 for these.
So we would encourage teachers, whether using Google forms or any technology,
to simply adapt the assignments to whatever technology they prefer.
Rosa, over to you next.
ROSA: One question.
This is, like, the first part of the AP CS50.
So you mentioned that, for you all at Harvard, it takes one week per topic.
Traditionally, how many weeks is spread out in the AP context?
DAVID: In the AP context, it depends on the teacher,
but I would spend no more than 10 or 12 weeks, I would say.
And even that is probably longer than it needs to be.
At Harvard's extension school, for instance, we
spread this course out over 12 weeks.
And the way we structure it is we have students watch the materials in one
week and start on the assignments.
The next week we have hands-on sections or recitations with one
of the teaching fellows, which is an opportunity
to explore the material in more detail to ask questions about it,
to perhaps re-enact some of the demonstrations
that you might have seen in the video.
So 12 weeks is a reasonable pace.
I think you could spend more time, but I suspect, at that point,
your students might be raring to go for four more-advanced material thereafter.
Ignacio, over to you.
IGNACIO: Oh, thank you.
Two questions-- the first one is, what is
the prerequisite, the background that these students need,
for example, high school, middle school, or starting college?
And this school, we have, for example, a way
to work with Harvard to [INAUDIBLE] certificate to our students,
because I think that is a good course.
And I can, with my colleagues, offer this course
as an extension course on our college.
So how does certification works?
DAVID: In terms of the age group for which the course would work well?
IGNACIO: For the CS50T, there is a kind of certification
like in CS50x and others?
DAVID: At the end of the semester, yes, for students
you do submit their work through edX, we do offer CS50 certificates
of our own, similar in spirit to the ones you might have seen last week.
And edX also offers their own verified certificate.
Of course, if a teacher has their students,
as David notes, submitting directly to them,
that would circumvent that typical process.
But we can work directly with teachers to create certificates
for your own students of interest.
And in terms of the target audience, we tend
to teach this material to students who are generally
in high school, or college, or are working adults or retired adults.
But I think for 13 years old and up if not even
younger would be a reasonable target audience for CS50T's type of material.
IGNACIO: OK, thank you.
DAVID: Of course.
Kaloa?
I'm sorry if I'm not pronouncing your name right.
But Kaloa, if you'd like to say it and ask your question too?
KALOA: Thank you.
Thank you, David.
I'm asking you about operating system.
You suggest one, for example, Linux or Windows.
For example, when we choose Linux, you think it's for the commands?
DAVID: So an operating system for what context?
For taking a class like CS50T?
KALOA: Yeah.
When you presented, you present the hardware, the compression.
And you didn't talk about the operating system.
And I think it's important.
For example, if after that, they would utilize git, for example.
And they have had the basics about commands on the [INAUDIBLE],, no?
DAVID: This course does not introduce students to a command line,
or commands like git, or the like.
It is completely agnostic when it comes to operating system.
I in the lectures tend to use Macs.
Colton sometimes uses PCs.
When we focus on computers themselves, we introduce students to the hardware.
We do not spend much time focusing on operating system details.
So for this course, it does not matter what operating
student a teacher or a student has.
If you happen to be in an environment like a computer lab or a classroom
that all has the same types of computers and operating systems,
you can absolutely supplement CS50T's own material
and talk to students about what it is an operating system does, and some
of its features, and so forth, but that's not covered in the class itself.
KALOA: Thank you.
DAVID: Sure.
Chefket, over to you.
CHEFKET: Do you hear me?
DAVID: I do, yes.
CHEFKET: OK, thank you.
In fact, I have no question, but just to mention
that I have completed this course, which was really valuable.
And I have recommended it also to my students.
Also, I have used the practice to my students forms and quizzes
that I got during this course.
And really, they like so much them.
And in a short time, I was friendly with these forms and quizzes.
And I will recommend to my colleagues also and to my students next year,
academic year.
It's a very, very valuable of course.
And I love so much programming in Scratch.
It was first time for me.
But really, really, I enjoyed that project.
It's that kind of project.
Also web development, and security engineering, a lot of it--
so much, thank you, David, for that.
DAVID: You're very welcome.
Thank you.
I will call on you for every one of our classes now.
Joseph, over to you next?
JOSEPH: Hi.
Quick question regarding C as the choice for what you use-- and I understand,
because it has the compiler.
And students need to understand that process.
But I notice a trend.
And this is Stanford, and MIT.
Like, slowly they switched from JavaScript for their 101 class
to Python.
And there is a lot of another trend driven by Google and AWS
where a lot of cloud is based on Python.
Like, they use command set used to stand up a server or a Kubernetes cluster
are all mostly based on Python, which is becoming, like the number-one most
popular language.
Have you given any thought to do more than just a lecture six two-hour thing
on Python within the formal course?
DAVID: Sure.
So to be clear, CS50T does not teach programming in textual form.
We only use Scratch.
CS50x, to which I gather you're alluding,
does introduce students to Python at the tail end of the class,
but we spend much of the beginning of the semester on C. Brian,
if you wouldn't mind pasting our official answer on Quora
to this question-- in a nutshell, I pedagogical find that C in CS50x
is a helpful way, bottom up, for students to understand
what's going on inside of a computer.
Two, I think it gives them a better appreciation
for a higher-level language like Python without hiding initially
what it is the computer is doing, because indeed, with C,
there really is no magic.
If you want something to be in one place in memory,
you need to put it there, whereas a higher-level language like Python
does a lot more for the students, which has advantages, of course, too.
But allow me to defer to the length that Brian
can paste to Quora for a more refined answer
here just so we can keep the focus on CS50T.
JOSEPH: Thank you.
DAVID: Jerome, over to you next.
JEROME: My question is regarding the update of the CS50 Understanding
Technology.
And I'm asking this because I realize that CS50 for lawyers
was updated after two years and also CS50 web programming taught
by Brian Yu.
So my question is, do you guys plan on updating CS50 Understanding Technology,
or given the nature of the course, It's something
you guys think it's not needed?
DAVID: It's not needed yet.
We've talked about this internally, but the material
is still very much germane to current technologies.
Having taught that class or some version for it
off and on for the past 20 years, it eventually
absolutely drifts out of date.
Back when I started, we were probably talking about how many megabytes of RAM
you and I have in our computers and how many megahertz our CPUs were as opposed
to gigabytes and gigahertz.
So those kinds of numbers change over time.
We don't think we've crossed the inflection point yet.
Eventually we probably will update CS50T.
But I would not have any concerns with teaching it now in its current form.
It has not drifted out of date.
By contrast, the mobile class experienced precisely that gotcha.
All right, well, allow me to steer us toward the second of the three classes.
And here you'll begin to see overlap.
So for the portions that overlap, I'll move a bit more quickly and highlight,
really, the differences.
So CS50B, for Business, is, of course, again,
inspired by a class I teach at Harvard's business school.
And this class has been adapted now, is OpenCourseWare at this URL here.
If, Brian, you wouldn't mind pasting this URL on the screen as well.
And it's also of course available on edX as well.
In terms of the syllabus, it covers similar material , from again,
a more top-down, managerial perspective on computational thinking,
programming languages, internet technologies and web development,
and then some new topics toward the end of the semester including technology
stacks, all of the various building blocks you might bring to bear on an IT
solution, as well as cloud computing, topics that we don't touch on at all
in CS50T.
In terms of where we begin the semester, it too borrows some inspiration
from CS50x itself.
You might recall that we introduced students to problem
solving by way of inputs and outputs, between which are algorithms,
step by step instructions for solving some problem.
But in the business class, unlike the technology class,
we give students a little bit more theory, just as we do in CS50x.
And we introduce them to running time, and even asymptotic running time,
so that they, in a managerial position, can
have a more informed, intelligent conversation with an engineer,
and roughly understand what it is when an engineer says that one algorithm is
"better" than another they.
Have a mental model with which to compare things.
As opposed to trusting entirely a technical team,
they can actually engage in those conversations with them.
We introduce students in the CS50B course to programming at a high level,
but really, programming languages.
So not just Scratch, though we do use some Scratch,
but we introduce students by way of name and exposure
to the whole menu of popular languages that are out there.
And pictured here are just some of them.
But we give them some exposure to some of the more commonly used languages.
And we talk with students about when you might use something like C or C++,
when you might instead reach for Python, or PHP, or Ruby or Java,
when you might use Swift or Java again.
And we help students categorize languages so that they generally
know what types of language are generally
used to solve what types of problems, so in more depth than we
discuss them in CS50T.
But the students here too do get an opportunity to play with Scratch.
And even though its target audience is officially younger students,
we have always found, as Chefket noted earlier too, that it actually does
tend to appeal of students of all ages.
It's just that accessible.
And most importantly, it highlights principles of programming.
It's not all just fun and games.
We're using it to introduce students, again, to functions, and variables,
and decomposition of functions, and abstraction, and the like.
And so I think, so long as you introduce it in those contexts, even
the most senior of students I do think sees the value in learning
by way of a technology like that.
And then we transition, not unlike CS50T, to internet technologies,
focusing on how the primitives underlying the internet work, making
a bit more sense of the alphabet soup, especially
since, in business, a company running its own network
or its own infrastructure is going to have some staff on duty who
has to deal with these problems.
So again, the goal is to empower managers
to be able to have informed, more technical conversations
with their engineers.
Even if the managers aren't themselves sufficiently
technical to solve technical problems, they
can at least participate in those kinds of discussions,
and ultimately, decisions.
We introduce students in CS50B again to web development,
introducing them to HTML and CSS.
But we also JavaScript students in a bit more detail to JavaScript.
And we show them more JavaScript so they can wrap their minds around a bit
more readily exactly what it is a programmer is doing
when they are writing actual code.
Of course, in the real world, a company wouldn't
tend to use something graphical like Scratch to build its product.
They might use JavaScript, or Python, or C#, or something else.
So we help translate Scratch to something like JavaScript for students
so that they've seen exactly what you can do with the language,
and they have, again, a more clear mental model for that world.
But then in CS50B, do we really dive into technology stacks more generally.
And here too, the goal is not to turn students
into experts with the latest and greatest technology,
but we want them to have heard about those latest and greatest technologies.
But more importantly, we want them to understand
what problems those technologies are solving, because odds are,
next month, next year, next decade, a lot of these terms,
a lot of these tools are going to be out of date.
But the ideas are probably going to be there, along with some new ones.
And so we introduce students, for instance, to the front end of software
development, focusing on languages like CSS, HTML, and CSS,
but also frameworks and libraries, some of which you might be familiar with,
Angular, Ember, Meteor, React, and Vue, which
generally make it easier to create more sophisticated user interfaces.
And Bootstrap, Foundation, Semantic UI, and others
make it a little easier to get started with more sophisticated user interfaces
without having to implement everything yourself.
And so for managers and other business professionals,
we help them understand what the value of frameworks and libraries is
and what those things can do.
We help them think about open-source versus closed-source alternatives
so that they don't just have a knee-jerk reaction to,
yes or no, we should use open source.
They understand the tradeoffs of either paying someone
to write custom code for them or using some off-the-shelf solutions.
We talk too about backend solutions.
And here there is even more languages at our disposal, not just Python, and PHP,
and Java, but Go, and .NET, and Ruby and, others.
And there too, there are frameworks from which companies can choose, including
Django, and Flask, and others as well.
And here you see hints of some of the tools and technologies
that Brian teaches in his class that I teach in CS50x.
So there is, again, some overlap here.
But in the business class, we try to give students
this top-down conceptual understanding of how all of these building blocks
fit in.
And then lastly, we focus a bit more detail on database
back ends as well, what it means to be a SQL, or relational database,
or a NoSQL database, or document store.
We give students a little bit of exposure to at least the biggest
players in this space, MySQL, Postgres, Oracle, Access, and others,
so that, again, they have a model in their minds of where
all of these technologies fit in.
And then lastly in this look at technology stocks
do we focus with students on mobile development.
And we help them understand that, if you want a mobile app that
works on Android and iOS, sometimes you need to write,
essentially, two separate applications.
It's a lot easier said than done to write one app and run it multiple
places unless you select the right technology.
So instead of using Swift or Java, if you instead
use CSS, HTML, and JavaScript, and a framework like React Native,
formally introduced in Jordan's mobile development class, can you perhaps
solve two problems at once.
And so we help students think about how they might solve problems in business
more economically, more rapidly, as by choosing the right tools.
We also introduce students to database design and what SQL itself can do.
And most folks in business are probably familiar with Excel,
or Google Spreadsheets, or the like.
And we help them translate some of those primitives
to create, select, update, and delete SQL commands with which
they might want to experiment.
We help them understand NoSQL as well through examples like this here.
NoSQL, if unfamiliar, is a little more hierarchical, a little more structured,
and a little less flat as SQL.
And so we just give students a sense of what
it is you're getting when you choose one technology like NoSQL
versus another like SQL.
And then lastly in the business course, do we focus really on a high level,
top down, on cloud computing, which you can't help but hear about constantly
these days.
And companies are increasingly moving into or thinking
about moving into the cloud.
But what does that mean?
And what do you need to understand?
We introduce them to some of the biggest players in the space like Amazon,
Microsoft, and Google, these days.
And we more importantly introduce students
to some of the primitives that underlie using cloud computing.
Even though the cloud is indeed, by design,
this abstraction such that you don't really
have to think about as many problems as you might on premise,
when running your own servers yourselves, all of the same problems
still exist of availability, and caching,
and how you pay for it, how you replicate
and scale your infrastructure, and so forth.
So we help students understand what problems still
need to be solved by someone, so in turn they
understand what is it you're paying Amazon, or Microsoft, or Google
or some other party to do for you in the cloud.
We help them think about the tradeoffs.
Is it more secure or less secure to put your data in the cloud?
Is it more expensive or less expensive To keep things
on premise or in the cloud?
And then lastly, we introduce students to some
of the technological underpinnings of cloud like containerization
and virtualization, technologies that have, in part, driven
this trend toward cloud capabilities, and then
also buzzwords like IAS, and PAS, and SaaS, the last of which,
most business types are familiar with, Software as a Service.
Gmail is a Software as a Service.
It's more of a buzz word that describes the level of abstraction at which you
can think.
Platform as a Service is a little lower, a tool like Heroku or the like.
And below that is Infrastructure as a Service, which
tend to be infrastructures like Microsoft Azure, and Amazon Web
Services, and the like.
And so we help students think at these multiple levels of abstraction.
If you'd like to take a look, and if, Brian,
you wouldn't mind pasting this URL too, a sample exam for CS50B is here too.
And like T, it's very concept oriented.
It's very short-answer driven.
And as a teacher, could you take some of our assignments,
as Chefket alluded to earlier, as well as the exam,
and either assign them week to week or every two weeks.
You could break them apart into one question per day or per week.
And so we offer, at this URL here, some sample questions.
But again, on the OpenCourseWare site, as well as on edX
is the complete corpus of materials that teachers can adopt or adapt.
So that, then, is CS50B.
And before we look at our third and final class on CS50 for lawyers,
let me pause here again for any questions or comments.
Ramon, over to you?
RAMON: OK, so my question is, the first two or three
lectures of the CS50 courses are very similar to one another,
because after all, it's a computer science class,
it's a computer science course.
But I would like to ask, what did you take into account when tailoring
the topics for business professionals?
And how does this course differ from the computer science for business leaders
that you taught in 2016?
And if it's the case that, CS50x for Business Professionals
is an update of CS50 for Business Leaders,
why didn't you include the lecture focused on
privacy, security, and society?
DAVID: That's a really good question.
You have definitely done your homework.
So I think the way to think about how we designed each of the courses
is, indeed, with the target audience in mind.
So CS50T was designed with, for lack of a better description,
consumers in mind, sort of everyday people like you
and me in our everyday lives wanting to better understand technology.
And so that's why there is more of a focus on home networking.
That's why there's more of a focus on hardware and the devices
that you and I might interact with, irrespective of our business vocations.
The CS50B class for business types is really
focused on decision making and empowering people in business
to have more technical, more proficient conversations with actual engineers.
So the assumption of CS50B is that the business professionals are not
working in isolation, but they're indeed working
with whole teams of people, some of whom are invariably
going to be more technical than they.
And the goal is to bridge those two demographics.
CS50 for lawyers is more focused on the intersection with society, so
laws that aren't necessarily specific to the US,
but Doug does use some examples therefrom, but really
on issues like net neutrality, and intellectual property, issues
that affect lawyers' clients, and therefore, topics
that the attorneys should ideally be sufficiently versed in so they too
can make arguments and understand claims that are being made by their clients
or opposition.
So the business leaders class to which you refer
was just essentially the same course under a different title.
And some of the topics to which you allude in terms of privacy and security
have simply been woven into other units in these classes.
In cloud computing, for instance, does security come up,
even though we don't have it titled explicitly.
In the law class, though, we spend more time
officially on issues of privacy and security
ever more so because of the intersection with law.
David Lane, over to you.
DAVID LANE: Yeah, I wanted to circle back
a little bit to the previous question about the unit assignments
and the creating of the task, because I see that when
you refer to the OpenCourseWare, is that your CS50 Harvard edu?
DAVID: Correct.
DAVID LANE: OK, and so over there, I certainly
see that the lectures, and slides, and assignments reference over edX.
And on edX, with each unit, there is a Google form, which I'm thinking,
probably the best way to handle that is just look at the questions,
kind of borrow what I like and make my own Google form?
DAVID: In short, yes.
And after this workshop, we're going to put together a more central resource
for all of those so that you don't have to jump through these multiple links
in order to get at the content.
But yes, simply copying and pasting or copying the form outright
is generally what would be the easiest thing to do, since all of the questions
are text based.
DAVID LANE: Yeah, so that is excellent.
And when I look over at edX, I do not see anything like a final exam.
I just see little assignments for each unit.
Is that pretty much the things are structured?
DAVID: Yeah, that is deliberate.
We make available our final exams to teachers who
might want to adopt or adapt the class.
They're not part of edX.
We only rely on the weekly or module-based assessment-- assignments
on edX.
So the exams are additional material available to teachers for on-class--
for on-campus administration.
DAVID LANE: And you had mentioned at some point,
there would be a form we could fill and verify that we are teachers.
DAVID: Indeed, we're-- we haven't sent that out yet.
We're still catching up from last week.
But we'll be following up as soon as we're a wrap this week
with the workshop.
DAVID LANE: Perfect, OK.
Thank you very much.
DAVID: Of course.
Joseph, over to you?
JOSEPH: Yes.
Regarding CS50 for Business, one big thing
that has been a struggle for a lot of organizations,
including the county system here as we upgrade to the cloud,
is really, it's a long, five-year journey.
And then by the time your done, the technology moves ahead of you.
By the time you do virtual machines, now it's cloudless or serverless.
Do you have a section where, like, you give best practices, like, for example,
diversify, have Google do something for you and have AWS--
don't put all your eggs in one basket, kind of,
you know, business decision maker advice as a section somewhere?
DAVID: It comes up.
I don't know if we hit the nail right on the head, so to speak.
But those questions come up in both the technology stacks portion of the course
as well as in the cloud computing portion.
And we stop short of giving students rules of thumb or advice,
because as you say, that can be quickly outdated.
We really do focus more on understanding the underlying technology
so that they can make more informed decisions based
on the context in which they're operating.
But your experience is quite common, unfortunately.
And the world changes quickly.
So fortunately, the underlying fundamentals do not change.
So we help students make sense of that spectrum.
All right, well, with no other blue hands
up, let's forge ahead with our third and final class
today, which is CS50 for Lawyers.
So you'll see in this class that it includes a bit more
content than the other classes.
This is the newest class with which I collaborated--
on which I collaborated with CS50's own Doug Lloyd,
who you might remember from CS50x's shorts.
Doug is a lawyer by training himself.
And so he wonderfully brought to this class
all the more of a perspective of a trained attorney.
And that is the lens through which we look
at a lot of the societal issues to which I alluded earlier.
So flipping through these topics too, you'll see again at the beginning
some shared foundation among T, and B, and now L. In terms of problem
solving itself, we introduce students again
to the representation of inputs and outputs,
and ultimately to the algorithms in between.
We introduce students and spend a bit more time
on representation of information, focusing,
of course, on familiar technologies like ASCII or Unicode,
and toward an end of understanding exactly how it is systems
store information.
When we transition ultimately to algorithms
we again provide students with some of the same building blocks as CS50T,
and B, and even CS50x, but we also talk to them
about certain primitives and principles that you see more of in CS50x.
For instance, the picture here is, of course, what?
Any quick blue hand?
What are we looking at here on the screen?
What is this here?
Almost every blue hand should be up.
This is not a trick question.
This is-- what's that?
Oh, Brian, what do you think it is, Brian?
Oh, Brian, no?
Not even Brian?
BRIAN: Hear me?
DAVID: Yes, now we can.
BRIAN: Oh, I was going to say, that looks like a cube to me.
DAVID: It does look like a cube, so otherwise known as an abstraction.
Like, you and I probably have enough frames of reference
from the real world to know that this can be described as a cube.
But someone unfamiliar with "the abstraction" of a cube
might describe it as three diamond shapes
that are all touching one another.
You might describe it even more pedantically
as a diagonal line, and then another diagonal line,
and another diagonal line, and so forth.
And so we really introduce students in CS50L to those layers of thinking
and what it means to abstract away details,
to actually get into the weeds of those implementation details,
especially when it comes to intellectual property and algorithms.
When a company has, for instance, filed a patent
to describe their algorithm, at what level
is their algorithm being described?
And where might there be ambiguity or opportunities for more precision?
We transition, of course, to programming languages,
as we've done in the other classes, here,
but more with the focus on, again, intellectual property
and the implementation of algorithms.
We introduce students to some actual code.
And we talk to them about compiled languages like C,
or assembly language to which C might be compiled.
And we also talk about machine code, because in the context of law where one
company might be claiming that another company copied its code or its
algorithms, helping an attorney understand at what level
we're discussing those similarities-- is it source code, machine code,
or somewhere in between--
can help them just better advocate on behalf of their clients.
We help them understand issues involving data.
The Y2K problem might be familiar to some of you when, back in 1999,
it was worried that it was about to be a big problem when
all of a sudden, the year struck 2000, because a lot of computer
systems at the time were using only two digits to store years.
So '99 might accidentally become '00, which might be confused by a computer
as 1900 instead of 2000.
So we help attorneys understand exactly why this problem came to be
and what it is a computer is doing that even creates
these kinds of societal problems.
We talk to them about real-world examples.
And you might recall this one from CS50x itself,
where a Boeing airplane literally needed to be rebooted after 248 days
because some engineer had not anticipated, it seemed,
the fact that you can only store a finite amount of information
with 32 bits, and indeed, after roughly 248 days,
would those 32 bits all get used up, so to speak.
They would all become one.
And if you count ever so too high when using a finite value like 32 bits,
you're going to wrap around, in essence, to a negative number or 0,
at which case, bad things could have happened with the airplane.
So we help students in CS50L understand how real-world technology
issues ultimately affect real-world products and decision making out
beyond the lab.
We talk to students, again, in more detail, not just about algorithms,
but data structures as well, how a computer can organize information
underneath the hood so that someone's algorithm is perhaps
better than another.
We introduce them to a few specific algorithms for searching and sorting.
Pictured here, for instance, is bubble sort, if familiar.
Or pictured here is selection sort.
So we talk to students at a little lower level than we do in the technology
or in the business class.
We also talk to students more concretely about languages like Python,
not to turn them into programmers themselves,
but rather to give them exposure to some of the features
of these languages like lists, and dictionaries, or hashes, or the like.
We focus a great deal on cryptography and issues of privacy and security
in the CS50L class, introducing students, like in CS50x,
the substitution ciphers like Caesar.
But we also talk about the flip side, the dark side of it all,
and frequency analysis, and how an adversary can maybe
attack your crypto system and figure out what
your plain text or original messages are just by analyzing what it is they're
intercepting.
We talk to students in CS50L about how password recovery might work
and why it's problematic if a website can just email you your password.
Odds are there are better ways of doing that.
And we help students think about just how a company can
be more or less secure than another.
We talk too about public key cryptography
and how this solves a problem that symmetric key cryptography
or secret key cryptography alone does not.
And though we don't get too much into the weeds of the mathematics,
we help students understand that there are problems that certain forms
of cryptography like Caesar cipher cannot solve.
For that, we need more mathematically sophisticated solutions,
fancier algorithms.
And we help students understand that sort of spectrum.
We also talk about the inverse, really, of encrypting information,
which is digitally signing it, and how a user
can use their same public and private key
to attest, with mathematical near certainty,
that they are, indeed, who they claim to be.
And then we talk about even more modern technologies,
are ones that are certainly all the more in the news these days,
like blockchain, and Bitcoin, and digital currency, more generally.
We continue the conversation about cyber security more generally,
even talking about hardware and what it is
that might be vulnerable in physical devices to interception or theft.
We talk to students about what it means to actually "delete" files,
and what it means to empty the recycle bin
or empty your trash can on Windows or Mac OS,
and why that's not really doing anything to cover your tracks
or ensure that no one else can see that same data.
And we help students understand exactly what protocols a company or a firm
should have in place to protect clients' and employees' own data.
We talk too about how data can just be intercepted, certainly with Wi-Fi,
and 3G, and LTE, and other technologies, in the air, so to speak, around us.
And then we too spend time in this class on internet technologies and cloud
computing, but not so much from a decision-making orientation,
but rather, from an understanding.
And we talk in the abstract about how data gets from point A to point B.
We talk with students about issues like scalability
and how you can have maybe one relatively small,
cheap server, or one very big, more expensive server,
or maybe some amalgam in between, talking
about concepts like horizontal scalability
and vertical scalability in the enterprise.
And here too, we talk with students about more modern technologies
like virtualization and containerization,
and how those technologies actually make possible cloud computing
and how there remain potential security concerns.
If, at the end of the day, your data is on the same physical server as my data,
even if we have these software-based firewalls in place,
at the end of the day, there might be certain regulations
or certain legalities that mandate that, no, our data needs
to be on physically distinct servers.
So for our legal audience, do we help them understand those tradeoffs.
We introduce them ultimately to a bit of web development too.
And they get some exposure to HTML and CSS,
not so much toward an end of making their own web page,
but just to understand what it is that HTML and CSS enable,
and how it is that HTML and CSS can be viewed by anyone on the internet.
So if you're worried about intellectual property,
anyone can just see, via view source in their browser, all of the HTML,
and CSS, and maybe even JavaScript that you wrote.
And we help students understand that this is actually the result of a design
decision, not a flaw per se.
And so companies should think about their intellectual property
with those digital constraints in mind.
And we also give students some understanding
of event-based programming and how the clicking,
and dragging, and touching, and tapping that we do with our devices
these days maps to certain programming primitives.
And we do spend time talking about database design
too as it relates to how a client or a company might store its data.
We talk with them about the various data types
that drive the underlying storage of that data and how it makes--
has potential impact on real-world scenarios as well.
And then we also talk about slightly more sophisticated solutions
to real-world problems like race conditions
so that money doesn't disappear in someone's account
or your data doesn't get out of sync with itself
because you simply have too many people doing too
many things at one time on your server.
So we talk about primitives like locking and transactions
that tend to be solutions to those kinds of high-traffic problems.
And then toward the end of the class, we come back to cybersecurity,
because students, at that point, would have
had even more exposure to a number of computing primitives,
via which they can now think about issues of security.
We talk about issues like denial of service attacks, what
those are, how you can wage them and defend yourself, hopefully,
against them.
We talk about SSL, or these days, TLS, the technology that gives us HTTPS.
We talk to students about more arcane hacks or attacks,
like cross-site scripting, where an adversary can potentially
inject code into your website that you didn't intend to be executed by users.
And we talk about cross-site request forgeries, another more sophisticated
attack, that might trick a user on one website
to find themselves suddenly on another.
And again, we give these examples to students
so that they understand what kinds of threats are out there, and ultimately,
and more importantly, what design aspects of computing
they are the result of, conscious design decisions
by those who architected these systems.
We talk too about the storage of our passwords in databases,
and how you had better not see your password in pain text in a database,
because if it's compromised, it's going to be they're potentially in the wild.
We talk about SQL injection attacks, and man in the middle attacks, and even
phishing attacks as it relates to folks' privacy and security.
And then at the very end of the semester do
we focus on a few legal cases and a few legal primitives,
talking about challenges and the intersection between law
and technology, open-source software and licensing,
how you should think about the availability of it,
the security of it, versus developing something in-house yourself,
talking about disruptive technologies and how
a lawyer and how the law more generally can at least respond to changes
in technology even before the law itself might catch up,
really modern issues like the printability of weapons
and how they can evade detection because they're
no longer metallic, but plastic,
and what the implications are for sharing information
about creating these things versus actually creating
these kinds of threats.
Talking about digital privacy and tracking more
generally are very much in vogue these days in the media
when discussed in the context of social networking sites and beyond,
and then of course, AI, which is a burgeoning field
with some very real-world implications.
You can imagine a programmer nowadays maybe
having to write code that decides whom to hit with a car.
For instance, if a self-driving car is barreling down the street
and there is two people to the left and right,
you can imagine there being a line of code
that needs to make some decision as to whether to swerve left or right.
And that, of course, might have very real-world implications
for the victim, not to mention the laws surrounding those kinds of decisions.
So the world is increasingly getting very complicated
when it comes to these intersections of law and technology.
In Europe and elsewhere are there increasing regulations that govern
privacy and protection of one data.
And then net neutrality, of course, keeps
coming up again and again when it comes to who governs and how the internet
itself is governed.
So at the end of CS50L do we similarly have an exam.
Here, for instance, if Brian wouldn't mind pasting the URL,
is a sample exam at term's end.
And then week by week do we also have assignments,
similar to CS50B and CS50T, that you can adopt or adapt
in some form for your students on a daily, or weekly, or some other basis.
And before I give you a bird's-eye view of all three of these courses together
to help you think about the similarities and differences,
any questions or comments on CS50L specifically?
Farid?
FARID: I just have a question.
So with CS50x, we will use check50 and submit50
to check the students' correctness, if that's the write way of saying it.
But with these three courses, is it up to us
as the teacher to check if the answers are correct?
DAVID: Correct, it would be, because all of the--
almost all of the questions are short answer and not machine gradable.
They are meant to be examined or audited by human eyes.
Automated feedback is less possible.
You could, for instance, convert some of the questions,
if you so choose, into multiple choice or true-false.
And then something like Google Forms could automatically
score those for you.
We have generally avoided doing that, because we would really
like students to put into their own words their thoughts on a question.
FARID: Yes, also agree with it, because the multiple choice is--
they can just pick and not think about the answer.
DAVID: Agreed.
So it's more work for the teacher, but we
hope a better outcome for the students.
FARID: OK, thank you.
DAVID: Sure.
Ramon, question or comment?
RAMON: So over the last two weeks, I have
been looking for a friend who is a lawyer in order to help
me produce the CS50 for Lawyers.
And I tried not to cite Harvard's name in order to not bias them to help me.
And I would like to ask if taking CS50 Introduction to Computer Science, which
is the main course, and CS50 for Lawyers is
enough to prepare him to play Doug's part in the lecturing of the course.
DAVID: That's a good question.
Maybe.
I mean, Doug went to law school for three years, practiced
law for several years as well.
So he has background that I don't have that I'm guessing your friend might not
have, in which case we would probably be doing Doug a disservice if we said,
just watch these videos and you can do what Doug does.
So I would decide for yourself.
I do think Doug did an amazing job at creating
the assignments for those modules of the class
and for creating the materials by which to lead discussions.
So I suspect that your friend might not be able to offer as deep conversations
on some of those subjects.
But certainly, if he follows in Doug's footsteps,
he could certainly use those materials, but I don't think that course alone
would turn them into an attorney.
David, over to you.
DAVID LANE: Yes, I was just wondering, with each of these three courses,
are the unit lectures typically an hour in duration?
DAVID: They're highly variable.
I would say they're generally between 45 minutes and two hours
depending on the subject, and the material, and the course.
DAVID LANE: OK, perfect.
Thank you.
DAVID: Sure.
Back to Ramon?
RAMON: I think you misunderstood.
My friend, he is a lawyer.
DAVID: I see.
I missed that detail.
So then, yes, I would retract some of what I said.
And I would defer to his judgment.
If he watches, especially the CS50L class,
and does the assignments for his own practice and exposure,
then I would defer to him as to just how comfortable he
would be with the material.
Doug's material might skew a little toward the US and US-based cases.
But we tried to keep the course more broadly focused on the law,
in general, looking at issues in other countries as well.
So I think it's quite possible, but I would defer to him.
And please feel free to reach out to me or Doug to ask more specifically.
RAMON: I have actually emailed Doug this weekend.
So maybe he will help me with additional reading for me and my friend.
DAVID: OK, sounds good.
I'll mention as much to him as well.
Well, before we adjourn officially, let me just
give you a final top-level overview of these classes.
Pictured here, for instance, are summaries, then,
of the syllabi of all three of these classes, CS50L,
again, going into more depth on several of the concepts.
And allow me to just color code which sections of each course
is similar to a section of another course.
These are not perfect correlations, because some courses, as mentioned,
go into more or less depth than the other.
But as you think about whether any of these classes
might be of interest to adopt or adapt, you can at least
see some of the commonalities.
And indeed, there is enough colors on the screen
here that it probably wouldn't be an ideal use of students' time
to, for instance, go through all three courses,
because there would be non-trivial overlap.
So you could imagine adopting one of the classes, or one
class for a different type of student and another class for a different type
of student, or, for instance, starting with one class, CS50T,
but if you'd like to add into the mix technology stacks and cloud computing,
you could borrow those materials from CS50B.
As is the spirit of CS50x, teachers are welcome to adopt or adapt any
of the courses' materials of interest.
So that goes for these three courses as well.
Allow me to remind you, if you wouldn't mind,
and if, Brian, you wouldn't mind pasting this URL into the chat,
we would love to get your feedback on this session, as with past sessions
as well, if you could go to URL here before logging off today
and just take a few moments to give us your anonymous thoughts.
But allow me to officially adjourn us here for this session.
Tomorrow we'll be focusing on CS50's introduction
to game development with CS50's own Colton Ogden.
And then on Wednesday and Thursday will Brian
be introducing his course on web development
and artificial intelligence, respectively.
But so nice to see everyone here.
We'll officially conclude here.
But I'm happy to stick around for one-on-one questions.
Thanks so much for joining us today.