Tuesday, March 27, 2018

Looking at Facebook's perspective - EthicalCS - Day 2

Continuing on what we did yesterday, I had students turn in their research.  Students had a good range of different articles they read from their options.  I tried to give them a mix of topics for different interest areas.  I was concerned they would find the 3 shortest articles and call it a day, but for the most part students seemed to pick questions that interested them.

Here were their choices:

Students filled out this reading guide that asked them to raise their own ethical questions from what they read and also think about who was at fault and who had responsibility to build off what we talked about yesterday.

From there, we listened The Daily podcast of the day which reported on an interview with Facebook's Mark Zuckerberg. 

It was a nice complement to the previous day's podcast which talked about the Cambridge Analytica side of things more.  

Once again, I created a listening guide to help students stay engaged.  It worked.  It is so clear that you need to put a relevant question that is in the last 15 seconds of what you want students to listen to - as soon as they "get" the last question, they tune out.

One thing I realized is that I listened to these podcasts multiple times to make the reading guide and just to preview them.  Students only heard them once, and while I made the listening guide to help them through the story, it is a complicated story.  At the end of the listening guide, students needed to create a list of "players" or "characters" in this story.  They were eager to put down Mark Zuckerberg, which was fair, but I wanted them to think about who was the individual AT Facebook who actually did something in this story - what types of job titles did they have?

From there we made a character web with how people are connected.  Here was my rough draft.

I wanted student to think about what ethical responsibilities/roles each of these people played.  While I think I talked a bit too much here, I think there would have been an opportunity to have students think about this more themselves.  The tricky thing is that it is a bit of a creative writing exercise - they don't know how companies are typically organized - that there are thousands of departments in Facebook and most likily several of them played a part in this (from sales, to legal, to ad revenue, to the engineers who decide how much data developers have access to... it's a lot).

Finally, I wanted students to see that "using data" has happened forever - in fact, the wise use of data is how Obama was able to put together such amazing campaigns.  They got their data legally, but they used it in similar ways to Cambridge Analyitca.  There is this great MIT Technology Review issue that talks about how big data has "put the soul back into politics" from 2013 after Obama got re-elected.  I showed it to students to A) make the story a bit more balanced, and B) drive home that this has been brewing for a while.  While we were praising big data before, now we are questioning if it is the right thing to do.

On Day 3, I am going to pull away from the data side of ethics and try to put a nice end on the #EthicalCS detour. 

Friday, March 23, 2018

An EthicalCS Attempt - Day 1

Inspired by this tweet (which, BTW, the whole thread is worth reading)...

...and by Saber Khan's #EthicalCS chats on Twitter, I decided to take on a "EthicalCS" detour.  I think it ties directly into AP CSP's global impact piece and seems super timely with the Cambridge Analytica thing going on.

My goals were as follows:
  • Bring in real-world situations
  • Challenge students' assumptions about ethics in computing
  • Show how programmers (and others) are responsible for privacy
  • Demonstrate trade-offs with technology

To be honest, I could have made this go in 100 different directions.  There are SO MANY connections to be made here.

Big picture, over the course of 3 days, it ended up looking like this:

  1. Listsen to a podcast (then discuss)
  2. Have students read articles related to ethics in CS
  3. Listen to another podcast (then discuss)
  4. Watch a video (then discuss)
  5. Develop a "Code of Ethics" of Computer Scientists

I have been listening to The Daily podcast and they had an episode about the Cambridge Analyica story that was concise and, I thought, engaging.  Also learning from videos I have shown, I needed to have a way to hold students accountable to listening.  I gave them a "Listening Guide" where I came up with questions which could be directly answered from listening to the podcast.  We did this in class too which helped with actual completion.

SO... here is how it went.

Day 1: Introduce the Ideas of Ethical CS

On day 1 we listened to The Daily podcast from 3/21.  It talks a bit more about the logistics of the story.  Specifically, it covers how the news broke and who the key players are.  Listen to it, if you don't know the story!

I also had students fill out this reading guide (shown below).  The first questions are all directly answerable from the podcast but I also wanted to give students some lingering questions to think about.

