Wednesday, February 14, 2018

D94: I MADE a lab!

AP CSA

This might sound crazy, but I think I haven't really CREATED my own labs at all this year.  It has all been using A+ materials, figuring them out, and then doing them. 

I haven't been super impressed by their labs but they get the job done - they are a bit dull and don't provide a ton of context/direction.

This is why I was excited about the lab I made.  I used a "structured lab" earlier in this unit that I really liked.  I don't think I really understood how it all worked until I did it.

I had a "station" in my activities that felt like it could be a much bigger task, so I made it into a lab.

We started it in class today and I think it really helped students understand the following:

  • how and when to use super constructors
  • how to use super in other code (like the toString methods)
  • how to class cast for methods like equals or compare to
  • how you can use inheritance AND interfaces
We are going to take one more day to do this, but then I think we are ready to test.  These structured labs have been super helpful.

AP CSP
I did an interactive notebook on arrays.  I need to do more of this next year. 

Concepts
We played the "Fair Hopper" game which went really well.  Students had really good reasoning about why the game was unfair.

One good thing
Having another hour in my day to plan has been a game-changer.  I am able to so much better plan for all my classes. 

D93: Stations - adapted for CSA

AP CSA

I am having trouble figuring out how to teach these big design ideas in the class.  These are all big ideas that are implemented in big projects so it is hard to do repetition at all since it is so big.

It seems like UML, hierarchy diagrams, and method output tables are all great ways to help students read code that uses inheritance and polymorphism. But it is tough to have students CREATE code themselves that use these ideas.

I made a station activity for these ideas which took forever to create, but was helpful.

I had a few different types of activities.  The "Create a UML diagram" one was a bit much for students (and even for myself).  It became a bit of a handwriting exercise. 

There were also two "trace code and predict output" activities which were really strong - students enjoyed the chance to get practice.  I would like to develop more of these.  Honestly, it would be good to make 8 of these and then I think the stations activity would work better.  I didn't have any method output tables, but I think doing some of those would be awesome too.

Additionally I had two "creative" tasks where students needed to create a heirachy diagram for a situation.  For example, a hierarchy diagram for animals or sports.  Students stayed away from this - I think it seemed like too much work for students - they didn't like the idea of "being creative" or "making a poster".  I think it seemed too abstract on it's face.  Students who choose to do it did a great job through.

Next year, I think I would make these "creative" tasks a whiteboard activity and have students walk around and add to others' whiteboards to add other methods or classes that could be child classes from a parent class.

AP CSP
Explore day.  I love the check-off list.  That's a game changer.

Concepts
Quiz day. 

One Good Thing
I met with the MS computer science teachers yesterday.  We talked about the need to be more project based in our teaching of CS. 

Monday, February 12, 2018

D92: Cleaning up the mess left behind

AP CSA
Students took a quiz on interfaces that was a mixed bag.  It is clear they know how to implement an interface but to have a method pass a parameter of another object type was a hot mess.  I asked them to use the comparable interface, but that did not go well.

SO... today became the day that I cleaned up the remnants that I didn't get before.  We talked about:

  • The key word this - which I really should have covered when I introduced methods in the fall.  There is no harm in holding out for latter, but it is something they should have by now.
  • We looked deeper at the Comparable interface - I showed them that to TRULY implement the interface they need to have a method that takes in a parameter of type Object.  That means you need to cast the object to match the class that is using the interface.
  • toString - this is also something I should have talked more about in the fall.  Not every student got why having a toString method is nice and that they can put whatever they want in there. 
  • Heirarchy diagrams - something we touched on in UML diagrams, but probably could have been put earlier in the unit.
  • Method output tables - again, probably something we could have done a day or two earlier.  They were super helpful.
The rest of the time was for PracticeIt which was a bit glitchy.  I am still thinking the best way to practice this content is to actually do unplugged activities and more diagraming.

AP CSP
I handed back students quizzes on variables.  They went pretty well - I was actually surprised - I was expecting it to go way worse.  

The rest of the time was for the Explore task.

