End-of-Year Check-in on My Goals for this Year

The first semester is winding down, and 2 of my 3 classes have started final projects. After the break we only have a couple weeks to go before we start exams. I felt like this was a good time to reflect on some of the goals I had for this semester and share how they worked out.

Processing

Recap: Processing is a platform that combines coding with art to create animated sketches. My main reasons for using it in my computer science classes were that, from an educator’s perspective, it’s very gratifying for students who are learning to see the results of their code visually on the screen, plus it gets students to think more creatively in a subject that is usually viewed as very mechanical and rigid when you don’t know a lot about it.

How it turned out: I think overall, Processing was a success. As I had hoped, it was a good learning tool. I felt like students could really see the usefulness of variables, conditionals and loops. In terms of creative thinking, I was amazed at some of the programs my students created. I also got to see them admiring each other’s work in class, both through their blogs and by looking at what other people around the room were working on. I thought that was pretty cool – definitely not something that would happen if we were using another platform that didn’t have a visual aspect.

Some of the challenges I had with Processing:

  1. The school computers did not have Processing installed, and I was told it would take about 6 months for it to get approved (if it got approved). I thought I could work around this by having each student bring in a USB and run Processing off a USB. This worked for my laptop, but it didn’t work on the school computers. In the end I managed to solve it by using P5.js – Processing together with JavaScript. No extra installations needed. It was not as flexible or as good for debugging as Processing in Python, but in the end it was still effective.
  2. Processing does not have an easy way to do keyboard input. After some research online, I ended up abandoning Processing for a few weeks to teach keyboard input.
DQY0dVtVwAAv6lo.jpg

Some student work from one of the practice exercises in Processing.

Assessment through Conferencing

Recap: in addition to or in place of another summative assessment such as a test, have a conversation with each student about what they learned. They would answer questions about the project they worked on, as well as overall reflections on the unit as a whole (what they found interesting, what they found challenging, etc).

How it turned out: as planned, I did a conference together with a project for the first summative assessment in each of my computer science courses. I quickly found that this strategy was not the most effective – or at least, it didn’t work very well for my classes. One of the biggest problems I found was that it takes foreverSince I was teaching lessons for at least part of every class, with both of my classes at capacity, it took me weeks to get to every student, Student absences, my own absences and late assignments all made the process take even longer. For the next assignment, I adjusted my strategy: instead of a conference, this time each student would write a short reflection on their blog about the project that would answer the same questions (what did you find interesting? What did you find challenging?). I found that the post-unit reflection worked better as a written activity. Much less time-consuming, although I missed the one-on-one time I got with each student in the first assignment conference.

What I found worked the best was formative conferencing. In my Grade 9 class, students first did a formative activity on whatever skill we were working on. They worked on that for a couple days, then I would post the summative. While the students worked on the summative in class, I went around the room and conferenced with each one about their formative work. I gave them feedback on what they did well and what they needed to improve. This saved me a lot of marking at home, and the students found the in-person feedback helpful.

The next time I teach data management (MDM4U), I am planning to conference with each student about their ideas for the final project. Last year, I found that some students constantly had to revise their ideas, and I found it worked best to come up with a plan as a conversation rather than putting it into words in a structure that didn’t really fit.

Overall, I’m glad that conferencing was something I tried, even though it didn’t turn out exactly as I thought it would.

#OntarioClassMatch

Recap: connect with another class somewhere in Ontario (or around the world) and collaborate in some way. I learned about it from Heather’s post here – check it out!

How it turned out: I reached out on Twitter to anyone I could find who had tweeted with the hashtags #ICS2O, #ICS3U or #ICS3C recently (the courses that I am currently teaching). I managed to connect with a few teachers who shared some great resources with me, although unfortunately none of them were teaching computer science this semester. Then, one of my friends from teachers college told me he would be teaching Grade 10 computer science this semester, so we decided to connect our classes through class blogs. In the end we didn’t communicate with each other’s classes as much as I would have liked. We did manage to connect our classes once. Both of us are new teachers teaching three different courses for the first time, and we were both too busy to really invest in it. I think it was still a good experience for our students to see that there are other classes out there, and that we can learn from each other. Next time, I would aim for one blog a month for the semester – a total of five posts. I think having a concrete goal would help keep the initiative on track, despite how busy life is otherwise.

In the future, I’m excited about connecting my math classes with other classes around Ontario in some way. Computer science is an elective and math is for the most part a mandatory course, so I think it would be easier to find another class to connect with – or even multiple classes. For data management, I think it would be cool to have my students and another class fill out each other’s surveys and analyze the data. In any class I teach, we could make up and share questions with another class. Lots of different options. Next semester I am hoping to try #OntarioClassMatch with another class.