I talked a bit about the difference between "fault" and "responsibility" at the beginning of class.  This was actually something that was raised in my church one week and it really resonated with me.  Will Smith also has a bit on it too, but they take it in more of a personal direction, which, while still good, isn't the direction I wanted to take it.  I described it as, if I find a baby in the middle of a street, it is not my fault the baby is there, but it is my responsibility to do something about it.  I suppose if I knew more about laws I could talk about legal fault, but... I don't.  I asked students to keep in mind "Who is at fault and who has responsibility?" in this story.

For the most part the listening went well with the guide.  After it was done, students discussed the last two questions:

  • What was Facebook’s “fault” in this story?
  • What was/is Facebook’s “responsibility” in this story?
When reading student responses, it was fascinating to see that most students felt like the only thing Facebook did wrong was not tell the public immediately when the learned that someone had this information that shouldn't have that information.  From most students' perspectives, had Facebook just said "hey, this happened" right away, then they would be in the clear. 

This reminds me a lot of student thinking.  "If I am honest about a bad thing I did, I won't have any consequences".  They were applying that same logic to this situation.  I needed to push back more on this idea of what "bad thing" happened. So, I asked, what was "bad" about this story.  Here were their responses in order:
  • Not alerting people their data was stolen
  • Selling data after it had been used for academic purposes 
  • Not being clear about how the data was going to be used
  • Playing on people's fears 
    • Note: This was an interesting side conversation about would "playing on people's hopes be any better" - we decided no.
So, we were getting closer to some important ideas. 

That took about 30 minutes total and then I had students take a test.

After the test, students had to choose from 8 different CS-ethics-related articles and fill out a short worksheet on them.

NEXT... reviewing what students researched...

Monday, January 15, 2018

People Different than Me

My church held 4 sessions on Culturally Competency.  As a teacher (and somewhat newer teacher), I have seen a lot of these types of sessions, but this was hands down the best one I have ever done.  It was so well done - very interactive and honest.  In honor of MLK day, I want to share some of that work we did.

One of the activities we did was to take a sheet of paper and fold it into thirds.  We were given 10 M&Ms to place in the center.  This was to represent who I was from an ethnic and racial perspective.

Then we were asked 10 questions.  Some questions included:

  • The last person I invited over for dinner was the same or different than me ethnically and racially. 
  • The last place I went to get a coffee was owned by someone who was the same or different than me. 
  • The last person I talked about politics with was the same or different than me. 
As we thought about those statements, we moved our M&Ms to the most accurate side of the paper.  If the person was different than you, move the M&M to that side, if it was the same, move it to the left.   At the end, this is what my sheet of paper looked like.

That was eye opening.  What was even more severe was knowing that all three of my "different" M&Ms came from the same person.  Specifically, someone who I was dating at the time.  Ouch.

I make decisions that keep me VERY safely inside my comfort zone.  

The true zinger came when one of the presenters, who identified as black, said that her survival and success in this world depended on having all of her M&Ms in the "different" column. 

The fact that I can survive and be successful with all my M&Ms in the "same" column is privilege. 

Now the question is, now what?  I think there is some growth in this awareness, but I feel like awareness is just the very first step.  Is the goal to move ALL your M&Ms to the "different" column?  Is 50% sufficient?  Where do you even start?!

One of the presenters stressed that this is why she doesn't love doing these types of trainings.  To do the work actually necessary to move some of these M&Ms is extremely uncomfortable and risky.  So much so that most people will not do it - even after taking 8 hours of training around cultural competency. 

Right now, for where I am at the "cultural competency" progression, I know raising awareness in myself and in others is a great place to start. I also come back to the idea of "faith without works is dead" which is biblical at it's core, but I think the idea resonates here as well.  I cannot be culturally competent without changing some of my actions. 

Sunday, October 1, 2017

A New Take on Equity in CSA

Three of my boys are huddled around a lap top in the corner of the classroom during my AP Computer Science A class.  "I think we need to use conditional logic and the use the screen size as parameters to get the fish to move on the screen," says one of them.