Concepts
We talked about conditional probability today and did a quick worksheet. 

One Good Thing
I found out that two of my students will be recognized as NCWIT students.  That is exciting!

Friday, February 9, 2018

D88-91: Polymorphism and Inheritance - time to embrace my lead learner

Phew... I meant to do this everyday... but... I didn't.

AP CSA

I think I spent more time preparing for this week of lessons more than any other week of lessons in my life.  Polymorphism is a big topic and a confusing one.

On Tuesday I introduced UML diagrams and students worked on the FRQs.  Honestly, working on FRQs is probably the best use of time in class for learning AND for the AP test.  It also helps me see what students are still struggling with.

I wished I would have introduced UML diagrams back when I started classes in Sept/Oct.  They are helpful for organizing the basics.  I moved in to is-a and has-a relationships from there.  Again, has-a relationships could have been introduced later.  I think this might have been helpful back when we introduced classes as well.

I emphasized to students the importance of watching some videos before we got to day 89 which was going to be a big day for inheritance.  I also checked off their notes which were better than usual.

I went into a mini-lecture on inheritance with some examples that I had found from another teacher.  In the end, here's what my notes looked like.





I was SO glad I found this person's slides online.  They introduced things in a way that I would have never thought of!  More specifically, they highlighted issues that I, myself wouldn't have noticed.

One thing that came up in this was class casting which I was a little unsure of myself.

That's what we did on day 90.

Here's the video I watched to help myself prepare - it was the best example of when/why we cast that I have seen.




I am still struggling with what the best way is to show long code in class.  It is too small to fit all up on the board, so I printed it out for students.  I decided to do a tree example which looked a bit like this:



From there students worked on the "Structured Lab" - I felt like it was a bit too redundant, but I think students saw how the super class was to interact with the other levels.

On Monday when students get back we are going to apply what we know in a bunch of different contexts, so we will see how that goes!

CSP
I really loved unit 5 when I had smaller classes, but for my large class it is just too much to be able to understand how well students are grasping the content.  I think I need to do more exit tickets in this class for the basics (like declaring and updating variables).

I gave them a quiz which most students did pretty well, others are going to need a lot more attention.

Concepts
We are doing probability diagrams.  Today we did a stations activity which went pretty well.  I will be giving those students a lot more attention.

One Good Thing
Having an extra hour has been a game changer.  It came just in time.  This has hands down been the hardest week for me content wise and I survived!  I also was able to do activities with my concepts students in a much more intentional way.

Monday, February 5, 2018

D87: Going for Goldielocks

APCSA
I missed the Goldielocks space today in CSA.  Interfaces, and more broadly, understanding classes still eludes my 2nd hour.  They are confused and not making progress.  My 3rd hour, finished the labs early and were goofing around by the end of the hour.   I think this is because I gave too much support to my 3rd hour and not enough to my 2nd hour.

SO... tomorrow, I am going to take it slow with my second hour.  We need to clear up some of this confusion before we move forward.

My third hour I think I am going to move ahead with UML diagrams.  This will let me test something out on them first so my 2nd hour is always my "testing" hour.

APCSP
We did an around the world activity with code.  I LOVE around the world activites - students get in a lot of practice AND they get to move AND they self-check their work.  It went well.

Concepts
Made the fatal error of not giving them enough to do today.

One Good Thing
I love it when students monitor each other.  I'm not going to put too much detail into what happened, but I heard about it after the fact and I think it worked.  I have a chronic "bathroom" issue in one of my classes that another student may have just resolved (or eased temporarily). 

Friday, February 2, 2018

D86: Digging deeper into interfaces

AP CSA

We revealed the Snowflake lab.  It was cool to see what happened when we brought everything together.

Then we watched this short video from my new favorite show.



This fed into talking about using the Comparable interface.  We talked about why we might want to be able to use the Comparable interface (to compare GPAs, to compare ratings of restaurants, to compare souls, etc.)