High School Genius Hour

Recap: students get to work on a passion project throughout the semester that is connected to the course that I am teaching – in this case, BTT1O, Grade 9 Business Technology Today.

How it turned out: this one didn’t end up happening at all, for a couple of reasons:

  • no time – we were a bit pressed for time to finish the curriculum and didn’t have time for any extra projects
  • the business department at my school does a similar project in the Grade 10 intro to business course, and in the interest of students continuing to take business courses, I didn’t want the courses to be too similar

 Collaborating with Primary Students

Recap: do something together with elementary students. In my case, I wanted my students to do the Hour of Code with an elementary class.

How it turned out: this actually happened, and I think it was successful! I am planning to write another post about how it went in detail later on (but no promises). If I do, I will link it here.


Questions? Comments? Ideas? Feedback is always welcome. Hit up the comments!

Happy holidays!

Advertisements

Introducing Algorithms in ICS3U/ICS3C

Today marks the end of Computer Science Education Week, the initiative for teaching kids and teens how to code. Schools across Canada and the US, including many schools in my board, are doing the Hour of Code on code.org. Lucky for me, I get to teach kids to code every day! In my Grade 11 U/C computer science class, we have been working on writing code in JavaScript to solve problems and perform simple tasks. For example,

Write a guessing game program that prompts the user to guess a number between 1 and 10. The program should say “too high” or “too low” and prompt the user to guess again until they guess correctly.

Yesterday I introduced the idea of algorithms to solve problems. In order to write more complex programs, you need to have a strategy and come up with an algorithm: a series of steps needed to solve the problem.

We started the lesson with a bit of an unusual warm up. This idea was borrowed from a friend of mine from my computer science curriculum class in teacher’s college:

dec8-1.PNG

I got a few funny looks from students when they walked in and saw the board! I walked around to help the students, and encouraged them to write detailed, specific steps. Instructions like “butter the bread” are too vague: they need to be concrete and detailed, such as, “Use the knife to spread butter on each side of both slices of bread”. One student protested, “But Miss, these instructions are already detailed! A little kid could do this!” I told her that I still don’t understand – she needs to be more specific.

2DQjMlerXcAAnlqF

One student’s grilled cheese instructions.

Then we took up the warm up. It took us 5 or 6 steps just to open the fridge, take out all of the ingredients and close the fridge! In total we came up with 26 steps to make a grilled cheese sandwich.

DQjMkpmX4AA4Bl4.jpg

The last of the 26 steps it takes to make a grilled cheese sandwich.

 

Then I got to the heart of the lesson: why am I doing this?

“I’ll bet some of you are wondering: what does this have to do with computer science?” I got some nods. I then explained that computer science is not about programming any more than biology is about microscopes. Computer science is about using programming as a way of solving problems. This is what computer scientists do.

dec8-2.PNG

When you tell a computer to do something, you have to be very specific and detailed. You can’t just say, “Draw a rectangle” – you have to be specific: where on the screen do you want to draw the rectangle? What is the width and the height of the rectangle?

We then jumped back to some code that we had worked with earlier in the course in order when we learned about functions. What were the steps in the algorithm used to make that program?

The next thing I had planned was to come up with an algorithm to solve a common programming problem: find the biggest value in an array or list of numbers:

dec8-3.PNG

At the last second I decided to change the example to something that would be more familiar to them. The biggest number problem is a bit less intuitive and I knew that some of the students might not even know where to start. While I do believe in struggle in order to learn, this question was not the focus of the lesson, so I decided to start with a more familiar problem instead: find the average of an array of numbers. I liked this problem because finding the average is something everyone knew how to do. At this point it felt easier for most students to start coding and then take a step back and determine the steps that make up the algorithm. Eventually it will become easier for them to come up with an algorithm first, and then translate it into code. Here’s what we came up with:

(Please excuse my messy whiteboard writing.)

We then did a shortened version of this activity from code.org on real-life algorithms. We spent the rest of the lesson doing some of the Hour of Code activities on code.org to prepare for an upcoming field trip (details TBA at a later date!). Overall it was a good day: students were engaged and some of the usually more reluctant students were raising their hands and contributing to the discussion! Oh, and we may have made some paper airplanes, too. Happy Code Week 2017!

3DQjMzWdW4AAIBx_

If you want to see the full PDF of my lesson, shoot me an email in the “Contact me” section of my blog.