"Yeah, but we need to screen to refresh.  I bet we need a timer to call a function repeatedly, in a loop," another one of the boys says.

They continue to tap away at their computers.

To be clear, students haven't "learned" conditional logic, timers, or how to interact with the screen size yet - at least, they haven't learned it from me in my class.

So many of my students bring in previous experience into my computer science classes.  They have a certain privilege from being in robotics club for years or from wanting to make their own video games.  They were able to get access to these tools (and perhaps were socially encouraged to get access to these tools) when other students were not.

In someways it is awesome.  These students with previous experience are not afraid to dive in.  They have an intuition around problem solving with code that takes time to develop.  They are so excited to be in class and push forward.  They take risks and aren't afraid of failure.

Yet I cannot help but look at the other end of the spectrum.  I have a fair number of students who wrote their first computer program on the first week of school.  They were pumped to get "Hello World" to pop on their screen with code they had written.

But, then I started to pick up the pace with the class. Very quickly, we introduced the ideas of escape characters, variables, parameters, objects, public vs private variables and methods, return values, modular arithmetic, using different libraries and getting user input.  That was the first 4 weeks of school.

The pace has been quick.  For the students with previous experience, they are playing along.  They take some of the challenge activities.  They also seem more comfortable collaborating with other people to talk through problems like the boys at the start of this post did.

The students who came in as a blank slate feel the pace is quite quick.  When these students overhear conversations like the group of boys were having, it is hard not to feel "behind" - even if they are right on pace.  While we introduced methods and methods with parameters in one day.  The syntax and the concept was new to them, whereas for other students, this was review.  While it was an "easy" day for those with experience, it was a big cognitive lift for those who are still trying to understand when they need a semicolon or not.

Even in our class code alongs, privilege comes into play.  During code alongs, we have a class dialogue about our goals of our program.  We write out psuedocode in the comments to help guide our work.  Students attack small problems individually or in groups for as I set a timer for a short amount of time.  When the timer goes off, we talk through their code as I type up on the screen.  I experienced the "code along" strategy while at PD at Upperline.  It was a nice way to keep a group of people making forward progress while not being strictly lecture.

While this technique is supposed to support all students, I notice that some students struggle to keep up.  Mainly, this is due to poor typing fluency.  Students who are still typing with mainly two pointer fingers take longer to hunt and search for basic letters, never mind the semicolon key and the curly braces. The result is that the slower typers take all of the time we spend together writing code finding the right characters on the keyboard, whereas my more fluent typers have time to process what they are typing when they finish ahead of the students still searching for the forward slash key.   As a result, although we might all have heard the same information and have the same code on the screen, some students had time to make sense of CS content whereas for others this was more of an exercise in typing.  Naturally, when I refer back to a concept in our code along, it was "stickier" for the students who had the processing time than for those who were just trying to keep up with the typing.  While I have started recording these code alongs for students to re-watch if they like, I know that puts more of a burden on my slower typers.  They have to work harder than others.

These equity issues are in all classes - not just computer science classes.  However for some reason these glimpses into privilege and the unequal results seems more apparent in my CS class. I see really bright and thoughtful students feel inadequate because of the previous experiences and privileged that other students bring into the classroom.  It might be that I am unused to privilege effecting some of these groups of students.  I realize that in itself is a problem.

I wonder how I would react as a student in my CSA class.  I certainly think the students with previous background would alienate me from the field of CS.  I just wouldn't be able to compete with them - if I were still trying to figure out how to use parameters to make a fish, and they were talking about moving a fish on a screen with vocabulary I had never heard, it would be hard for me to see myself "belonging" in that crowd.

Again, comparing this to a math class, I need to do two (and a half) things to address the inequities in the class.