In my first hour, I had them get started on the labs that ask them to create a compareTo method that compares lengths of words, etc.  I thought we were good to go, but there was a TON of confusion.  I am learning that while I am getting good at prepping myself for the content, I am not doing a great job of anticipating what challenges students will encounter.

In the runner class, I gave students code that takes words from a file and puts them into an array.  Then Array.sort() is called to sort the array and then it prints it out.  Students were really confused as to where compareTo was called.  We looked at the documentation for Array.sort to see that when we use Array.sort it sorts the array based on the compareTo method.  In retrospect, I think I should have students tested the code themselves in smaller cases like this:


Students were confused as to where the method was going to get two different Word objects - they didn't get that the compareTo method has to be called on a Word object.

During second hour, I walked through the solution a bit more with students and it seemed to go a lot more smoothly.  We will see how the practice goes on Monday.

APCSP
Last day for the Explore for a while.  We are going to spread out the last 4 days over the next month.  I have 3 students who are done with the task after 4 hours.

Concepts
I NEED to watch my management.  Seating charts got a bit flexed today but I have my para escorting students to the bathroom when ever anyone needs to go.  That seems to help.  We are working on permutations and combinations.

One Good Thing
I was talking with a student today about what the next course in our sequence looks like.  He really wants to do something with a heavy physical competent.  It is interesting to think about what the next course could look like.







Thursday, February 1, 2018

D83-85: Introducing Interfaces

AP CSA
We started AP CSA with talking about interfaces.  I used the example that as a teacher, I need a way for everyone to turn in assignments. In my class, that means that I need a way for every student to get paper into the basket.  Each student will take a different route to the basket, other students might be a bit lazier and give their paper to someone else to hand into the basket.   How each individual student (object) does the behavior (method) may differ, but in the end, I NEED each student do have a way to do that.

I also used an example with people getting to school or work.  This would work better in an urban setting, but it still worked well.  I think I could even write psuedocode for the method.  Something like...




You even could extend this with the fact that everyone gets to school at a different time (night custodians get there later), etc.

Later on I asked one of my robotics girls if they used interfaces in their programming portions of robotics and she said "Yes, but I never knew why"... that was kind of the best answer I could hope for.

She said they had common methods like Go that made the vehicles go a certain distance.  This method made the gears change by a different amount depending on the size of the wheel and such.  It was interesting.

To teach interfaces, I also stole a little activity from my collaborator TJ.  Essentially each student needed to implement the Snow interface.  They had to make a Snowflake class that implemented the Snow interface and then we were going to compile them all in Processing.

I don't really think students got YET why we were doing this.  Tomorrow we will do the great snowflake reveal.

This lesson has taught me some of the challenges of teaching design to students.  It is hard for them to know WHY they are really doing something and what the benefits of using interfaces or polymorphism is - it isn't something you can teach quickly or show a ton of examples of.

When I showed students the project, they didn't get they they would need 3 different tabs in processing.  I needed to explain what the purpose of each tab was - 1 needed to be for the interface, 1 needed to be for the class that would implement the interface and the third would be for the class which would describe the behavior.

I have also noticed that in Processing, students aren't required to make constructors which leads to some confusion as to why having a constructor is a good (or necessary) thing to do.

Today, we got back onto BlueJ with a CodeAlong POGIL activity.  The first half of it was very much "typing test" esque but I like how it gradually took off the supports over time.  I think students got a better idea of why an interface was useful.

APCSP
Students worked on their explore task.  I made a little check-in sheet where students tell me where they are in the process.  I check them off for things like choosing a topic, finishing their research, writing responses, and creating a computational artifact.  Since I am not telling them that what they are doing is good or bad, it helps keep students accountable to finishing while making sure I don't influence the content of their writing.  We were on day 3 right now and some students are essentially done.   I am going to give them tomorrow to finish it up and then we will have 4 work days later in the semester for students to either finish their Explore task or work on other things.

Concepts
This class probably hates me right now.  I have really been cracking down on behavior.  It seems to be going better but I know that this might still be a bit of the honeymoon phase of second semester.  We are talking about combinatorics which seems to be going well.  The additional structure also seems to be helping.

