GUY WHITE: And hello, everybody.
Welcome to teaching CS50, Practice with Pedagogy.
I'm Guy White, one of the long-time teaching fellows here at CS50.
And I'm so excited to be joining all of you
from around the world here for this educator workshop in 2024.
So to begin our time together today, I know that so many of us
are here and so many of us are here live, here on the camera.
Some of you, of course, are listening more passively today.
If you'd take a moment, go ahead and let's head to the chat box together.
And I'd like you just to take a moment, if you
would type in the country from which you're joining us today
as a quick warm-up as we say hello to one another today.
Thank you so much.
I see lots of people from the USA, Brazil, Iran, the UK, Egypt, Uganda,
South Africa, Latvia, Bangladesh, Singapore, India, Canada, Thailand,
and on Turkey.
My goodness.
And so many others.
I'm so happy to be joining all of you here from beautiful Portland, Oregon,
here in the United States.
And we're all here in service of many things today.
Like, first of all, we're here in service of you.
We're here in service of helping you either adopt
or adapt CS50 curriculum, technology, and pedagogy into your own classroom.
But really, we're here because we're here on behalf of our students.
I want you to think about all those people
that you're serving daily in your job as an educator.
Many of you have--
there are many of you that have even joined today
that have the aspiration of becoming a teacher in computer science.
I want you to picture the students that you are working with
or the students that you will be working with in your classes.
There's a few of you that we've been talking
in the chat box that have just been told-- the summer is just ended--
or the summer's just started in terms of your teaching year, and you're off,
and you've just been told, a couple of you, that you're
going to be teaching computer science for the first time
starting in the fall when you return to school.
And so many of you are here because you want to serve your students,
but there's many of you also that are here because you're
feeling like-- you're feeling lost.
You're feeling like you want to understand how you can best
teach computer science to your students and how
to make the best of the situation that you're
in with the curriculum, the technology that you have at hand.
And so to begin this, rather than hearing more about your teaching
context, because we've heard so much already from you and your survey
response, I'd like to take a moment and I'd
like you to think about, who is the best teacher that you've ever had?
I'd like you to think about some teacher in your life
that has had a major impact upon you.
One of my teaching values is that no one gets anywhere without a teacher.
Every human on the planet has had the advantage
of a teacher at some point in their life.
I'd like you, just in service to you, but my goodness,
just to honor the legacy of that teacher, take a moment
and go to that chat box, and I want you to type in the last name
or the first name potentially of that teacher
that has had such a profound impact upon you.
Name that teacher there in that chat box.
As you're doing that, I want you to think about that teacher.
I want you to think about what made every other teacher not
reach to the level of this one teacher you have in mind.
There was something special about that educator.
Perhaps it was the way that they engaged with you one-on-one.
Perhaps it was the way that they taught.
Perhaps it was the way that they were in the room
and very present with their students.
It's possible that your teacher helped you overcome adversity in your life.
And dare I say, much of what that teacher
did that made a difference for you did not cost thousands, tens of thousands,
millions of dollars.
Instead, it was something that they were able to give from themselves
free of charge in some way.
They didn't have the best equipment, the best laptops,
the best internet connection potentially,
but they had something within them.
And that today, that something within you
is what we're going to be focusing on, because go figure.
What helps in your teaching is great curriculum and great technology.
But in fact, it's the great pedagogy, the working with students
that really makes the difference.
And I just want to say, as I could not read all these names out here out loud,
but I just want to say as I'm seeing this,
I'm just so honored to be sitting amongst these names that
are sitting here in this chat box, because what
a beautiful thing to conjure as we enter this time together
to talk about pedagogy.
So I want to welcome all of you.
I'm so excited to be here with you today.
So let's begin by talking about pedagogy itself.
What is pedagogy?
Basically, the question is, what is teaching?
Take a moment.
Go to the chat box again.
Type out your definition.
What is pedagogy?
What is teaching in your mind?
Think about it.
There are teachers that they go and they present.
There are some teachers that go and they facilitate.
There are some teachers that work in the classroom and they serve.
And looking at this, many of you talk about the method
of teaching, the science of effective teaching, the behavior
according to a student's situation, how to create a learned situation,
sharing a set of skills, sharing what we know.
I got a long--
[LAUGHS] I got a long response from one of you that I can't read.
But basically, what I see there is giving
the right steps at the right time.
And the key to a new world of having students that we've never seen before.
These are all things that are pedagogy.
For the sake of our time here today, we're
just going to say that pedagogy has something
to do with facilitating fun, engaging students in some way,
and then providing them content and having them come back with content.
We'll get back to the definition of pedagogy a little bit later,
but generally, pedagogy is what we teach, how we teach in a certain way.
You know, you imagine there are times in your life
where content has been available to you in many different forms
about the same subject.
I mean, right behind me here, right past my duck,
I have a bunch of computer science books.
And those computer science books, before I came to CS50,
I had little programming knowledge, but I
had loads of books back there about how to program.
And I thought, oh my gosh.
If I just read this book and implement what's in this book,
everything will be right.
Everything will be OK.
And then I'm sitting there with a book.
And for me, as a learner, I'm reading, and this just doesn't-- it doesn't work.
I went on to a couple--
I went on to YouTube and I found a couple lessons and I went to a couple
competing websites and things like this to discover what would work for me,
and it just wasn't working.
But then I found a teacher and I found a curriculum, a pedagogy,
and a technology that were working together
in a way that allowed it to click for me really for the first time.
And many of you who've been exposed to the CS50 curriculum
have had that experience for you as well.
In the end, though, pedagogy's an interesting thing.
In CS50, in the introductory weeks, we talk about--
we talk about the idea of an algorithm.
And we discuss the algorithm as this idea of a black box, a black box where
we provide an algorithm, something, and then what spits out is something else.
You can imagine, for example, that we hand perhaps a certain word
to an algorithm that checks for the spelling,
and it might output true or false.
Is it spelled correctly?
And in the end, pedagogy is a lot like that.
Pedagogy is, we have a certain set of tools
and we have a certain set of skills, and we have our curriculum that we have.
And we are somehow interacting with our students,
and we're doing something special there in that black box.
And then the outcome hopefully is that the students are doing well
and they actually learn the material in some fashion.
And I like what Abel says in the chat box.
The idea of delivering learning experiences
is going to be particularly important today.
So in our presentation today, we're going to be really hitting three things,
three presentations all in one.
First, we're going to be talking about pedagogy specifically.
What is it?
How to implement it.
We're going to be talking about instructional strategies, which
is the actual doing of pedagogy.
And then we're going to be talking about your teaching values and
how you can leverage your teaching values to be really
the best teacher you can possibly be.
So if you would, in that chat box, as I'm queuing up this next slide,
I want you to tell me how many years you've
been a teacher in computer science.
Go ahead and type out a number between 1 and infinity.
How long have you been a computer science teacher?
And lots of you, by the looks of things, have been a computer science
teacher for less than five years.
But I do want to say that we have many seasoned people that are here as well.
And you know, the interesting thing is-- and what I love about teachers,
regardless of how many years of experience you have,
the reality is that you can accumulate and collect new strategies
as you see other teachers teach.
And frankly, enthusiasm and seeing how other people go about their work
is really powerful.
Because teachers-- I wish I could grab-- right across the room here
I have a tool box.
I wish I'd put it over here because teachers are
a lot like people that have tool boxes.
You can assemble-- you have your set of tools that goes in that tool box,
but over time you accumulate more and more tools.
And one tool that we will be using today is what we call the KWL chart.
So the KWL chart is-- if you imagine if we were in a physical room, what
we might do is we might take a piece of paper like this,
and we might fold it into three columns.
And indeed, when I'm working with students on ground--
and perhaps we're not-- we don't have access to laptops
and other forms of technology.
Maybe we're using paper alone.
We would fold them into three columns like this.
And at the top of those columns, we would talk about--
we would put the column name of Know, as in, what do we know about this topic
already?
And then we might have something called Want To Know.
What are the things we want to know?
And then at the end of the KWL chart, we might
have what we call Learn, what we did learn as a result of our time together
today.
And so what we're actually going to do is
we are going to take on the spirit of this KWL chart,
and it's the spirit of this KWL chart by downloading this file.
And I'm going to put the link there in the chat box for everyone as well.
And using this link, you'll download your own copy.
You can go and it'll take you to a Google doc, of course.
And there, what you can do is you can go up to File and make a copy.
File, make a copy.
And you'll have your own copy of your KWL chart.
And what I'd like you to do is under that No column--
go to that No column there.
And I'd like you to write down just a couple words.
What are some things in teaching you know that works really well?
Right there in the chat box, you can find that link.
What are some things that you know really well about teaching,
that you know that works in teaching?
And through our time together today, and perhaps even right now,
I'd like you to go to that Want To Know section, and I'd like you,
please, to go ahead and write down some questions perhaps
that you have about our time together today.
And-- most definitely.
For those of you asking about sharing access for the link
I provided a few times there, do know that you can go to File and make a copy,
and you'll get your own copy there in your respective Google Drive.
Or you can download a copy if you wish under the File menu as well.
And so this is a reflective tool, and it's one of the teaching strategies
that we're going to be using today is by writing down what you know
and what you want to know, you're actually taking part
in your own learning in a way, right?
You're guiding your own learning.
Because this is an interactive session, we
have an opportunity to take your questions live.
So we'll be looking for your questions there
in the chat box as we go forward today.
So this is the use of the KWL chart.
Thank you so much.
So let's jump into pedagogy together, our first presentation
of three big things today.
So pedagogy generally, generally is the process
of facilitating learning, or facilitating the process of learning,
I should say.
And if you think of learning as a process,
it's really much easier to see what your students need at any given moment
because many of you who are teachers, you've
had a student come to you from a previous year or a previous teacher,
and you've noticed that there's gaps in that student's learning.
There are some deficiencies of what you might
expect that they might have coming in.
And so you might even say, that student didn't learn x, right?
Whatever that x is in some way.
And so you might say, the student didn't learn what
they needed to in the previous class.
And so therefore, when they come to my class, ah,
they're not going to do very well perhaps because they
didn't know what they-- they didn't bring into the class what
they should have known.
Now, you know what the hard part is, though, is that when you're a teacher
and you have a student that comes to you that
doesn't have the previous knowledge that's
necessary to take on this lesson or this class that you're teaching,
you have a choice.
You can leave that student completely on their own and really decide,
I can't help them in some way.
Or you could take it on yourself as a teacher
to say, it's on me to help this student get from point A,
where they are now, to where I would like them to go as a learner.
If you imagine every student that walks into your classroom,
they are all coming in with different levels of previous learning, different--
all different prior knowledge.
How is it that you want to work with those students?
Do you want to be the type of teacher that says when the student walks in,
ah, you don't know what you-- you don't know what you should know.
I don't know if I can help you.
Or do you want to be the type of teacher that says, welcome.
I'm so happy that you're here.
Oh, I see what you know from before, and I'm
going to help you and get you into this new thing.
And so of course, my imagination is if you're sitting here today,
you are one of those second types of teachers
that want to bring their students from where they are today to something new.
And indeed, there are different levels of learning
because not every student comes in to your classroom
with the same level of knowledge.
But even if they all did, we still have to know that learning
progresses in a certain way.
So if you imagine you're teaching a very fundamental concept, a concept like--
I don't know-- variables inside computer science,
inside programming-- you can imagine where you would
have to start at a very low level.
You couldn't just say, OK, here's how we program variables.
You'd have to first define what a variable is,
because without a definition we couldn't do anything, right?
We wouldn't know what this thing is.
We know that it seems important because the teacher's talking about it,
but how do we use it?
So we have to start at the definition level.
We have to tell students what a variable is, in this case.
The second level of learning is describing.
And so we teach our students by taking that definition
and adding on some words, some padding, some understanding to that definition,
such that they understand why perhaps a variable or whatever
the term is that we're teaching is important to them.
And then from that, because we now have a definition,
and now because we know what it's generally used for
and why it's important, we then can explain.
And we can explain by providing examples in some way.
And examples would be by showing.
In this case, for variables, we'd be showing actual variables themselves.
Above explain is the idea of comparing and contrasting,
showing the similarities and the differences perhaps between this concept
that we're learning and other concepts we have learned in the past.
We're taking this idea of a very basic idea up to a higher level
by allowing students to compare and contrast those two things, whatever
those things are.
You know, an example might be just a moment ago,
I was talking about pedagogy.
I defined pedagogy.
I allowed you an opportunity to describe in your own words what pedagogy was.
I talked through some examples of what pedagogy
could look like in the classroom, and many of you
provided examples there in the chat box.
And even just a moment ago, I compared and contrasted certain ways of being
and certain ways of heart around pedagogy,
between being the teacher that doesn't really
care what their students know before versus the teacher that cares a lot,
right?
By comparing and contrasting two ways of thinking around this.
And so the next level is the synthesis level of learning.
And the synthesis level goes beyond just comparing and contrasting, but says,
I can use this new concept with other concepts that I've learned,
and I can use them together to do something new.
And in fact, that leads us to the highest level
of learning that we're going to learn here, at least in our time together
today, which is creating.
I'm going to go and I'm going to create something.
For those of you that have gone through the CS50 curriculum,
you can see how we've actually gone through these different steps
of learning together.
Because in the CS50 curriculum, in your first time being exposed-- perhaps
in Week 1 of CS50x, you're being exposed to C for the first time,
you might not have ever encountered C or syntax within C at all.
But through the opening we define what C is, what the fundamentals of C
are in terms of syntax.
How to do something like printing Hello, World.
We describe the process of printing Hello, World.
We show examples of how to print--
how to print Hello, World.
And later on, for example, in Week 6 of CS50x when we get into Python,
we compare and contrast the ways of using C
to print Hello, World versus Python printing Hello, World.
And then what do we do with that?
Well, we go and we create and we work and we do problem sets
around those different ideas.
So you can imagine then if we're working through algorithms.
So this is the interactive portion of our time together.
So if you go to the chat box--
so if you can imagine, we have the idea of algorithms,
and we have the definition of algorithms would be first, right?
So what is an algorithm?
And then we would describe the difference.
What are different algorithms, perhaps?
Moving up our levels of learning to explain,
we might explain each step of the algorithm.
In the compare and contrast stage, we might ask, well,
how do two algorithms differ?
Here is algorithm A and here's algorithm B,
and what are the differences between these two?
And then we could say, here is how industry is
using each of these algorithms perhaps.
And then what we could do is we could create your own algorithm.
So notice that this is like the taxonomy of learning, taking someone
from the ground, not knowing anything all the way up.
And so let's have you try this.
So in the chat box, what I'd like you to do
is let's talk about loops for a second.
For those of you that are uninitiated, a loop is just something that repeats,
and a loop is used in programming to do a repeating action in some way.
And so what I'd like you to do is for define,
let's see, could you go there and go to the definition-- or go to the chat box,
I should say, and write down a question that you might ask students about loops
that gets to the definition of loops.
What's a question you might ask a student
to see what they know about loops from the ground up at that definition level?
And for those of you asking, absolutely, you can get access to this presentation.
We're going to be sending out a link to the presentation and so on afterwards.
Definitely.
OK, perfect.
Yeah, absolutely.
So a question-- questions that are really great at the definition level
are, what do you know about loops already?
Or what is a loop, right?
Or what is a loop--
what does a loop do?
This is really good.
These are good opening questions that you might ask.
Now, the describe level is quite similar.
You might ask your students--
what if you might ask, what does a loop do if we show it like this?
Yeah, that's right.
So we have a piece of code that looks like this.
What does this loop do?
That's the description level.
Then what we could do at the explain level, you might imagine.
So you could ask them to show examples, right?
So yes, exactly.
You could have them actually iterate over a piece of code themselves
by having them physically, maybe with their pencil
or their pen-- this is a great suggestion in the chat box--
by going down and actually having them walk through the loop.
Move my pen one, two, three boxes, and then go back to the beginning.
One, two, three boxes.
Very good.
And then at the compare and contrast level with loops, what you could do
is you could have them say, look at loop A and look at loop B,
and what's the difference between these loops?
And what's the same between these loops?
An activity we do in my sections for Python, in loops in Python
is we look at--
we look at a for loop as it's implemented in C,
and then we look at a for loop as it's implemented in Python.
And we look back and forth between, what are the differences that you see here?
And there are some absolute similarities,
but there are surely some differences.
At the synthesis level, you might actually
have them show how these algorithms-- these loops,
I should say-- are used in different programs
that perhaps we've already been exposed to in the class,
or we could show them blocks of code from other assignments or blocks of code
that we've pre-prepared and have them look
at the loops that are present there.
And then finally, we might have them create their own loop.
Most definitely.
Well stated there in the chat box.
Thank you.
And so what I'd like you to do now is I'd like you to go to that Want
to Know column of your KWL chart.
And indeed, if you didn't download it earlier,
perhaps you just write down something on your computer there or on your phone
or on a piece of paper nearby what you learned in this short section
that we just did about the levels of learning.
So looking here again at the pyramid, at the taxonomy,
think about how you approach your students.
When they walk into your room, do you expect them to already
be at a higher level in that taxonomy?
Or do you teach in such a way that it provides everyone in the room access
where every single student can walk in and get in on that definition level?
I don't know about you, but I've sometimes
registered for the wrong class.
[LAUGHS] I've been placed in the wrong class before.
And so I've walked into a classroom that is, like, a third-year, high-level class
on a certain topic, and I'm lost.
The first moment the professor opens their mouth, I'm like,
is this the right class for me?
And so we want to provide the opportunity
for every student to walk in.
And so think about that.
And yes, indeed, they are absolutely-- to the comment in the chat box,
there are absolutely steps that you walk students through.
All lessons should walk students from this definition level
all the way up to that create level.
Very well done, team.
Thank you.
So where then does the content that we're
going to be using our pedagogical skills to teach,
where does that content come from?
Well, the content can come from many places,
and this really depends on your locality throughout the world.
There are places throughout the world-- and I
suppose there are settings throughout the world where the teacher can just
invent what's going to be taught in the classroom.
However, many of you are working in places
where there are standards to which your teaching has to hit in some way.
That is, there are certain topics that you must cover in your content
through your teaching that are mandated by law or by policy.
And standards are the ways by which we usually do that.
For example, the Computer Science Teachers Association, the CSTA,
they have a series of standards, and the series of standards through CSTA
are a list of computer science skills that students should learn,
and in fact, how teachers perhaps should interact with students in teaching
those computer science skills.
So it actually tells us what teachers should be teaching
and what students should be learning through their work in computer science
curriculum.
The College Board, of course.
I'd be remiss not to mention the College Board.
The AP Computer Science standards, the framework,
is also another set of standards that we often appeal to.
And especially within CS50, we are very sensitive to this
because we have many students throughout the United States
and abroad use AP Computer Science standards as the way by which they
can go and they can take a test to get college credit for their high school
work in computer science.
And then lastly, there's ISTE, the International Society
for Technology in Education.
And they've taken a bit of a different approach.
Rather than talking about individually what specific computer science skills
down to the algorithms, the loops, all those types of things,
they've taken the approach of looking overall what type of learner
they want the students to be, and there are standards for that as well.
Now, you can get--
so an example, like, what does a standard even look like?
So now that you know what a standard is, a standard
might look something like this.
And this is given to us courtesy of the College Board
in the AP Computer Science curriculum.
This is a standard about algorithms and programming.
And so literally, the standard, almost like a law or a policy,
has an actual number.
3A-AP-13.
And in this specific one, it says it's to create prototypes
that use algorithms to solve computational problems by leveraging
prior student knowledge and personal interests.
Now as a teacher, that's really useful to me
because if I was just-- and many of you, by the way, like I mentioned,
have just been told that you're going to be teaching a computer science
class for the first time.
And you're like, what am I going to teach?
What am I going to do?
And it's standards and lists of standards
like this that are really great to leverage
because it tells you exactly what you need to be teaching in your classroom.
Many of you are seasoned teachers that have been really just
working in the classroom and creating whatever you can
because no one's told you specifically what you should be teaching
in this computer science class.
And indeed, standards like these can be a really great way
of understanding, what specifically should I
be teaching in each of my classes?
Now, unless your school, your school district, your locality
mandates that you use these, of course you're not required to,
but they are exceedingly useful.
And notice that the standard, at least in the AP Computer Science curriculum,
provides some interesting annotation for that.
So what I'd like to do is I'd like to provide you access to those standards
here.
And there's the QR codes.
But in the chat box as well, I've put all the links there for you so that way,
you can access them if you'd like to do it via click instead.
And of course, at the end of our time together today and tomorrow,
we're going to be providing you access to the slides of these presentations.
So that way, you can get access to all of these, of course.
These are so useful for me as a teacher.
Now, as a teaching fellow in CS50, these computer science standards
aren't binding to me, necessarily.
It's not like there's a law or a policy that I have to use them.
But I tell you, when I'm working and I'm teaching students
about loops, when I'm teaching students about algorithms, the CSTA
standards and the College Board standards
and the ISTE standards are ones that I go to for inspiration of,
what are some good uses of our time when we're inside of our classes together?
For those of you that are mandated to adopt a standard in some way,
your lesson plans can use each of these standards as a guide.
Now, I'd like you to think about that for a second.
Let's say that you have some standards that you can leverage, that you can look
and you can say, OK, I want to teach this topic from this list of standards.
Well, what do you do from then?
Well, what you have to do is you have to lesson plan, right?
So let's do some lesson planning together today.
So what I'd like us to do is let's go to the chat box
and let's choose a computer science topic together.
Go ahead and type in any computer science topic that you love to teach.
That's my only requirement.
What computer science do you love-- yeah, and I see traversing.
That's actually one of my favorite things to teach.
I see data structures, arrays.
That's, like, my number 1 favorite thing to teach is arrays.
And then we have sorting.
We have packet switching.
That's not my area of expertise.
We have machine learning, we have sorting, we have loops,
we have accessing the DOM, we have UX and UI design, we have math for CS.
And just notice, that's amazing how all of you
just have your thing that is really important to you.
Makes me teary and excited in a way because all of you--
I mean, I'm so blessed that all of you have these different expertises
and these different cares because your students
are going to be exposed to different teachers over time.
And isn't it nice that all of our teachers
have different things that they care about?
Because your student's going to pick up on that care.
They're going to see that you care.
And because of that, they're going to want to work more.
They're going to want to learn more because they see that you care.
So what we're going to do is we're just going to pick one of these,
and I'm not going to pick something that's my favorite necessarily.
But let's talk about the idea of-- yeah, let's go with algorithms,
since that's one that so many of you said here today.
So let's go ahead-- and what I can do now
is I can bring up-- and let's do this.
So let's look at a lesson plan with one another today.
So what we have is we have a lesson plan template that I prepared in advance.
And of course, I'll be giving you a link to this in just a few moments.
And so if we talk about the level of education-- so let's
start with the level of education of our students.
So what level of-- let's go ahead and go to the chat box.
What level would you like to do?
Would you like to do high school, primary school, undergraduate?
Yep.
And sure enough, the vast majority of you are saying high school.
So let's do that.
Let's say high school is the primary level of education.
And then let's talk about the topic.
Well, the topic we're going to be teaching today is algorithms.
And what I can do then is I can choose one of these standards.
So let's go ahead and let's go there together,
and let's look for some standards about algorithms for high school.
And so if I go here to the handy dandy chart,
I can look at the framework of the AP Computer Science curriculum,
and I can see that we have these big concepts.
I'm just going to roll through, and I'm going
to go all the way down to where we get to algorithms.
And so I love how it provides all these different strategies.
So what we're going to do is--
all right.
So for example, I have this idea that one of the objectives
is that we have algorithms are precise sequences of instructions for processes
that can be executed by a computer and are implemented
using computer programming languages.
So that's one of the things that I want to make sure I'm covering in our time
together.
The specific learning objective is to develop an algorithm for implementation.
So I'm going to take that, and I'm actually going to drop that here
in my standards.
So this is the main aim of my time together with my students.
And did I do that correctly?
No, I did not.
Is it going to let me copy?
That's an interesting question.
Well, I'm just going to type it out.
Develop an algorithm for implementation.
So let's do that.
So develop an algorithm for implementation, OK?
Now, we don't know exactly what we're going to implement,
but we can do that shortly.
So that's our first step.
Our first step is to determine, what do we teaching with our students,
and what level are we teaching, and what standard
are we going to be using or leveraging in our time together?
So now that we have that in place, now that we know the topic
and we know the standard that we're going to be using,
let's talk about the process of actually lesson planning
and how then to go about a lesson.
The first piece of any lesson--
and you saw it here today, you saw it with David at the beginning,
and you saw it with me, and you're surely going to see it with others--
is the Into portion of a lesson, the beginning of a lesson
really introduces the lesson to the student.
And it asks them questions to tap their prior knowledge,
to get them thinking about the topic, preparing the students to learn,
and to generate excitement around that topic.
And I hope that you've really been seeing me model these four things as we
got into our time together today.
And so what I can do then is inside of our lesson plan,
we can go to into Into section, and I could just make some notes.
I can ask myself, first of all, what do students know prior to this lesson?
Well, I could say they know nothing, right?
I could say they have no prior knowledge, likely.
Now, if I was teaching later in the year, what might happen
is I might indeed have a situation where they have much prior knowledge
about algorithms leading up to this.
And then Into-- so again, I'm going to describe one or more activities
that I can use to tap students' prior knowledge to prepare them to learn.
So what I might do is I might do an opening question.
I might ask them, who has heard of the word algorithm before?
And then what I might do is I might do a pair share where students
speak to one another about the topic, about that question or about the answer
to that question.
And then what I could do is I could ask students--
whole class-- I could ask students to share algorithms that they already know
exist in the world in some way.
We have an algorithm here in my house called, make a grilled cheese sandwich.
My children will say, Daddy, I'm hungry, and I will go [LAUGHS]
and I'll go cook the dad's grilled cheese sandwich, which
has three different types of cheese.
The next piece of our lesson is Through part of our lesson.
It's the main component of our lesson.
The Through component of our lesson, the purpose of that, the Through component
is to get students to actually get into the material.
It's where we actually teach the content.
It's where we actually model the content of the students.
And what we're doing is we're giving the students the opportunity
to exercise more and more independence with this topic that we're teaching.
So you can imagine how in a class where I'm
teaching about our lesson, where I'm teaching about algorithms,
how we can begin by what I could do is I could define algorithms, right?
I could define the algorithm.
I could show examples, right?
I could code my own algorithm.
And that's all by me presenting to them in some way.
What I could then do is I could do a group activity in some way.
I could do a group activity where students work together
to match specific algorithms to their names.
So perhaps I have some pieces of paper that are cut out or some pieces of code
that I give to them.
And I say, what algorithm is this?
What's the algorithm doing?
Let's name each of the algorithms, right?
And then what I might do is I might do another group activity that we might
call more of a group investigation.
Where a group activity is more people collaborating and talking about a topic,
a group investigation might be actually them going and doing some creation,
creating something together.
And they might create your own algorithm together.
And so by doing that, they're becoming more and more independent.
At the beginning, I'm teaching them through direct instruction
or I'm showing a presentation.
But then through group, they're working together on a topic
and they're learning more.
And then on their own--
that is, with the group-- they're creating their own algorithm.
And then finally, individually what I might do is on your own,
I might have them take a test or a quiz.
Or what I could have them do is I could have
them create a short presentation about what you know about algorithms.
So each student then on their own has their own independence
to go and talk about now specifically for them,
what do they know about algorithms?
So that's the meat of the lesson, I suppose.
And then we get to the final piece of our lesson,
and the final piece is the Beyond section.
And so in the Beyond section, we summarize what was learned.
We provide students with the opportunity to reflect,
and we create anticipation for future lessons in some way.
We almost want to preview and tease.
And if you listen to David's lectures, usually right there at the end David
will provide a bit of a one-sentence-or-two teaser about
what's coming next and how we're going to apply the work that we did today.
And then go figure.
At the beginning of David's next lecture,
he has students recall prior knowledge and then talk
about the topic that is at hand today.
So the Beyond portion of this lesson might be something
like, we could summarize.
We could do some direct instruction where
we do a summary of what was learned for the day.
We ask students to reflect, right?
We have them go to perhaps their KWL chart like so many of you
have there open on your systems today.
And you could ask them, the students here the question,
what did you learn about algorithms today?
And then lastly, what I could have them do is I could have them hypothesize,
what do you think will come next in our learning together?
So now that they have learned about algorithms,
what might we do with that when they come back
to school tomorrow or next week?
It allows students to get that reflective
thinking already happening about the connections between what
they're learning now and future lessons as well.
So notice what we were able to do here, team.
We were able to take a standard, and we were able to take a topic
and build out a lesson based upon that standard, based upon that topic.
Now, I'd be remiss to say that throughout our lesson planning
and throughout our time in working with students,
we have to provide many levels of support to our student throughout.
There's many ways to provide what we call scaffolding, and scaffolding
basically is providing supports.
Like, if you imagine the side of a building,
there are many cathedrals throughout the world, many buildings
that you've probably seen on the news
as of late that might have scaffolds on the side
to hold up the building as they're building and they're making a project,
they're finishing a project.
And so that's supporting the building until it's
strong enough to support itself.
And scaffolding in learning is a lot like that.
Scaffolding could be in the form of sensory scaffolding.
For example, you and I are talking here today.
I'm purposely varying my voice volume.
I'm varying my tonality.
I'm actually using slides.
And I'm not just using one slide.
I'm switching back and forth between multiple windows?
I'm drawing you over to the chat box, things like this.
And in just a few moments here, we're going
to be going to some group breakout sessions
where you're going to be doing some lesson planning together.
And so I'm providing sensory opportunities for you
to be involved that otherwise may have allowed your learning
to be less so if I just was audible.
I mean, imagine if there was no video at all.
It was just my voice booming over your speaker right now.
There's graphic scaffolding as well, right?
There's pictures that I'm using.
There's context clues.
It is no mistake that I have the duck back here.
It's a way of making your brain light up and become more alive.
There's ducks throughout this presentation.
There's been a few hidden ducks if you've not seen them already.
And the graphic presentation of the actual presentation itself is one.
And later on, when you have access to these slides,
that's going to be a way for you to recall your learning
and to learn even more deeply.
And of course, this is a very interactive session, most definitely.
And so this interactive session is one where it's not just simply
you sitting and you going into a coma [LAUGHS]
as you're downloading whatever I'm saying.
Instead, hopefully you're interacting and engaging as time goes on.
These are all ways to scaffold and support your learners.
I'd also be remiss if I didn't mention assessment too, which
could be a whole different topic.
You know, assessment is usually thought of as,
how do I test my students to make sure they learned something?
And yeah, that is one form of assessment.
But as educators, there's really three main moments
that we perform assessments, whether we're conscious of it
or not as a teacher.
Indeed, there's formative assessment.
Formative assessment is looking at, what do the students
know as they're coming into a lesson or as they're beginning a lesson?
And by me getting feedback from you in the chat box,
I got a sense really quickly of who was in the room.
Where in the world were you?
That gave me an idea about what sort of challenges
you might be facing in your classrooms, by looking
at the level of teaching that we might do today, whether it
was high school or undergraduate level.
I learned that so many of you are from the undergraduate level,
but I learned that even more of you perhaps are from the high school level,
or at least there's more of you being vocal in the chat box
than are from the high school level today.
And by doing that, I was able to discover much about what you are doing.
And not only that, but by providing you the KWL chart,
I was able to learn a little bit about what you know
about learning and pedagogy already.
There's process learning, which is by checking in with the student.
That's another form of assessment where during the assessment--
during the lesson, you can actually check in with the students
to see how they're doing.
Sometimes if you're in the physical classroom
or if you're in an online environment, that could be stepping into a group
or stepping into a breakout session to monitor
the interactions as it's happening.
You can also have students perhaps answer some questions.
You might ask them directly some questions
to see how they're learning as well.
And then finally, there's summative assessment,
which is what we all think about when we think about testing and assessment is
at the end of the lesson, what did the students learn?
Indeed, what did they learn?
And so that way you can determine, is my next lesson
going to be the next piece of material I was planning on doing?
[LAUGHS] Or is my next lesson simply going
to be a repeat or a bettered version of what I just did?
Because it's possible that students might not learn what
an algorithm is on the first go round.
I hope they will, but maybe they won't.
And so am I going to leave them behind if they didn't learn it, or am I
going to go back and am I going to allow them to have the opportunity for me
to teach a little bit more deeply?
The purpose of summative assessment-- you know, it's interesting.
We're teachers and we have classes, and we have grades.
That is, we provide a grade or an outcome for the class.
Did you pass or you fail, or did you get a letter grade, A, B, C, or D,
and so on?
That's one form of assessment.
But also, there's knowing, how did our students perform
such that I as a teacher can look at myself
and say, what do I need to make better for--
how do I need to teach better for my students?
See, the summative assessment is not the penalty
we give students for their performance or the award
we give for their performance.
Summative assessment is best when it's a hint about what
you need to do as an educator to help your students more in the future.
There are many different instructional strategies that you can use out there,
and we're going to be talking about many of them.
You know, generally, instructional strategies
are the methods by which you facilitate learning,
and we've been talking a lot about those today.
There's direct instruction.
Direct instruction's where you're talking to your students
and you're delivering the content, much like I'm doing right now.
And this image is really appropriate for direct instruction
because you're basically being seen as the authority.
You're the sage on the stage that is the authority and the leader on this topic
and is giving the material out, but it's very low interaction, typically.
You might ask students questions, but generally speaking, direct instruction
is you talking to them, right?
And so on.
And I'm seeing some playful comments in the chat box about the rubber ducks.
A think pair share is where you might say to a partner--
or you might talk to a partner and talk about a certain idea.
If you are in the room today, physically if you were in the room with me,
I would say, turn to a partner and talk about what you know about algorithms.
And I might give you 30 or 60 seconds.
And then what I might do is have you both share out, or one of you
share out what the group discussed.
Flipped classroom is probably one of my most favorite things
that we can do, and because--
and I would say that dare I say that CS50 follows a flipped classroom model,
is that many students do not tune in live here at Harvard College
or at Harvard Extension School live for lectures.
Many of you who have been exposed to CS50x curriculum
or any of the other CS50 classes did not necessarily
watch the lecture live when it was live presented.
But instead, you watched it separately.
You watched a recording of it.
And so what a flipped classroom is is where
rather than going to a classroom where the teacher sort of talks at you
for 90 minutes or more, the flipped classroom
is where you watch the lecture before going to the class.
And indeed, in CS50, we've implemented sections here at Harvard College
and also at Harvard Extension School where
people that come to section, rather than it being another lecture,
instead it's an interactive session where we're talking through topics
and we're working through group activities
to help the students learn more.
And the flipped model is really exciting because you don't have
to give the same lecture every year.
You could absolutely just simply provide a video to your students,
have them go home and watch the video, such that when they come to class
they're more prepared to interact.
Competition is another great instructional strategy that you can use.
It's surely one of my favorites.
Competition with play, I should say.
I don't like competition where it's an ugly competition.
I like a playful competition where teams of people
are working together towards an aim and there's a playfulness that's involved.
And indeed, at the beginning of our time together today,
for those of you that were here, we did the pixel art together.
And it's a playful--
it's not necessarily a competition where someone wins,
but it's a playful way of showing different outcomes for different groups.
And it sort of fits with that spirit in a way of playing together,
maybe competing together if you're trying to make a better
drawing than the other groups.
My favorite strategy in the whole wide world is what's called a gallery walk.
A gallery walk is you take a room.
I want you to imagine a room, a physical room.
This could be absolutely done in breakout sessions
as well and in a controlled environment where
you know how many people are going to be in the breakout rooms
and you know that everyone's going to participate.
A gallery walk is an excellent way of facilitating
even an online instructional moment for your students.
So imagine a room.
And what you do is you create stations or even
breakout rooms throughout the room.
So you might have four stations throughout the room.
What you could do is you could group students together.
You could say, OK, at each station, there's a different question.
I want you to imagine that physically on the walls of your classroom,
there were four stations.
And on each station, there was a question that students could answer.
And you could ask them questions about, how could they create an algorithm that
does this task maybe at station 1?
And at station 2, here's another task that I'd like an algorithm to do.
And what the students might do together is they go to the stations
together as a team, and they work together
to answer the question that's at that station.
And indeed, if you're physically doing it in the room,
you could actually write on a poster perhaps
on the wall, a piece of paper on the wall your answer to that question.
And what you would do then is rotate the groups between each of those stations.
In a breakout room setting, you can absolutely
do this where you can rotate people between different questions
or deliver questions to your breakout rooms
so they can answer them right there in one breakout room.
Another strategy is a group investigation.
And a group investigation is where specifically the aim
is for you to have the group create something new together,
but what you do with that is rather than keeping the group
all together at once-- so you have each group work together.
But then the twist on this is that you number off the group
and you have one member from each group go to another group
and teach the other group about what your group learned.
So what you could do then is you could provide five different concepts
to five different groups.
And then what you could do is you could move one group member for each group
into another group, and where they have to teach
the group what they just learned.
When I teach SQL and I'm teaching about--
when I'm teaching about how tables are merged together in some way,
there are different ways of doing merging.
And I might actually have a group together create a presentation,
and then I might have members of each group present to one another
in this way.
And so this is a really great way of interacting with your students.
So if you would, take a moment.
Go to your KWL chart.
And in that Learn column, what I'd like you to do
is write down some things that you think are really useful to the team.
Go ahead and write down those things that are really useful to you
that you've learned so far in our time together today as we transition.
So in a moment, we're going to be going to breakout sessions.
Just giving my team time to prepare for that, and getting you
prepared for entering into a breakout room.
So we're going to be engaging in a group activity right now.
And I want to say that there's many of you that are joining today
that might be in a different locale, and you
might be slightly intimidated about interacting, especially
via voice, with other students.
I want to welcome all of you.
Regardless of your English proficiency, regardless of your teaching ability,
regardless of your experience in computer science,
I want to welcome all of you to go into the breakout rooms
when the time comes, when I say go.
And I want you to know that we're in an environment of total support.
So for those of you that are in the class that go to the breakout rooms
and that you are on video, let's be extra mindful of individuals,
perhaps in the chat box in your breakout room, that may wish to contribute,
but don't feel confident enough to be on video
or don't feel confident enough to use their voice to speak to you.
So instead, let's make sure that when we go in
that you have the opportunity to look at the chat box.
And so that way, you can--
so that way when you go and you join a team,
if you want to participate, go into those chat boxes and participate.
For those of you that can speak via voice, that is absolutely preferred,
and please definitely do that.
So we're going to be breaking off in a few minutes to a series of groups.
Here's a list of the different groups we're going to be breaking out to.
I'd like you to look here and decide upon a topic
that you find really interesting, one that you would like
to go and work with a team on today.
You're going to actually work together to create a lesson
plan with one another.
And so what we're going to do is in a moment, I'm going to be dismissing you.
And here's the steps.
You're going to download this lesson plan template,
and I'm going to give that to you in just a moment.
And then what you're going to do is after you've downloaded it,
and only after you've downloaded it, [LAUGHS] you're going to go
and you're going to join the breakout room of your choosing.
And we'll open up the breakout rooms shortly
and you'll have the opportunity to choose which group.
When you get there, I want you to briefly introduce yourself
to one another.
Now, the reality of the number of you that are here together with us today
has changed since I did this--
I last revised this lesson plan.
What I said in the lesson plans--
what I said originally was that the lesson plans--
on the lesson plan that you'd have 30 seconds to introduce yourself to one
another.
Given the time that we have and given the number of you,
I'd like you to reduce that to [LAUGHS] about 10 seconds or less
to introduce yourself.
You might end up using the chat box as a way
by which to introduce yourself perhaps when you get to your breakout room.
I want you to work with your team to create a lesson plan.
It can be about any topic.
It should be about--
it could be about any piece of the topic that you've
selected for the breakout room.
So if you select the algorithms breakout room,
you'll want to do a lesson that is about algorithms, but about
a specific topic with an algorithms.
If you choose the arrays group-- my favorite group--
if you chose the arrays group, then you can choose there,
and a topic within arrays.
And what you're going to do is you're going to follow the instructions there
on the lesson plan template that have been clearly spelled out.
So what I'd like to do is I want, first of all, to give you access
to that lesson plan template.
You can scan this QR code if you wish.
But in the chat box, here's the link to that lesson plan.
And you can follow the instructions there.
So go ahead.
And if you would, go to the chat box, and give me a thumbs
up there on the chat box on my last message.
Give me a thumbs up if you downloaded that.
Perfect.
I got 20 of you downloaded.
I got 30 of you downloaded.
Got 40 of you downloaded, and so on.
Perfect.
Lots of people.
Very well done, team.
Excellent.
So in a moment, we're going to be dismissing the breakout rooms.
And after you've downloaded this, you're going to carry out the steps there.
So with that, these are the breakout rooms you're going to be selecting from.
And if you would, our amazing production team, if you would,
please whisk us away.
Wonderful.
Leaving those breakout rooms and coming on back.
All right, team.
So if you would, step 1, for those of you that have already returned,
go back to the chat box, if you would.
And I'd like you to give me a number between 1 and 5.
1 is, this is really hard for me.
I'm still trying to learn this.
Number 5 is, I got this.
Lesson planning is easy.
[LAUGHS] Where are you?
[LAUGHS]
So lots of people in that 2.5 and higher range, and some of you
still feel like you're at step 0, you offer, and step 1.
Definitely.
One of you says 0.0001.
Indeed.
And [LAUGHS] one of you offers the number pi.
Very good.
We all need pi.
And so what I want you to as we're coming out of this lesson planning
activity that you know how you--
there are things in life that you've done that at first were challenging,
and then over time have gotten easier.
I remember the first time I was in a public speaking class and my high school
teacher turned to us and said, OK.
I want you to walk across the room, and I want you to shake someone's hand.
And without stopping talking, tell them-- introduce yourself
for about 30 seconds.
And I tell you, the first day we did that activity,
that was a very challenging thing as a 14-year-old, a 15-year-old.
But by the third or fourth day-- he had us do it every day for those opening
days--
it's really interesting that by the fourth or fifth time,
it became really simple.
And lesson planning is a lot like that.
So the first time you're teaching a lesson on a certain topic,
you're going to feel a great sense of intimidation.
As you're using an instructional strategy for the first time,
you might feel some intimidation.
But just know that through the process of you,
like your students learning how to teach this for the first time--
you're learning just like your students--
that you can teach this better and better every time.
And what I want you to know is that you don't
have to keep it a secret from your students that you're learning too.
In fact, some of the best moments I've ever had in teaching in CS50
have been when my expertise has run out because
of what a student has asked inside of a section
where I don't have the answer to that.
But you know what?
Together, we've been able to find the answer with one another.
Those create real special moments, and it creates a bond between you
and your students when your students don't just see you as an authority,
but they see you in a way as a co-learner that's just further
down the road than they are.
And I don't know about you, but one of the blessings of my life
has been seeing many of my students excelling and going beyond where I am,
going beyond my level of understanding.
And that's the dream we have as teachers,
is for our students to go beyond us, to graduate from us in some way.
So thanks so much for working on that lesson plan.
Wonderful, team.
So I'd like to finish our time together by talking about something
that is probably the most important topic in my life
when it comes to teaching, which is my values as a teacher.
You think of values generally.
Values are simply a highly regarded principle or a standard of behavior.
It is from our principles and from our standards of behavior
that often our actions arise.
I don't believe this, but if I was to believe that some students can never
be helped, then think about how my behavior as a teacher may be.
If I believed that there were some students that would not ever
benefit from my help, you can imagine how poorly I
would act towards those students.
A teaching value that I have is that every student has a future,
and that I can be part of that future.
I can help anybody.
And this student and I, even if it's difficult, can work through this
and work with one another.
And so through that principle, through that standard of behavior for myself,
it shapes my teaching.
I want you to think about the principles and the standards of behavior that
are really important for you.
I want you to go to that chat box for a moment, and I want you to type one thing
that you hope your students will remember about you.
What's one thing that you want your students to remember about you as they
finish their time with you?
One of you says that you cared about them.
Your happiness, your passion for learning,
your patience, that everyone still learns, that failing's OK,
your kindness, enjoying your analogies, your stories,
that you're kind and compassionate.
That it's OK to fail, that you are like a bigger brother, one of you says.
Most definitely.
Absolutely.
So I want you to know that this is what makes you special as a teacher.
And I want to-- dare I say that it's probably that thing that you
want to be yourself as a teacher.
Think back to the beginning of our time together today.
It's probably one of the reasons that you enjoyed your teacher so much.
So taking this idea, we could say that a teaching value then
is a highly regarded principle or standards of one's teaching.
And you know, CS50 has taught me many lessons as a teacher.
The secret, I suppose, of CS50--
it's not so much a secret because I think we say it in Lectures 0
and Lectures 1 is that this class is not just about programming.
It's not just about computer science fundamentals and principles.
This class is about learning how to learn.
And it's by no mistake that the processes that I've learned
as a student-- and I've, of course, learned even more as a teaching fellow
in CS50--
I've taken those into nearly every aspect of my life, from my teaching,
to my own learning in every imaginable topic, to my work as a parent, so much,
team.
So for example, pseudocoding is something that happens inside CS50.
Pseudocoding is the idea of structuring out your code via comments before I go
and I write the code.
So that way, I have a plan before I go and I do it.
And go figure that you can do that too.
You can do what we might call pseudolearning where you write out
a plan via a lesson plan for what you're going to do next,
what you're going to do in your lesson.
So that way, you can plan for your students' learning process.
Check50 is a technology we use in this class as a way of automatically
checking students' work to see if it meets certain project goals.
And what you could do as well is you could-- in a way,
you could have your own Me50 and say, how do I know as a teacher
that I'm hitting my goals with my learners?
You can debug your code in CS50.
What you can do as a teacher is you can debug your students.
When your students are having an issue with the learning,
it's not because they have a problem.
It's because you have not yet given them the instruction that they need
and the strategy that they need, the scaffolding that they need to allow
them to step into the lesson with you.
Of course, there are students that don't want to be part of the lesson,
and we can talk about that.
But really, 99.9% of your students want to learn.
They want to be benefited by you and your instruction.
I want to say that CS50 talks about-- in a way, models this idea
that play is learning.
And we talk a lot about theatricality in this class,
and that theatricality doesn't require a theater.
And in a way, play doesn't require that we're on a playground.
Play can happen anywhere.
It can happen in a classroom, for sure.
It can happen in a Zoom breakout room.
And so I encourage you to incorporate play with your students.
And I suppose the ethos that I walk in with any--
into any class with is not that I have all the answers, because I surely
don't have all the answers.
You as a teacher don't have all the answers.
But the belief that I have many answers, that you as the teacher
have many answers, that we together can find the answers with one another.
Today, we've talked about many things.
We've talked about strategies.
And these are just-- in just this lesson together alone
and in David's first presentation earlier this morning,
these were some of the strategies that have already been utilized in our time
together.
So if you think about it, you could be a person that just teaches one way.
It could just be direct instruction all the time, just talking at your students.
But I want to offer you that there are dozens
of ways that you can work with your students,
and using multiple instructional strategies to help
scaffold, to help support your students as they learn.
At the beginning, I posed this idea that teaching pedagogy
is like a mystery box in a way.
It's like an algorithm.
We provide something, and out the other side something happens.
And it just so happens that learning is just like that,
that teaching is just like that.
That by you giving something, there's something
that happens with your students that creates a great output for them.
And what I want to offer you is that all your knowledge about assessment,
all your knowledge about strategies, all your knowledge about pedagogy
and about teaching values, while those are all important things, and surely
useful things in your teaching, they are not the most important ingredient.
The most important ingredient in your teaching is you, you as a teacher.
So for those of you especially that are going back into the computer science
classroom and you're feeling like you really
need to change something, especially for those of you that
are going into the computer science classroom teaching for the first time,
I want you to remember that you don't need to be some other teacher.
You don't need to be the best teacher.
You need to be the best version of you as a teacher.
So remind yourself what makes you unique as a teacher and leverage that
to help your students well.
I want to say, welcome to all of you.
We are so excited that you're here at the CS50 Educator Workshop 2024.
And I am looking forward to interacting with each of you
in the coming days and hours.
Have a great day, team.
Thank you so much for joining me today.