#1)  Assign competence
Look for what students are doing well and give them public props for that.  I need to normalize the feeling of being in the "stretch zone" for learning.  I also think I can do a better job of explaining that the people with previous experience are just trying things.  They fail a ton - they don't get it right away.  No student should expect to get the code right the first time.  I have started to this with some students who are still confused what "static" means or why you would want a "private" method.  These students are freaking out because they don't understand every word's purpose, whereas some of my experienced students, just ignore that fact until it becomes a problem for them.  Wanting to understand everything is a great disposition to have.  It will slow students down, but that is ok.  I need to assign competence to those students who are making sense in multiple ways about what is going on in the classroom.  Everyone can contribute in a positive way.

#2) Choose group worthy tasks
I need to continue to look for "low floor, high ceiling" types of labs for students to engage in.  Due to the content we need to cover for the AP test, it can be difficult to find such tasks.  Additionally, right now all the extensions I come up with require students to have some of that previous experience (like conditionals or loops).  Thus, even for the students who are new to CS and enjoy it, they really cannot engage in the "extensions" without knowledge of these CS ideas.  My hope is that as we get into some of these core topics, I will be able to develop more appropriate extensions for all students.

#2.5) Make group worthy routines
Along with #2, I think I could do more to support group work in general.  It is clear that some of the students feel really comfortable working in groups, looking at one another's screens - even going to a different part of the room to do that.  I want to work in peer programming and maybe even break out some of the large monitors to have students work collaboratively.

Bottom line, I am teaching this course because it is the right thing to do for students. One of my favorite lines for teaching is "teach for students who will be successful because of what you do, not despite what you do".  While I fear that there might be a vocal backlash to introducing peer programming - research says it is good for students of all abilities in CS.  I need to make sure that students are successful because of what I do.  I need to be aware that when the loudest 30% of my class is ready to move on, I need to take a step back and consider why I am teaching the course - what is the right thing to do for 100% of the students.

Monday, August 14, 2017

First Day of School Plans

Here's my contribution to the #iTeachCS movement for the time being!  Following #MTBoS, I decided to write about what I will do my first day of school.

My goals for the first day are to:

  1. Talk as little as possible and have students talk as much as possible
  2. Learn names
  3. Build norms
With those goals in mind, here is the plan!

Everyone will make name plates - I did this last year and enjoyed reading what students wrote and it helped me practice names for the first week.  On the back, students write something they want me to know.  Read the blog post linked above for all the details, but here is my link to the document I used with students last year.

I am going to start students with a puzzle activity.  I did this last year as well and it went well.  Essentially students get a 100 piece puzzle for a group of 4 and they have to put it together in a short amount of time.  Afterwards we talk about what skills and strategies they had to use individually and when working with other people.  This gets folded into developing norms.  Last year, it looked like this:

Lots of movement, talking, thinking, etc.

This year, I think I am going transition from this, to logic puzzles.  From a facebook post someone posted a few logic problems.  My goal here is for students to reflect further on the norms they have set for themselves and also introduce the idea that we are going to encounter a lot of problems in class and after a while, we are going to start to develop strategies that are common across problems.  I am going to start this burning rope brain teaser and then have students do this hour glass problem - both of these are related so students should be able to see how the strategy could be re-used for #2.  If there is time we will do a problem about soldiers crossing a river brain teaser and then the animals crossing the river  which again are related.  I plan to continue to reinforce the norms during this time too.

For AP CSP and Concepts of Advanced Algebra:
I am borrowing from code.org's CSD curriculum and going to have students build boats to hold coins. You fan find the complete lesson plan here, but essentially it is a hands-on and collaborative activity for students that will force them to problem solve.  From here we will generate norms using post-its and then share out these norms as a class.  From there, we will reduce the norms down to 3-4 ways we will interact with one another in class.

Then on day 2...
Everyone will make a Flip Grid saying their name, 3 hobbies they have, 2 words their friends would use to describe them, and 1 reason they took this course... From there, we will dive into our content!  I want to use Flip Grid to get to know students and practice name/face recognition at home.

I'd love to hear everyone else's plans!

Sunday, August 13, 2017

What's next for the CS community?

Over the last few years there has been a huge push to train teachers to teach CS in preparation for AP CSP.  I am a product of that movement.  I am hugely appreciative for the work people at the College Board, NSF, and code.org has done to support that movement.