One Good Thing
I talked with a dean and a student today and I learned a lot about how to have some tough conversations with students.  I always start with letting the student talk first, but he dragged that out for a LONG time.  He kept asking "What is the expectation when you XX?" that made me realize that A) I need to make sure I know what I expect from students and B) Students actually know those answers... so, it sets up a nice "you know what you should be doing" sort of situation.


Monday, January 29, 2018

D82: Re-thinking the practice explore

AP CSP
Students turned in their practice Explore task and did presentations on it.  Last year I liked the presentations, but this year felt a bit "blah".  I think the hardest thing for students was NOT looking at their cell phones for the time period.   Next year, I think I will make it a "scavenger hunt" sort of thing - I will have half the class "present" their project to small groups of students, and students will have to interview each other about their innovation.  Then we will switch to the other half of the class.  I think that will make the time period more interactive.  I think I also could probably do this in an hour and I could give students the final time period to work on the "real" explore.

Concepts
We did this Desmos activity as our final.  This was actually a student's idea... here is what is good/bad about it:

  • Good:
    • It certainly reinforced the growth mindset and problem solving that I have been trying to stress all year long
    • Students worked the whole time - few students took up the "above and beyond" option but I feel like typically when I give a test to this group, they will just try to write down numbers as fast as possible and turn in some pretty crummy work.   That didn't happen here.
  • Bad:
    • I think I needed to work in some additional reflection questions here to be graded.  
    • I am concerned that this shows that students are able to guess and check more than they are able to graph linear and quadratic equations.  It probably does a bit of both. 
    • We did not cover exponential growth here, so it wasn't as comprehensive as a MC final I could have given. 
Overall, if I teach this again, I think I would do a desmos final again.  I would add in some reflection questions and perhaps only give 2-3 extra credit problems so students don't get overwhelmed. 




One Good Thing
I graded students practice PTs and they were actually pretty good!  I was a bit releaved that they followed the directions pretty well!  We start the "real" task tomorrow so I'm feeling pretty good about it.

Wednesday, January 24, 2018

D81: A new way to give feedback

I actually didn't miss a day here, we had a snow day - that is what 10 inches of snow will do! Exams started today, but I still needed to grade my CSA students processing project.  I had them all start up a computer with their code on it, put a post-it note with their name on the screen, and then put it on one of my two open tables.  While they took their test, I graded their code.

First hour, I graded it and wrote comments in the grade book.  When I was done with their computer, I shut it down.  I'm not sure if students actually look at the comments, but I felt like I needed to give some feedback to students beyond just a number.

Second hour I had one student that I wanted to make sure she got the feedback.  I wrote the feedback on to the post-it so I could give it to her when the test was done... then I realized, "Wait, I can do this for everyone!"

So I did!  Then, when each student was done with their test, I left the post-it note with feedback back at their table which I felt was a nice way for them to hear something (usually good) about their code right after they took the test.

This is what it looked like.

2 of many computers with names on it.

Post-it notes with feedback on it.

I still walked around the room every few minutes to make my presence known and orientated myself so I was facing the class at all times, but it worked out pretty well.  For some students, I even asked questions via post-it about their code.  A few students came up to me afterwards to talk more about it.

This seemed to work well - it allowed me to give feedback and grade pretty efficiently.  I think it was important for students to know what they did well or could have done differently to make their code more effective.

Next semester my classes will be a bit larger which might make it more difficult to do this strategy, but it might be worth trying again.

Monday, January 22, 2018

D80: Hands on probability in concepts

AP CSA

We tried making our images into GIFs... it didn't work out so hot.  That means that the first day of second semester, we will do a screen capture instead.  I fear we are losing a bit of the AP content here, BUT, it is important for students to have authentic audiences.

AP CSP
Students are working on their semester project.  I feel like a lot of students are behind, but I also have seen a TON of off-task behavior. For that reason, I feel ok with what I am asking students to do.

