SPEAKER 1: All right.
Hello, world.
AUDIENCE: Hello!
SPEAKER 1: So nice to see you again, and so nice
to see, again, our next speaker.
Live to you from New York City, this is CS50's own Margaret Tanzosh.
[APPLAUSE]
MARGARET TANZOSH: Hey, everybody.
Can you hear me OK?
We're good?
AUDIENCE: Yeah.
MARGARET TANZOSH: All right.
So I'm so excited to be able to share what I do in my classroom
with all of you.
Now before we start, I just want to say one thing,
and that is that this is just what I do.
This is not the way you have to run your classroom.
I'm not prescribing any formulas.
I'm not giving you any structure that you need to use.
But I thought it could be helpful to hear how one CS50 high school
teacher is able to really help engage students and differentiate as well.
All right?
So we're going to go through a little bit about what I do, and then
we'll have some questions, and then hopefully
have a little time for you all to kind of really
visualize how you're going to run your classroom, all right?
OK.
So again, my name is Margaret Tanzosh, and I
teach in New York City at a pretty large school called
NEST, which stands for New Explorations into Science, Technology, and Math.
It's a public school.
It's a K to 12 public school.
I have five classes of computer science, and I have a lot of students.
In New York, the maximum class size is 34, and I often have--
I have three sections right now with 34 in my class,
and the others are just a bit smaller.
So keep in mind also that having a small class size,
big class size can certainly impact on how you teach your class.
All right, this is my eighth year using CS50 as a curriculum.
And I also teach at the Harvard Extension School, CS50 on Zoom.
So I'm familiar with the material, but I do it
a little differently in my high school than I
do on the Harvard Extension School.
So this is a picture of my school.
It's in Lower Manhattan.
And yeah, and that's what I do during my day full time.
All right.
So my students come in a very diverse group, all right?
So I have students who have very little experience,
really know nothing about computer science,
think they might like to check it out, they
might like to learn a little more about what it is.
I have students also that come into my class that
have been programming for years.
They may have parents who are programmers.
They might have created a whole app on their own.
It's a really diverse group, right?
Some of them are already know they want to major in CS in college,
and some just want to check it out.
They think maybe it's something they might want to pursue.
So I have a very diverse group.
And mostly 11th and 12th graders.
Some 10th graders as well, right?
So that impacts as well how I run my class.
These are some of my students from a couple years ago
when we had a hackathon.
And we also invited the middle school students.
And we had a lot of fun on a Saturday, having an extended amount of time
to program.
So that gives you a little sense of who we are.
So now, I'm definitely an adapter of the CS50 curriculum.
Now, I'm going to share with you at the beginning, I was more of an adopter
because I really didn't know what I was doing, right?
I was trying to figure it out as I was going along.
That may be the same at the beginning for some of you.
And what I do now is that I actually do a lot of scaffolding
for students that need extra support.
So again, having such a wide variety of student experiences,
I want to make sure that everybody can succeed.
And so I'm able to do that.
And we'll talk more about the scaffolding in the second section
today where I share a little more of the details on how I make that work.
So now, how did I come to teach CS50?
So I was really fortunate to be hired at this school about eight years ago,
and there was no computer science curriculum at all.
There was no budget.
There were no books.
They just knew the kids wanted to learn something about computer science.
And so I was searching and searching online.
Found some curriculums, but they cost money.
There was no budget.
So I had to go back and search again, which
was the best thing that could happen because I happened
to find a video of Professor Malan saying,
would you like to bring CS50 to your high school?
[APPLAUSE]
And that was--
AUDIENCE: [INAUDIBLE]
MARGARET TANZOSH: It was so lucky, right?
And it was so great.
And I was like, yes!
That's what I'm going to do.
So I took the edX course online and immediately
started learning it, learning it alongside as my teaching
it to the students.
I was just a little bit ahead.
So-- yeah.
So it really-- it just-- and eventually really kind
of came to be a thing at my school.
They're very proud of the curriculum and the students are just loving it,
so it's been quite something.
Now, one of the things I did, since when I
started teaching with the CS50 curriculum,
it was also the first time I started teaching computer science.
I had been a math teacher before that.
And so what I did was that I watched the lecture videos over and over and over.
I just shared this.
Might be something you want to do.
And so I learned from watching Professor Malan how to speak the language, how
to break down concepts, because one of the things I loved
about his videos, the lecture videos, said it made it really approachable,
right?
It really kind of broke things down and explained it.
I'll tell you the truth.
I tried to get into programming a couple of years before,
and I would try to find videos and tutorials.
Mostly they put me to sleep.
It was just really hard to kind of go with it
and to really make any sense of it.
So when I found CS50, I was just enthralled with it.
I was very excited.
So I use the same language.
I try to use a lot of the same techniques.
And I really tried hard to engage the students.
So watching the videos over and over again was a way I was able to do that.
And also, using some of the activities that I saw, for instance.
So I had my students act out bubble sort like you did yesterday, right?
[LAUGHTER]
At the beginning of the year when I first
introduced binary kind of like in lecture zero,
I had several students-- six students come up with their phones, lights
on, lights off on their phones, and act out binary numbers.
So I tried to emulate a lot of that and keep the students involved
and keep the students engaged.
And so it's just a little something-- again, something you
may choose to kind of look into, right?
So basically, what I do-- what I did at the beginning and what I still do
is that I break down the slides that you see in the CS50 lecture videos,
and all that material is available to you.
I use just a few slides a day.
I certainly don't lecture for an hour at a time.
My classes are 45 minutes long, so I might choose, like,
10 minutes or so to talk about-- to reinforce some of the material
from the lecture.
And so I break them down, and I-- so it's a very short little mini lesson.
And then I have my students practice coding in class.
Now, when I started eight years ago, I didn't really
know if my students had Wi-Fi at home.
They didn't all have Wi-Fi.
Also, maybe not even computers dedicated to them.
Now it's changed because since COVID, they had to get computers
and they had to have Wi-Fi, so it's a little bit different.
But I've always really believed in allowing
them to do their coding in class as much as possible
so they could be there to get the support to succeed.
Right?
So my students take a lot of classes.
They generally have seven classes every day,
and some very rigorous classes as well.
So I didn't want them to be overloaded and feeling
like they're resenting this class because they
don't know how to debug a program.
So I always believed I wanted them to have fun in my class.
I wanted to inspire that spark of wanting
to learn more about computer science and wanting to continue to go on.
And so I didn't want them to be frustrated right off the bat.
So I always allowed them to have time to code in their class,
and I still do that today.
All right?
And again, what I did particularly at the beginning,
I tried to really stay fresh by re-solving
the problems they were about to solve, like just before they
would begin to start it, because that would
allow me to remember the struggles I had when I first went through that program.
So when I would go around and try to check in with them,
I could see the struggles and I could see the pitfalls,
and so I was easier able to give them hints and give them ideas and help them
with their debugging as well.
I would see a problem and I would more quickly
understand what was going on with it because I had just probably
had that same problem myself, all right?
And I also used a lot of additional problems,
as you'll see in a few moments.
So I don't just do the three pset problems for unit 1.
I really do slow it down, because for my students to go from Hello
to Mario in one step would be too sudden.
So I use a whole number of programs, some older CS50 programs,
some new practice labs that I made last summer.
I use these to fill in some of the gaps, and again, to kind of build up
the knowledge more gradually.
And I'll share-- and all that material will be available to you
as well, all right?
So you can use those with your students if you choose to.
OK?
Now, what do we do while they're actually coding?
So usually, I have them coding, and I'm just
walking around, peering over their shoulder, checking in with them, right?
Asking them how it's going.
Maybe asking them to explain a little bit of their code.
And often as I'm walking around, especially at the beginning,
students are often embarrassed to raise their hand in front of the whole class
and ask a question.
They think, I should get it, but maybe I don't.
So sometimes just one-on-one or one with little small groups allows them to open
up more and allow me to share--
they share their struggles with me, and I'm able to give them some hints
and help them out with that, right?
The other thing I do is that when students finish their programs early,
I actually don't make all the class work at the same pace.
So if a student comes in with experience,
and they finish Mario just like that, I'll
let them move on to the next program.
After a little while, I actually do have students
that are working on different programs, and some
that go through a lot more of the curriculum than others.
But as far as everybody is learning and everybody is getting something out
of it, for the most part I feel pretty good.
But I do really work--
I do want to keep the material rigorous.
I don't want to water it down so much that there's no rigor, because I think
it's important for students to understand that it's OK to struggle,
and it's through that hard work that really we feel that reward, right?
How many people felt a real sense of satisfaction
when you got all those green happy faces when you ran the check50?
Anybody have a really good feeling about that?
AUDIENCE: Yeah.
MARGARET TANZOSH: Right?
And I love it.
My students will share that as well, right?
I got it.
It was really hard.
And now I got all the green happy faces, and it's a really satisfying feeling,
right?
And that's the feeling I'm going for in my class.
I want them to feel that sense of enjoyment, that satisfaction
that I can do something hard, right?
So I don't water it down, but I do scaffolds a lot.
And we'll talk a little bit now and a little bit later
about exactly what that means, all right?
I also like to point them as I'm walking around
toward the many different resources.
I might see, maybe they don't quite understand strings,
so I'll point them to one of the shorts that you'll
see Doug Lloyd do, these fabulous shorts on strings, right?
Or whatever.
Maybe watch a little bit of the lecture video,
rewatch that little section of the lecture
video, a couple chapters where we see Professor Malan talking about strings.
So you know, I'll do that.
And then of course, I'll reteach if I need to.
But I really want to make sure that they understand
where to find all these resources, because there's so much
stuff out there sometimes, they don't always know where to look.
The other thing that's really important is
that I do have to stress over and over again
when they're Googling to find some resources that they're really
careful not to find a solution.
Right?
So I mean, I had a student recently who, even after explaining it,
it wasn't obvious.
They thought they were searching with how to solve Mario, you know?
And found some video.
And I looked at their code, and I was like, I know this isn't your code.
I could tell by looking at it that it was code from someplace else.
And she was like, oh, but it was great.
The video taught me how to solve Mario.
And it's like, no, no, no, no, no.
That's not the point.
Like I think Professor Malan was mentioning the other day,
it's OK to Google for how to do a for loop, right?
How to define a new variable, how to create an array,
but not how to solve one of the CS50 problems.
So I really do have to emphasize even after I do at the beginning of the year
over and over again the importance of, you
need to complete the CS50 problems on your own.
You don't Google for a solution to a CS50 problem.
Those are the kind of resources we're looking for.
OK?
So now, I also found when I was getting started especially
it was really helpful to get ideas from other CS50 teachers.
So some of the things that I learned about
that I hadn't thought about initially is that I now
have students write a reflection after every program that they complete,
because I think it's important to reflect
on your own learning, your own aha moment, your own struggles.
And also, just that whole metacognition.
How am I growing as a learner?
How am I growing as a computer scientist?
So it also allows me to evaluate their struggles.
It allows me to evaluate how good a teacher I
am, because if many students say, I really got confused on this part, now
I know maybe that's where I need to improve my instruction.
So I find the reflections to be really helpful, both for students
to reflect on their own learning, to recognize their own growth,
and also for me to get an understanding of where things are going well
and where there needs to be more support.
So they're a really important part as well, right?
The other thing I learned from some of the other teachers
is that-- because I was so overwhelmed when I was starting.
It was like, Puzzle Day.
I don't know if I could deal with Puzzle Day.
But I saw some of the other teachers having Puzzle Day and so much fun
and having a CS fair.
And so I actually did do those.
They kind of pushed me to do it myself.
And it really enhanced the quality of the course as well.
So again, those are types of activities that you might want to consider.
I would invite the whole school for Puzzle Day.
We'd stay on a day after school.
I wouldn't invite them on a weekend because they have jobs.
They have family commitments often.
But maybe Wednesday after school for two hours,
we order some pizza, a little bit of candy,
and then I'd have them come and do some puzzles.
And not just my class, the whole school, just to kind of
have that fun experience problem solving together and working in groups.
The other thing is that the communication with teachers
was really helpful just to support each other.
I might run into some struggle like I'm not
sure the best way to approach this or that.
So I'm going to make sure and encourage you that you
do stay in touch with each other.
I know some of you have met already through the work
that you were doing in the--
while you were taking the class yourself, in your sections,
and hopefully today.
And make sure that you do exchange information, emails or other contact
information.
Make some groups so that you can stay together and support
each other, because surely you're going to have struggles probably
unique to your own environment, right?
And unique to your own student body.
So it's a great way to be able to have that extra support.
It makes a huge difference.
Here's the idea of Puzzle Day, right?
They would have their laptops.
They would have a little candy.
And then at the end, we'd give out prizes.
And students really enjoyed that.
And then I usually have--
every group would be able to get usually at least one solution to Puzzle Day.
Go around and give little hints to make sure everybody can solve something.
And at the end of the day, they would present.
The students would take turns presenting their solutions.
So again, just another way of bonding, another way
to really appreciate problem solving.
So again, my first year, my trajectory as a teacher looked like this.
At the very beginning, I didn't actually show the lecture videos in class
because I was afraid my principal would come and say,
aren't you doing the teaching yourself?
Like, what's going on here?
You're just pushing a button?
So I would recreate the lectures a little bit at a time,
and I would try to do that.
I didn't really even know how to scaffold problems at that point.
I did the CS50--
the edX course myself online, and I just gave them a problem
and expected them to read it, and it didn't always work that well.
So I found eventually that I needed to give more support that I'll talk about
in a few moments.
One thing I always did do was that I created little warm-up problems, kind
of a little starter for the class that would get the students thinking
or getting a little experience with something
that they were going to be doing in the next problem set,
maybe like recognizing a little bit of code.
Maybe when they were getting ready to do Mario,
having a rectangle printout or an upside down pyramid, and just say, predict.
What is this code going to do?
Because I think it's also important for students
to get used to seeing code and reading code and making sense of it, right?
So I might ask a little question like that, or maybe a conversation question
to get a little bit of a class discussion.
And I still do that today.
I generally find that that's pretty helpful.
As I gained experience, I really began to work more
with the struggling students and learn different ways of supporting them.
So I began to put together small groups of students
that really needed extra help.
You know, I still have students sometimes
that come in that struggle with algebra, you know?
So when a student has a difficult time with abstract thinking,
they really are usually going to need more support
to be able to solve these problems.
So I would put together a small group, maybe put a table in the front,
and we would work out-- kind of look at the problem specification,
work out some pseudo-code together, which we'll do in the next section.
We'll get some experience with that.
I eventually created my own walkthroughs also,
kind of like the walkthroughs you see that are done in the problems usually
with Brian Yu, right?
Does these fabulous walkthroughs.
And I found-- because originally I thought, well,
there's a walkthrough in the problem.
All right.
There's a walkthrough there.
But I found my students really loved it when I did a walkthrough also.
It was just more face-to-face.
They could ask questions.
And so that's something that I still do now.
I'll do a walkthrough.
And not for everybody.
Some students really want to do it themselves.
Some students don't even want to watch the walkthroughs in the problems spec.
It's like, too much information.
I want to figure it all out.
So I just invite the students who are interested,
and I kind of keep it-- it's a pretty differentiated classroom.
I also kind of slowed things down a little bit,
because my goal is that I really want everybody to feel they come out
of this class successful.
It might be successful at different levels, but some level of success,
right?
And so just another one of my values.
And again, as I mentioned, I allow early finishers to move ahead.
So today, I do usually assign a couple chapters of the lecture video
for homework.
I think that the video-- the first year, in fact,
because I didn't assign the videos at all, it was halfway through the year
before they even knew who Professor Malan was.
And it was like, oh my god.
They really have to know more than that.
So I do assign a couple chapters, maybe 10, 15 minutes, for students
to be able to get some experience understanding the concepts.
And then I'll do it again in class.
I don't leave it at that, but I'll explain it again in class
because honestly, they'll often need to hear it more than once.
And this way, they hear it in different ways.
They hear it from the lecture where you have all these different materials
that he can use or these very--
more elaborate setups.
And then I'll maybe explain it myself in the class as well, right?
I also use these practice problems that I'm going to show you in a few moments.
You'll have an opportunity to use those as well.
So because I feel like I needed to have more problems
to build up the experience to go between Hello and Mario,
to give them more opportunity to practice,
I did create practice problems.
They're optional.
You can use them or not use them.
And so I started using them this year.
I created them last summer with Carter.
We worked together on those.
And so what I might now do is assign a little bit of a lecture video to watch,
introduce the concepts that are being discussed in the particular problem.
I would present the new practice problem.
But before I give them any help with that,
I want them to grapple with it for a little while.
I want students to get comfortable with struggle,
because it's really important to embrace that and to know it's OK to struggle.
I like to tell them, if they're not struggling,
they're not learning anything new, right?
If there's no struggle, you already know it.
You need to struggle.
Your brain needs to grapple with it, think about it, try different ways.
So particularly with the practice problems,
I encourage them to work in groups, try to figure it out,
see where they can go with it.
They often get stuck, but that's OK.
But they'll do that for a couple days.
And then I might begin to scaffold it.
And so I might begin to work with them and create some pseudo-code with it,
right?
I might even begin to develop a little bit of code
at the beginning of the problem for them, then let them go back
and work again.
And then at the end for the practice problems, I might do a code-a-long
and we'll complete it together, right?
So now they have a little bit of experience
maybe using nested for loops, and now maybe they're
a little more ready to move on to Mario, right?
So that's kind of my philosophy.
And I've been doing that this year, and I think it's been working pretty well.
So why am I excited about CS50?
I know there are other curriculums out there,
but I love that CS50 really allows you to make it your own, right?
You could adopt it.
You could adapt it.
You could pull this lesson.
You could pull that problem.
You could really make it your own.
You can even make up your own programs.
And eventually, if you're interested you could make up your own check50s.
Like, all this is out there for you to do.
And so at the beginning, I did not make any of my own programs.
I didn't have any idea how to do that.
But over time, I did begin to do that, and I
was able to customize it a little bit more, right?
I love that there are various versions of the programs,
more comfy, less comfy, so students can now self-select.
Because I think it's important for students to have some agency over,
which problems are they choosing to do, right?
So I really find that to be really valuable to have
that type of student choice.
And again, my philosophy is that there's no reason for anybody
to get bored in my class.
If you're really ahead of the class, if you're moving through the problems
quickly, there's always more and more and more that you can do.
I've had a couple of students go through the entire class in the first semester.
That's not typical, but that does happen.
And I want everybody to kind of bubble up and kind of
get to the highest level they can get, right?
And there always are some students who just fall in love with it up front,
and instead of doing their other homework,
they're doing coding problems at night.
I hear about that sometimes from the other teachers.
And again, there's such a large selection of problems.
And as you'll see, there's the practice problems.
There's older problems.
I've even created many years ago, which are still available,
some little specific topic problems that you're welcome to use.
So the practice problems are basically created in a limited kind of a--
very, very one or two little topics, right?
There's about three of them for every unit.
And again, you're free to use them or not use them.
There are check50s.
We don't have the submit50 built in, but you can create a submit50 easily
if you want.
And again, I like to use them with--
before I use the pset problems, just as additional help for the students
to get used to the whole idea of how to approach nested for loops
or how to approach strings before they get to Caesar, for instance.
They'll have some other programs to do.
And then each one also has a thought question.
So one of the things I used to like to do is have a thought question.
Again, sometimes the warm-up, or at the end of the class use a thought
question to encourage a class discussion.
So again, you're welcome to use any of this material
in whatever way works for you.
So my workflow now, again, is so I'll have the students watch
a chapter or two for homework, right?
I'll teach a little lesson on the program.
I might actually take one of the practice programs
now and do a code-a-long at the beginning
before I assign it for the students to do on their own.
I feel that the code-a-longs are valuable especially at the beginning
because students will see, how do I use the terminal?
How do I compile code?
How do I move from one directory into another?
I can't tell you how many times before I started doing this students would say,
my program won't submit.
I can't run check50.
Well, you're weren't in the right folder, right?
So just to get students-- or students starting to type in code
before I started doing this, hit the first open curly brace.
It automatically closes.
Then delete the closing curly brace, right?
And then the code doesn't indent, and it's just all over the place.
So I find it really useful sometimes just to kind of demonstrate to them,
have them code with me, get that muscle memory on, how do I type in the code?
How do I use this code space?
And to do it efficiently, right?
So you're not having to delete the closing curly brace and then space
in four spaces to intent for the next line, right?
To have the code be formatted as you code.
Which, as we all know, it makes it so much easier to debug your own code when
you could read the code, right?
So just a little something that I've been doing more recently.
And particularly with the practice problems-- so I'll do the code-a-long.
Then I'll have them collaborate on a different problem, right?
Then I may scaffold it, struggle with it.
They struggle with it, do a little pseudo-code with them.
Then I'll review the solution with them.
And then they'll do the pset problem, and that
will be their graded assessment for the unit, right?
So that's how I've been doing it.
The practice problems, I've been kind of using just
as a completion grade for practice.
And then the pset problems, that's like their actual assessment,
and they get a grade based on that.
So again, you can do it this way or not.
I just want to offer up some of the things that I've done.
It may or may not be helpful for you.
Hopefully, you get a little something to take away from it.
So I pace out, as you can see, the units way slower than the standard CS50
curriculum.
So of course, the bold ones are the standard problems
that you'll see, right?
But debug is one of the practice problems
I created that has jumbled up code that you have to learn how to debug, right?
Fahrenheit just turns-- it's three lines of code,
but it's the first time they're doing a calculation, a little calculation
from Celsius to Fahrenheit degrees, right?
Then half in prime or a couple of practice problems.
ISBN does a lot of-- you could create a loop in modulo.
So again, a little bit of practice.
And then one of the versions of Mario and Cash or Credit, right?
So that's kind of the sense of how I do it.
And I haven't done it like this all the time.
This is how I did it this year.
Other times, I've done--
do it a little differently every year.
I'm always experimenting to find the best way to make this work, right?
For Unit 2, I would use, again, some older programs.
Like, there's the program Initials.
Password is a practice problem that you're going to see a little bit later.
Of course, Readability is a fabulous program.
The kids love that one.
Very real world.
And again, that would be one of my graded problems.
And then Old Friends, No Vowels, Calc, some more practice.
Then either Caesar or Vigenere, which is an older
problem, which you'll have access to, or Substitution, Bulbs, or Wordle.
So those, again, they're some of the choices that they have, right?
And so it's worked fairly well.
When I get to unit 3 and 4, in unit 3 I don't always do everything,
but I make sure I will do plurality, right?
I want them to experience a linear search.
I'll also spend a lot of time on the searching and sorting algorithms.
And I've created my own programs or my own little problem spec
to get them to practice building those for themselves, right?
And then in unit 4, we might do filter.
Maybe I don't always do recover.
Some students will.
I'll make it available.
But if students are struggling, maybe they don't quite get to that.
During COVID, I had to slow it down a bit.
Students would be out sick or--
it was crazy, right?
For everybody.
And so we didn't get quite as far.
But we got enough that I think students still came away
with some really good experiences and the experience of having some rigor,
because that's the important thing.
Even if you don't complete everything--
I don't usually do pointers or memory allocation, because with 150 students
it's just too much support that they would require to do.
They could do it, but with me and 34 kids in the room
it would take me too long to go around and help them
all kind of on a small group basis or one-on-one.
So I don't usually do those, but some students do do them.
I do have students that just kind of are addicted to it.
They move ahead.
And I'm there to support them.
I know how to help them with them, but I don't
make it a class requirement, generally.
They always do HTML, CSS, and JavaScript.
They love doing Homepage, one of their favorite programs.
I actually have them use an essay they do in their ELA class.
I love doing interdisciplinary stuff.
So in ELA, they do an essay called Write My New
York where they have to write about a little portion of New York that's
very special to them.
It could be a subway station that they start every day,
the day going into that subway station.
It could be a deli on the corner that they always
get a soda and a bag of chips from.
Could be a park or a playground where they play basketball.
So it's some very special place that's near and dear to them
that's their little part of the city.
And then they use that essay and they make a four-page website
from it, which is really very personal and a lot of students really enjoy it.
In fact, my students are finishing that up this week, so they'll work on that.
So that's kind of a little bit of an idea of how I pace, right?
And again, so you don't have to use the whole curriculum.
You can pick and choose.
But you do want to make sure to have enough in there that there's rigor,
right?
You want to make sure that they understand all of the basics,
and you want to make sure that they understand
it's OK if something is hard, right?
It's supposed to be hard.
And I pull away as we move along.
I don't do as much pseudo-coding.
But for units 1 and units 2, I do like to give them that support.
So what are my goals for my computer science class?
So one of the goals up front is to help them feel
comfortable with these strange symbols.
I always let them know up front, the first few weeks
is going to probably feel-- it's very common for it to feel overwhelming.
These symbols, these curly braces, these parentheses.
Where do they go?
The semicolons.
So I let them know it's OK to feel a little overwhelmed.
That's everybody's experience for the most part.
But keep in mind, as you become comfortable with it,
it will become more comfortable.
Your eyes will get used to it.
Was that true for you guys?
Did you have that experience?
AUDIENCE: Yes.
MARGARET TANZOSH: Yeah?
So I would share that with them, right?
That at the beginning, it's a little bit overwhelming.
It's a little crazy.
But it takes time.
And I really encourage patience.
I'm very patient with my students, all right?
So I think that's important.
And again, I want them to come out really loving this class,
not to feel like, ch!
I was really trying to force them to do something
just too quickly for them to absorb.
I also want them to feel confident that they can do this,
because some students come in, like, oh, this is not for me.
I can't do this, right?
But then the best thing is by the end of the year
when I have them sometimes write a reflection about the class,
and it's like their favorite class, you know?
And I have that experience too, so that's a lot of fun.
[APPLAUSE]
Thank you.
All right.
I want to keep everybody, as I said, engaged, right?
So that's why I let them work at their own pace for the most part.
Obviously, by the end of a marking period,
they have to have a certain number of programs done.
But I try to give them extra time if they need extra time.
I don't want them to feel the stress of having to debug a program at 3:00
in the morning because it's due on Friday, right?
So I'm pretty flexible with that, right?
And my goal overall is that by the end of the year,
I want them to be comfortable using online resource to figure out
on their own now what to do, to draw away the support for me
so that I don't have to be standing next to them telling them
how to do something.
But now they have the confidence and they
have the skill to be able to look things up and figure it out on their own,
right?
So that's really kind of the goal for me by the end of the year
that they can now write a program to solve some problem they
have without any other supports.
And I really want to make sure everybody can succeed.
So I want to take a few moments and see if you have any questions.
All right.
We have a lot of questions.
OK.
All right.
Go ahead.
AUDIENCE: I still-- my question is this one.
[INAUDIBLE] problem sets.
Did you make your own problem sets and then your own check50?
Or when some [INAUDIBLE] question like just [INAUDIBLE] the website.
MARGARET TANZOSH: No, I've made my own problem sets also with my own check50s.
AUDIENCE: So the next question is, how can you make your own CS50?
I mean, technically because--
I mean the website itself.
I didn't find it [INAUDIBLE].
MARGARET TANZOSH: There'll be some follow-on Zoom sessions
that will teach you how to do that.
It's too much to do it today, but there is the capability
to write your own check50s, right?
It has to be a program that has inputs and outputs that are very clear.
So you can't really do a check50 for a website, right?
Because you don't have inputs and outputs.
But if you have inputs and outputs like in the terminal in C or in Python,
you can create your own check50s, right?
And that will be available for you over time.
We're not going to do it today, but we'll
do that in the near future, all right?
Yes?
AUDIENCE: [INAUDIBLE].
As you know, some of us are [INAUDIBLE].
Some of us are sure of math, science, [INAUDIBLE]..
My question is if you don't mind, can you
share in your country [INAUDIBLE] that can innovate and implement
this [INAUDIBLE] into other major [INAUDIBLE] other study like in math,
in art, something like that.
MARGARET TANZOSH: How to incorporate-- how to merge it with math or art
or something like that?
Well, again, since you can create your own programs,
your own problems over time, once you become
more familiar with how to do that, if you want
to have them create a problem to do--
I don't know-- solve a quadratic equation,
you could have them write a program to do that, something like that,
if you know what I'm saying.
It's just-- it's not built into the curriculum.
But certainly, it would be something-- it would take some thought.
Maybe that would be something you would want to start
a little group of teachers here to do.
Maybe there's other math teachers that would want to incorporate it with math
and come up ways of solving math problems, right?
In the Python unit, you'll notice that you
can very easily deal with CSV files.
So I find the CSV file's become very engaging for students
because there are some real-world data sets out there now that you could use
for science, or you could use for any type of research for other disciplines,
right?
So I have another group of my students now working on the CSV files.
There are some of them working on CSV files.
They found out they were with air pollution, right?
Or just researching, oh, I don't know.
What are they doing?
Movies or computer games and sales of this,
and all different kind of disciplines.
Finance also, looking at different finance CSV files
and doing different analysis of that, doing standard deviation for something
based on information the numbers they get from some CSV files.
So I think once they get certainly to that level,
there's a tremendous amount that you can incorporate different disciplines
in using real-world data, right?
So anyway, that's just--
but I would encourage you guys to try to group up yourselves.
Like, if you teach science and computer science,
perhaps you'll find some other people who do the same,
and you can create some things together.
Create a community.
And I think that'd be fabulous, and we'd love to hear about that.
I think that'd be great.
Other questions?
Yes?
AUDIENCE: OK.
Doing eight years is to love teaching experience I know,
so that's very amazing.
One thing that I want to know, the way you handle the struggle students
with no prior experience in coding.
MARGARET TANZOSH: Majority of my students have no experience in coding.
AUDIENCE: And how to handle that, and how
do you combine [INAUDIBLE] with no prior experience with the [INAUDIBLE]??
MARGARET TANZOSH: We're going to talk about that in the next section.
The next thing is going to be about differentiation and scaffolding.
And we'll actually do an exercise where you'll practice
doing some scaffolding yourselves.
Sorry?
AUDIENCE: [INAUDIBLE]
MARGARET TANZOSH: I use the CS50, but I add to it a little bit as well.
Yes, all the way at the back with the--
[LAUGHTER]
Yes?
AUDIENCE: Thank you.
MARGARET TANZOSH: Oh.
And then-- and first and then-- yes.
Yeah, the pink and then with the black.
Yes.
Go ahead.
AUDIENCE: [INAUDIBLE] one thing that I want to know.
How can you [INAUDIBLE]?
MARGARET TANZOSH: How do I-- let me make sure I understand.
My biggest challenge, and how do I bring the students up to--
in a big class environment?
So I'm going to talk about the differentiation and the supports
in the second section I'm going to do in a little while.
In terms of my biggest challenge, you know, I think that just--
I don't know.
I have to think about that.
But I think there always are a couple of students that really, really, really
struggle, and they may struggle across all subjects, right?
So I sometimes have to come up with alternate assignments for them
because my administration wants me to help everybody succeed and pass
as well.
And so sometimes I need to come up with an alternate assignment that may not
be-- maybe it's a research essay in technology that substitutes
for a programming problem, but only for one--
a couple of students that really, really struggle.
So sometimes it's kind of difficult. It's challenging to figure out--
but I'm talking two or three students.
The majority of students, I'll do scaffolding.
We'll do pseudo-coding together, and we'll
do a little bit of coding together and bring them up that way.
All right?
Other questions?
Oh, there was some-- yes?
AUDIENCE: OK.
[INAUDIBLE] how do you feel [INAUDIBLE] and this again
how do we have-- how to be like you?
[LAUGHTER]
[INAUDIBLE]
MARGARET TANZOSH: I guess for me, I just really enjoyed.
I just thought the class was such an amazing introduction.
And I think probably many of you as well do, right?
So I just went back, I think, and I-- especially at the beginning,
we watched Professor Malan's energy on the stage in the lecture
over and over and over again.
Thank you for that.
[APPLAUSE]
And that just actually energized me to feel excited myself.
So again, if I wasn't sure how to present something or I wasn't sure,
I would get some ideas usually from the excitement, from the lecture video,
and I would try to emulate that in my class.
So yeah.
Yes?
[INTERPOSING VOICES]
AUDIENCE: --in your first [INAUDIBLE],, what do you do in your--
before you're doing your class, what do you do?
Are you have-- are you--
do you [INAUDIBLE] or you make a formal assessment first?
MARGARET TANZOSH: I'm sorry.
Say again.
So what did I do before I was teaching CS?
AUDIENCE: No, in your class.
MARGARET TANZOSH: Oh, in my class.
AUDIENCE: [INAUDIBLE] material.
What do you do [INAUDIBLE] find your goal or how do you target?
Or do you make a formative assessment first?
For the student.
MARGARET TANZOSH: What do I do--
well, I always--
AUDIENCE: [INAUDIBLE] assessment course, or do you tell the goals
to the students before you teach it?
MARGARET TANZOSH: Before I teach it, what do I do?
AUDIENCE: Yes.
MARGARET TANZOSH: Well, I'll create a lesson plan,
and I'll have in my lesson plan certain goals
for that lesson and certain topics.
And I try to anticipate the struggles students are going to have in advance.
And if I do a code-a-long, I'll always have a printout with me.
So I have a cheat sheet, because I don't want to forget something up front.
Especially in the environment, I'll often use that.
And I make errors.
And sometimes I make errors on purpose so that students
see that we all make errors.
I like to let them know that coding is all about making errors.
They have a special word for it called debugging, right?
So if you're not making errors, you're probably not learning something new.
So yes?
AUDIENCE: [INAUDIBLE] when you teach this unit [INAUDIBLE]??
MARGARET TANZOSH: High school.
AUDIENCE: High school?
MARGARET TANZOSH: High school.
Yeah.
Yes?
AUDIENCE: I wonder how you deal with students that just don't want to learn.
Like, [INAUDIBLE] going to class, or even [INAUDIBLE]..
How do you--
MARGARET TANZOSH: Well, that's a bigger problem.
Our guidance counselors usually get in touch with them,
or I reach out to their parents, have conversations with the parents.
And there's usually not a lot-- there's usually a couple, maybe one
or two students in that position.
And offer to have them come to my office hours, give them extra support,
and usually by getting the parents involved.
AUDIENCE: [INAUDIBLE] punishment?
MARGARET TANZOSH: Punishment?
No.
It's not like a punitive punishment, but it's more
reaching out to parents, which maybe is a punishment for them.
I don't know.
So-- OK.
Over here.
Let's take-- how are we doing on time, everybody?
We doing OK?
We have a little more time?
OK, good.
AUDIENCE: What is the hard thing--
what is the [INAUDIBLE] after you teach them anything for the first time?
You teach the student with the [INAUDIBLE] the hardest things.
MARGARET TANZOSH: The hardest thing what I was starting to teach?
AUDIENCE: Yes.
MARGARET TANZOSH: I think was just knowing how to pace the class,
knowing how to introduce the problems, you know?
Knowing how to give students enough support.
I wasn't so good at giving hints.
I was afraid I would give the solution away.
I didn't want to give it all the way.
But I didn't maybe give enough support either.
So I would over time learn that it's OK to give a few hints, right?
And it's OK to help get some things from them, working--
over time, start to work with just a small group of students
that need the support.
And then people who are happy to work independently or with their own groups
can work while I'm working with a small group.
But it took a couple years till I got to that place.
That didn't happen immediately, right?
OK.
Let's take another question over here.
OK, and then we'll come over here.
AUDIENCE: If I'm not wrong, you said in your [? point ?]
that you were explaining about you re-engage again your notes about CD50.
Is it right, you repeat again your notes about CS50 every year?
MARGARET TANZOSH: Do I repeat the notes about CS50 every year?
AUDIENCE: Yeah.
MARGARET TANZOSH: I like to rewatch the lectures every year.
AUDIENCE: We rewatch.
Not following one more special--
special courses, courses about CS50 every year in the United States.
MARGARET TANZOSH: Well, I'll always watch the new lectures every year,
because every year there's a new set of lectures, right?
Because Professor Malan re-does the course every fall,
and so every year there are new lectures.
AUDIENCE: How about the materials?
Is it the same or not?
MARGARET TANZOSH: It makes-- sometimes it's the same
and sometimes it's different.
So I draw on stuff, though.
I have a whole bunch of lessons sometimes I use, and then sometimes I
create new ones.
So it's a combination.
AUDIENCE: How about the students in your classroom?
Are you engaged--
[INTERPOSING VOICES]
AUDIENCE: Are you engaged in the knowledge of your students
reconnecting--
MARGARET TANZOSH: I'm sorry.
I can't hear.
Yeah.
AUDIENCE: Oh my gosh.
OK.
I am finished.
MARGARET TANZOSH: OK.
[LAUGHTER]
All right.
Who else had a question?
Up here.
Yeah?
AUDIENCE: Hello.
[INAUDIBLE] how we can manage your CS50 class.
So let's go on the [INAUDIBLE],, and my reality is full.
It's my school, of course.
It's one of the newest in my [INAUDIBLE],,
so there's not too much computers in our [INAUDIBLE]..
So [INAUDIBLE] new school.
[INAUDIBLE] one computer in two students [INAUDIBLE]..
And I think more about student [INAUDIBLE],, and when I get--
I will give this pset from the set.
I think it's more difficult to give them in class.
I know that-- as you know that there are students
[INAUDIBLE] how do you get minutes-- or CS50 class in the little computer
class?
MARGARET TANZOSH: So you have two students on every computer,
you're saying?
AUDIENCE: Computers-- one computer--
MARGARET TANZOSH: And two students.
AUDIENCE: --two students.
MARGARET TANZOSH: Yeah.
So there's also a technique called pair programming, which
you might-- if you don't, you could look it up
very easily where one student actually tells the other student what
to type in, and then they switch.
Because the thing is that if two people are using one computer,
you want to make sure there's not one person doing all the work
and the other person's sitting back and doing nothing, right?
So pair programming.
And I have done that also just to get students to talk
and to help each other.
It's a really great technique.
So you had one as the driver, one as the navigator.
And again, you could look it up.
There are models online.
So one would give the direction-- the person
that's typing just listens to the person who's telling them what to type in,
right?
And then after maybe 15 minutes, they switch roles, right?
And then if they see a bug, they both kind of help out,
or they might notice-- do you notice something funny in that for loop?
Is there a better way we could do this?
To kind of help ask each other good questions.
But I would say pair programming could be a very useful technique for that.
OK?
AUDIENCE: [INAUDIBLE] collaboration?
MARGARET TANZOSH: Sorry?
AUDIENCE: [INAUDIBLE] to collaboration?
AUDIENCE: Collaboration [INAUDIBLE].
MARGARET TANZOSH: Yeah.
So-- yeah, so they collaborate together.
And you can-- yeah, so you can decide how you want to grade it, right?
You can give them both-- they submit one program for the two.
Maybe they both get the same grade, and then you have a little quiz,
and that kind of tests their individual knowledge.
So it's really up to you, but that definitely can work.
OK?
So how are we doing over here?
Any other-- I guess we could take one or two questions,
and then I think we need to take a bit of a break.
OK.
I know you've raised your hand before.
Quick.
AUDIENCE: I see-- so a question.
I see in your country, in the US, you teach only 45 minutes.
MARGARET TANZOSH: Yeah.
AUDIENCE: It's very short for--
MARGARET TANZOSH: It is.
AUDIENCE: [INAUDIBLE].
Did you do class every day?
MARGARET TANZOSH: Yes.
AUDIENCE: Five days?
MARGARET TANZOSH: Five days.
AUDIENCE: So 45--
45 minutes every day in five days?
MARGARET TANZOSH: Yes.
AUDIENCE: OK.
MARGARET TANZOSH: Yes.
AUDIENCE: And [INAUDIBLE] in your class, people bring their own device?
MARGARET TANZOSH: No.
AUDIENCE: Or they use--
MARGARET TANZOSH: Some do.
Some do have their own laptops.
But we have laptops now that the class uses.
AUDIENCE: [INAUDIBLE] 45 minutes a day not finish they're coding,
they will continue tomorrow?
MARGARET TANZOSH: Yeah, they'll often take maybe a week to finish a program.
They don't finish a program in a period, generally.
They'll often have-- we'll give them maybe a week to finish a program.
All right?
AUDIENCE: Do they not have homework [INAUDIBLE]??
AUDIENCE: There is homework.
MARGARET TANZOSH: Yeah, sometimes they might write the reflections
for homework, things along those lines.
AUDIENCE: So they don't make code at home also?
MARGARET TANZOSH: They can code at home, but I don't require it most times.
Sometimes I do.
If they're going too slow, then it's like, you've
got to finish this program by this week, you know?
But generally, I try to allow them to do their coding in class
and do other writing assignments or other things for homework.
AUDIENCE: And last question.
In your class, how many students at the one session?
MARGARET TANZOSH: I have three classes of 34 and two classes
sort of in the mid 20s.
AUDIENCE: 34 students at one time.
MARGARET TANZOSH: They're big classes.
They're very big classes.
AUDIENCE: [INAUDIBLE]
MARGARET TANZOSH: Yeah.
Yeah.
AUDIENCE: So you don't combine a class into one,
just like Professor Malan, or--
MARGARET TANZOSH: No.
AUDIENCE: [? 100? ?]
MARGARET TANZOSH: No.
No.
[LAUGHTER]
No, we have-- that's kind of how it works, all right?
I think there was another question up here.
Yes?
AUDIENCE: Thank you for your [INAUDIBLE]..
Have you ever stuck [INAUDIBLE] when you got in front [INAUDIBLE]----
have you ever stuck or--
when you code in front of your students?
MARGARET TANZOSH: Have I ever gotten stuck?
Yes.
AUDIENCE: What do you do when you get stuck in front of your students?
Because sometimes when I code in front of my students, I elaborate.
I already remember code, but sometimes I try to elaborate my code.
And I'll get stuck and I'm confused how to finish it.
And the class is--
[INTERPOSING VOICES]
MARGARET TANZOSH: I think--
[INTERPOSING VOICES]
AUDIENCE: --stuck in front of your class?
MARGARET TANZOSH: All right.
So what do I do if I get stuck as I'm doing coding in front of my class?
Yes, it happens.
It happens, right?
Well, again, I do use--
I always have the code next to me, so that helps.
But sometimes you still make a mistake.
You might not see a syntax error, right?
And so sometimes the students will catch it.
They'll say, oh, you typed that in wrong, right?
A typo or something.
Sometimes I'll try to debug it in front of them, which
I think is actually a good thing, because they see that even
the teacher makes mistakes.
That's how coding works.
It's OK, right?
AUDIENCE: Right.
MARGARET TANZOSH: And so sometimes I'll plan mistakes on purpose
so they can see what it looks like to figure out and debug your code.
So I try to use it as an opportunity.
If I can't-- there have been times where I couldn't figure it out during
the class and I'll say, well, you know what?
We'll leave this and come back to it tomorrow.
AUDIENCE: Yeah.
MARGARET TANZOSH: And it's fine, you know, that they realize that.
We all make mistakes.
[APPLAUSE]
All right?
AUDIENCE: [INAUDIBLE] be shy, though.
MARGARET TANZOSH: Sorry?
We're good.
AUDIENCE: You have to be shy to--
MARGARET TANZOSH: No, it's fine.
It's fine to make--
AUDIENCE: [INAUDIBLE]
MARGARET TANZOSH: Yeah, exactly.
To come back and we'll fix it tomorrow.
It's all fine.
So I think we probably need to start--
five minutes?
OK.
So five minutes.
What I wanted to do is that I wanted to actually
have you take a few minutes and just work in the groups around you.
I wanted to start to have you discuss with others how you
could visualize running your own class.
I want you to just start to have a vision of what
that could look like, all right?
So what do you think?
What do you think you might like to do?
Is there something you may want to take away from my presentation?
Maybe not.
It's fine.
So I want you to--
because we don't have too much time.
Rather than go into other groups, let's just
do groups, like maybe two in front and two and back, like groups of four.
And just have a little bit of a discussion with four people around you,
just to talk and share, what is your vision, right?
And what if anything you think you're going
to need to be successful, all right?
And then we have a minute or two.
So we just want to take about maybe three
minutes, a little quick discussion, and then maybe one or two share-outs,
all right?
So talk to each other for just a couple of moments, all right?
[INTERPOSING VOICES]
So I know that wasn't a lot of time to really think
about your whole year of teaching computer science.
I hope you had a little time to begin to visualize how you're going to do this.
What I'd love to do is have just a couple share-outs
if anybody's willing to share maybe something your group talked about,
something you thought might be interesting,
and something that you might feel you need in order to succeed.
Can we have a couple volunteers share a little something
your group talked about?
All right.
So let's just go.
Let's make sure we hear each other.
OK, we'll come to you later, OK?
We're going to start here.
Then we'll go up here, all right?
Shh, shh, shh.
AUDIENCE: Shh.
MARGARET TANZOSH: Yes?
AUDIENCE: OK.
So we discussed about the things that we need
to implement this curriculum into our school [INAUDIBLE]..
The main point that we want to reach is the completion
of computational thinking in the student,
because we came from different level of teaching.
Me and my team is different level teaching.
So the main goals we think need to be [INAUDIBLE] in today's curriculum
is the computational thinking.
So this thing-- the next thing that we need to support this
is how to elaborate this computational thinking into another subject.
So the school support is needed for this one.
MARGARET TANZOSH: OK.
All right.
Fabulous.
Thank you so much.
That was great.
[APPLAUSE]
Let's hear up here.
AUDIENCE: [INAUDIBLE].
Our group decided to make the [INAUDIBLE] [? pass. ?]
AUDIENCE: Louder.
MARGARET TANZOSH: Louder, louder.
AUDIENCE: Louder, please.
AUDIENCE: Our group decided to make [INAUDIBLE]..
Number two, we want to encourage [INAUDIBLE],,
and then let them to teach [INAUDIBLE] they like,
or [INAUDIBLE] they can make program across better subject,
maybe [? skiing ?] or [? hiking. ?]
MARGARET TANZOSH: OK.
Fabulous.
Thank you.
That's great.
[APPLAUSE]
That's-- all right.
Go ahead.
AUDIENCE: Yes.
[INAUDIBLE] yeah, finally.
[LAUGHTER]
AUDIENCE: [INAUDIBLE]
AUDIENCE: Yeah.
Actually, we discussed about the vision.
Actually, we discussed about the vision, our CS50 for our class.
So the first one is make the student feel comfortable [INAUDIBLE] CS--
not CS50, but computer science class is interesting and exciting.
And then number two, we are going to try to shift the mindset,
because some people think that CS50 is something tough, something difficult.
But we are going to try to shift their mindset that this is something
that you can do.
SPEAKER 1: I love that.
AUDIENCE: Yeah!
[APPLAUSE]
AUDIENCE: And for the last one, for the last one,
we are going to make some activities, but it is fun for the students.
Like, some fun activities.
Thank you.
SPEAKER 1: Sounds great.
Thank you so much.
All right.
[APPLAUSE]
All right.
Go ahead.
AUDIENCE: OK.
AUDIENCE: [INAUDIBLE]
AUDIENCE: So we discussed how [INAUDIBLE] our students
to use to synthesize what they already learned in school to create something
that can [INAUDIBLE].
What we need is teamwork.
MARGARET TANZOSH: I love that teamwork.
Fabulous.
Very good.
All right.
So let's take a five-minute break, and then we're going to come back
and we're going to talk more specifically about differentiation
and scaffolding, all right?
So let's take five minutes, OK?
Thank you.
[APPLAUSE]