But now I am wondering, what is next for our community?  How do we build on this success?  What does success look like 5 years from now?  How do we get there?

What are the strengths of the CSed community?

  • It seems to be filled with growth-mindset individuals.  Maybe it is because many of us were eager/willing to take on teaching a subject that was outside of our area of expertise.  Or, maybe it is because we are somewhat islands in our buildings, there isn't the same "crab bucket" effect that can take place in other departments.
  • There is a lot of freedom.  Since CS is not held to the same types of frameworks as core content areas, teachers have a lot more freedom.  Even in courses where there are accountability measures like the AP exam, we don't have a PLC that we need to convince of our techniques.  We can try things, fail, refine, and re-try. 

What does success look like 5 years from now?

  • When I think about MTBoS, I think one of its strengths is it doesn't get so caught up in the political nature of teaching.  It focuses on teaching and learning.  It focuses on doing what is right for students.  Obviously being political advocates for students is one way to "do what is right" from a "trickle down" perspective, but MTBoS does cool things in their classrooms and then shares it out.  We need people to advocate for CS education in districts, but I don't think that is really the community's focus.  Doing cool things in classrooms and then sharing those successes to the larger community will get CS in more schools.  I think about how MTBoS has teachers who have written books or been featured on TED talks or NPR... it is all good for the profession AND for students.
  • Powerful, teacher created and tested resources.  MTBoS is really how I survived my first year teaching.  Specifically, Sam J Shah's precalc resources were huge!  His virtual filing cabinet opened doors to other teachers blogs.  It was awesome.  You got to see how so many teachers approached teaching the ambiguous case of SSA and then pick your favorite or adapt it to your context.  I would love to see CS teachers share out their lessons and approach with the same generosity and support as MTBoS.  MTBoS has a "My favorite..." feature at TMC, where teachers talk about their favorite thing they do in their classroom all year or their favorite lesson.  It is a good way to get the "best-of" resources.  I can contribute to this too... this year I can share out the modifications I make to CSP and maybe share out a 180 blog from AP CSA.  
  • A Twitter-Math-Camp for Computer Science.  I would love to get people together who love CS and do an unconference EdCamp Style or model a conference after the MTBoS's Twitter Math Camp which started small and now has grown!  It is still really cheap (unlike CSTA's conference) and has some great teachers presenting on what they do in their classrooms.  We could totally do this too.
  • More "teacher experts" in more branches of CS.  I would love to see teachers who work in pathways of CS - teachers who teach data science, teachers who teach cyber security, teachers who partner with industry to put students in internships, teachers who do purely project based seminar classes... we have AP CSP and AP CSA.  I would love to see what creative teachers do after these courses.  CSTBoS could be the place where we test out these new courses and share out learnings. 

How do we get there?

  • I know it is cheap to answer a question with a question but... What role does CSTA play?  To me CSTA is to build local networks, and while there are state wide NCTM chapters, there role is much different than that of MTBoS.  I think CSTA can help strengthen our CSed community, especially around advocacy, but I don't see them necessarily supporting what teachers are already doing in their classrooms. 
  • Get people on board.  Admittedly, we need a core group of people who are excited about this and are willing (and have time) to participate.  If it is a blog, a #teach180 commitment, or a place for teachers to share out their "My Favorite..." lesson/activity.  I am sure that every teacher has something to share out there - something that they do that we could learn from.
  • Continue to build powerful PD.  So many people have been trained through various avenues, but let's consider what's next.  Can we do a Project Based Learning workshop with all other CS teachers? Can we think about what Complex instruction looks like in a CS classroom?  Let's leverage our expertise in a teacher-led weekend of workshops.
  • Make it loud!  Amplify others' voices when it comes to CS.  When someone reads an idea on twitter or on a blog, and then tries it in their classroom, share how it went.  If you like an idea, build on it - throw out questions for the CSTBoS to ponder.  Contribute to movements #ethicalCS on Twitter to connect to other CS teachers and start a dialogue there.

Not sure how to get started?