Concepts
We finished up the experimental vs theoretical probability activity from NCTM.  That went over well.  The more interactive, the better for students!

One Good Thing
I am testing out doing a desmos activity final in concepts this year.  I love trying new things!

Thursday, January 18, 2018

D78: SKUNK for the win

AP CSA
Work continued on projects... I think it seems to be a good exercise on logic but I am not sure how advanced we are getting.  I would love to think of projects that require more advanced techniques.   Recursion I think we can do using fractals which will be fun.

AP CSP
We worked on the explore - students have 2 more days in class to get this done and I am a bit concerned they won't make it in time.  Fingers crossed!

Concepts
I introduced probability more in depth today through NCTM's SKUNK activity.  Students needed to play at least 3 rounds of the game to be able to start thinking about strategy - 4 or 5 maybe even better. 

It was a great way to introduce chance/choice and start thinking about how frequently they should expect different outcomes.

One Good Thing
I had my HS students go to our MS to talk about computer science.  I am hoping this is helpful for students and entices more students to try out CS.

Wednesday, January 17, 2018

D77: Wins and losses

AP CSA
Win: Students are getting into their projects.  EVERY HOUR just sat when the bell rung, working hard at it.  It was cool.

Loss: I wish we could do more of this... I am hoping we get the grant for next year!

AP CSP
Win: I think I set up something good for the future.  I had students look at their spaceship algorithm and see if it would meet the college board definition.  I had them screen shot it and after break, when we start up again, we are going to re-visit that topic.  Then we started talking about the explore.  I have been living so day-by-day in that class, I am feeling good about what was said there.

Loss: Some students feel like this class is "too easy".  I don't know what a "math elective" should look like.  I don't know what "too easy" even means.  Looking at the code that was written... let's just say not everyone feels that way.  I need to remember, I am teaching this class for the students who thought they might not "be" CS people.  Not for the kid who thinks they are infallible.

Concepts
Win:  Cracking down on behavior.  It is exhausting but needed.  In the long term it will be good.  I am thinking of having my para be cell phone enforcer.

Loss: A kid told me that I "don't care".  That hurts.  It does.  Although, I need to remember that the student literally said that if they are having a bad day they should be able to be jerks and ignore anything said to them.  That's not going to be the reality.   We did have a conversation about how if physically I am sick, class might not be the right place for me.  Likewise, if a student is psychologically unwell, class might not be the right place for them as well.  I think I believe that.  A bigger plan needs to be put into place to help students struggling with mental health issues in class.

One Good Thing
I just love how students are connecting to this project in AP CSA.  That makes me happy.

Tuesday, January 16, 2018

D76: A little help here?!

AP CSA
We started our processing project today.  First hour I told students, "GO!  Do cool things!!".  They were like "huh?".

So second and third hour I got them started.  We did a boiler plate together with a settings function, a setup function and a draw function.  Then we made a class together for a sun.  I channeled my inner Upperline to demonstrate using the reference for filling the sun, or getting rid of the outline, etc.   I think that has made a big difference - I try to stick with it too.  When a student asks me "how do I...", I have them open up the reference and we look at it together.

Students will have all week to work on that.  I told them that they should be working on it all week - If they are "done" I will find extensions for them... usually that isn't as much fun as the extensions they make for themselves.

It worked a ton better when I gave them a boiler plate for the runner class and an object class.  Lesson learned!

AP CSP
I think the 41 student class is starting to catch up with me.  As a group, I think we need to slow down - there are some people who are getting it, but it is not the majority.

Second semester I think we are going to start with a chat bot lab and have all students do a complete "Create" write-up from there.

I also want students to submit their "algorithm" components for us to do a sort of different algorithm's that meet or don't meet the criteria.

We start the explore project tomorrow.

Concepts
It was also registration day today.  I was trying to make a push to get more CSP students so we did an hour of code today in concepts.

One Good Thing
I think this is a good thing - I am trying to crack down on disrespectful behavior.  There is tons of over-the-top responses in Concepts.  I am pointing out that the behavior is disrespectful and setting more clear expectations.