Check out advice from MTBoS about starting a blog.   Then consider blogging about anything you are interested in!  Consider some of the following questions to get started:
  • What are your first day plans?
  • Take pictures of your classroom - what does it look like?
  • What are your goals for this year?
  • How are you going to recruit students?
  • What do you wish families/students/admin/politicians knew about teaching CS?
  • What is your favorite lesson that you teach all year?
  • What projects take off in your class?
  • What PD has been most useful to you?
  • How do you address inequities in your classroom?
  • Consider doing a #teach180 blog where you write 2-3 sentences about how your day went.

Sunday, July 16, 2017

What makes for good CS PD?

I have had the opportunity to experience a lot of PD over the last few years with KSTF and the huge surge in support for CS.  After attending Upperline Code's teacher workshop, I have been wondering what makes for good CS PD?

Good CS PD should put the teacher in the role of a learner.  I saw this in my EDC workshop in Mathematical Practices, in Upperline's Workshop, and at code.org.  By having teachers fully engage in a structure or routine for a CS classroom, they can better implement it in their own classes. ....

Good CS PD should have participants planning and teaching lessons.  This seems like a no-brainer to me now, but I will admit it wasn't always that way.  Just like a "good math class" should have students "doing math", good teaching PD should have participating teaching.  In Upperline, we co-planned and taught our lessons which was necessary from a time-saving perspective, but also helpful as we got to collaborate with other teachers and bounce ideas off one another as we planned.

Good CS PD should have a common language.  Whether it is talking about engagement, access, problem solving, abstraction, computational thinking, once we are able to have a shared vocabulary around what we are talking about, we can go deeper into these conversations.  Sometimes this shared vocabulary can become meaningless buzzwords, but I still think bringing some kind of awareness to our goals through establishing a common vocabulary gives all participants more opportunities to contribute.

Good CS PD should have a time to be reflective.  With Upperline, after we taught a lesson, we had a time to reflect on the lesson we just delivered and got feedback from the participants.  I think the feedback part was hugely helpful for me but I wonder how other teachers would respond, especially if there are teachers who aren't psyched to be there.  I think I assume that every teacher is as excited to be at PD as myself, so I forget that there are people who were "volun-told" to be there.  I know there are other ways to reflect on the lesson after it is delivered - by shifting the focus to reflecting on the lesson from the learner perspective or considering how students would react in the lesson.  Regardless, having time to reflect on the lessons helps me think about how I would apply what I saw in my own classroom.

I realize that many of these ideas aren't ONLY for CS PD, but really good practices for good PD in general.  

However, while these guidelines are all well and good, one of the biggest questions is what does the content for CS PD look like?  I have attended many CSP PD workshops (for code.org, CS50, or Mobile CSP) but they all center around the same content.  They focus on one curriculum's interpretation of the AP CSP standards.  When I have attended the EDC's workshop on Mathematical Practices (MPs), we learned how to incorporate MPs into any math course we were teaching from 6th grade math to 12th grade math.  I am wondering if we can do that for Computational Thinking standards.  Is that valuable for CS teachers?  Can we do a 2-4-1 and learn CS content (like, data science) AND computational thinking?  Is that, as the kids say, "doing too much"?  I acknowledge it is difficult to tell a teacher to develop a lesson plan on cyber-security without the teacher really knowing cyber-security, but maybe just giving teachers a direction is enough.   

In the Upperline Workshop, the CS content was all around web development.  We covered HTML, CSS, Ruby, loops, conditionals, etc.  At one point I was supposed to teach p5 - I realize that this is a broad thing to teach, but my partner and I narrowed down our specific goals for the class and then developed a task we wanted students to work towards in the class.  This practice was actually really useful.  I think you could do that with other CS topics as well - cyber-security, data science, etc.

Even while I hope to be able to teach some of the content I learned at Upperline in my CS classes, I expanded my own content knowledge in CS by participating in other teacher's lessons and experienced multiple ways of approaching CS instruction - some ways I liked and others that wouldn't fit my teaching style.  For me, as a teacher who is ready to further develop my own approach to teaching CS, having this experience was really valuable.