Sunday, September 30, 2018

My Favorite Bug

A beautiful bug!  
I have a couple of butterfly bushes in my backyard, but sadly this year saw only one Monarch Butterfly come through.  There were lots of bees and hornets that enjoyed the flowers, though -- those bugs however are not my favorites!  This is just an aside, and it does give me an excuse to put a nice image into a blog post with lots of boring text.  It also provides a nice introduction to discussing bugs in coding (and teaching).

Sunday, September 23, 2018

Bare Walls Theory -- not so much!

This is my fifth year teaching, and I spent the first two years of my teaching career on a cart as a travelling teacher, so I was very happy about getting my own room two years ago.  At that time, I decided that I did not want to follow a "bare walls" strategy that I saw in many high school classrooms, but I also did not want to go overboard with decorating and make the room a big distraction to the students.  The general rule that I followed was that each of the posters and decorations in the room would be there to emphasize a key concept from the units in the classes I taught and that they should be student generated whenever possible.

Sunday, September 16, 2018

CS Teaching Strategies - Subgoal Labeled Worked Examples

I finished week five of the 2018-19 school year,  ran chains at our Homecoming football game which was a tough loss but is now behind us, and chaperoned the Homecoming dance last night -- I'm tired!  So I put in for a day off next week to rest and regenerate a bit.  The rub, my AP CSA class is a week behind where I hoped we would be, so the students need to make progress on the day I am gone.

CS Teaching Strategies -- I wish there
was only one piece missing!
As a relatively new CS teacher and a brand new AP CSA teacher, I am still learning about and trying new methods and strategies in my classroom.  I pick up ideas on blogs, other CS related websites and attending meetings of our local CSTA (Computer Science Teachers Association) chapter.  During one of my Google explorations I came across the image here.  Too often I feel like instead of one missing puzzle piece I have far too many pieces missing and need to fill in lots of gaps.  However, rather than just approaching this with a hit and miss strategy, I have started reading some research studies on teaching computer science and have come across a whole set of studies done at the University of Georgia Learning Technologies Division (https://scholarworks.gsu.edu/ltd_facpub/).

Sunday, September 9, 2018

Blogging with High School Students

I had my Exploring Computer Science students start out their web design unit by creating a blog.  The idea for this came from a Google training that I attended last year and a session from Chris Moore.  I used it with my ECS students and enjoyed it so much that I am including it again in the web design unit.  For web design we focus on two areas.  First, students will learn the hard skills of HTML and CSS, and this year I am hoping that we will have enough time to get started with a little JavaScript as well.  Second, I have students work on developing soft skills such as branding, audience and voice by working on a blog.

Branding


I begin by having students make a list of 3 things/people/hobbies that interest them most.  Then they take that list of three and select the one thing that they feel they can make a list of ten ideas, sentence starters, or topics.

I cut short the time on coming up with the list so that students only have a few ideas generated.  We pause and talk about branding and how certain companies have a brand name that is associated with a particular product line such as soft drinks, shoes, or cars, while other companies have a brand based on a concept such as low prices or home delivery for a variety of products.  We have a short discussion on how having a unifying theme for their blog and also for their website can help them develop a brand.   Students can make the connection so that their blog can help them become known for the concerts they have attended or the fashion they are interested in, or the books they have read.

After the discussion on branding students complete their list and seem much more interested in generating that list around the theme of their choice.  Students are given the choice of blogging privately so only other students can read it or blogging publicly so that anyone can read it.  Last year only a few students chose to make their blogs public, but at the end of the semester several other students expressed that they wished they had made their blogs public.

Audience


As we blog I require that students read and comment on the blogs from other students in class as well as read and comment on blogs that are on a topic similar to theirs.  We do this to help develop a sense of audience -- being an audience for others and creating an audience for our blogs.

With the statistics functions students see the number of views that their blog has received and where those viewers are located in the world, the operating system of the system their audience views from, and the browser that is used.  However, very quickly students move from wanting views to wanting comments.  This moves to a discussion on the idea that in order to have an audience we need to be an audience; and in order to have comments on our blog it is good if we comment on others' blogs.

On a practical front I show the students how to turn on moderated comments, meaning that they need to approve every comment that shows up for their blog.  We discuss that yes there are people out there who may have positive comments for us that we want to display; others have negative comments that we want to display because they will help improve the blog; and others have negative and demeaning comments that we simply don't want to display.  Moderating those comments shows us who our audience is, but also allows us to control what is displayed and helping us further develop our brand.

Voice


Finally, as we blog, I have students focus on developing their own voice.  On a practical side I have students think if they want their blog to follow a pattern for each blog entry.  From the ideas generated last year and this year common blog topics are reviews or opinions related to a common set of topics:  music genres and groups/performers, basketball shoes I own or want; books I read or want to read; etc.  For each of these I ask students to develop a pattern for each entry that might include basic information, a star rating of some sort, and then a written review.  Or else see if they want their blog to follow various forms for each entry.

To further develop their voice I have students read their blogs aloud.  Listening to a blog entry is very different from simply typing it up and proof reading it.  Finally I have students work with a partner and before each entry is posted, they must have their partner proof read the entry as well as discuss it with their partner.  This helps eliminate mechanical errors such as spelling, capitalization and punctuation as well as helping the student recognize if this blog entry "sounds" much different from other entries.

As I read through this blog entry I am again grateful for the Google session I attended last fall.  This was one of several very valuable sessions that has had a long lasting impact on my teaching and my class.  Not only that, I find it enjoyable to think about my classes and write about them!

Sunday, September 2, 2018

First Time Teaching - Objects Early

We completed the third week of school and I have introduced objects to the Advanced Placement Computer Science A (AP CSA) class.  Together we have coded a class representing a geometric shape and a Runner class that contains a main() method which creates instances of the geometric shape.  My first impressions are that I am going to like this.

Previous Years - Objects Late

During the last three years I taught a Java programming class (not AP CSA).  This was a class that I had built on my own and did not follow a set curriculum so I taught in an order that made sense to me -- and without doing any research on the debate of when to introduce objects.  The order that I taught language concepts follows:
  • Java program skeleton
  • screen output, variables and data types, basic math
  • keyboard input, the Math class, and Random
  • selection statements (if and switch) 
  • loops (for, while, do while)
  • file input and output
  • classes, methods, inheritance and OO Programming
  • arrays and ArrayLists
  • GUI and Swing
Classes, methods, inheritance and Object Oriented Programming were introduced only after students had learned a majority of the Java language constructs and a good number of supporting classes.  Each year, I would introduce the topic and let students know that they had been using classes and methods from the beginning when they created their first String and now they would be creating their own classes, each with multiple methods.  Each year students took a long time to get comfortable with this topic and we needed to do many, many examples -- together, in pairs and individually.  This was always the unit that would need to be extended with a lecture review,  new examples, or an extra project.

For the last two years I found my best success with teaching classes by following a cookbook approach and having students follow a set of task cards to create a class and tester for the class by going through one task card (one step) at a time -- create the class; add instance variables; create a constructor; create a tester that constructs objects; and so on.  I picked up this technique from a professional development I took over the summer at Colorado School of Mines (@CSatMines).  Students would go through one step at a time, it seemed to cement in their minds the steps needed to create objects.  However I was unsure if they were mastering OO concepts or simply mastering the steps in the recipe.  This further became apparent, when we started looking at inheritance, some students were able to take the next step while others showed that they did not fully grasp the concept of a class and had difficulty with inheritance.

This Year - Objects Early - and Hopes

This year I am teaching AP CSA following the order setup in A+ Computer Science (https://www.apluscompsci.com/).  We have covered the Java program skeleton, screen output, variables and data types and keyboard input during our first two and a half weeks covering Unit 0.  On Friday we started Unit 1 and built our first class Dog which has only the default constructor, no instance variables and a couple of methods that only produce screen output.  This seems like a good first step to start learning the ideas of a class and an object without jumping into the details of instance variables, constructors, access methods, etc.

We will do some more practice with these basic classes containing methods with only println() statements and then go into adding instance variables, constructors and other methods.  My plan is still to spend a good deal of time on this unit with several program together examples, followed by paired programming with task cards and then a project.  Then after that I will introduce inheritance and the importance of abstraction.

With this early foundation in objects, I am hoping that we can as a set of learners have a good foundation in object oriented programming and be able to go further in the content so that concepts such as sorting, searching, and recursion can be covered along with a thorough review for the AP CSA test in May.  From this early look, I am pleased with what I am seeing.

My Look at the Research

Once you are programming in Java and using objects as part of a day to day job, the question of when you learned the OO concepts seems a moot point.  Most programmers from my era learned Java as a fourth or fifth or later programming language and it was a case of one more language and in most cases object oriented concepts were first used with C++.  However, now that I am in the education world, the topic of how you teach programming and object oriented concepts in the same course, the order does become important.

The debate ranges from objects early to objects late to objects never.  With AP CSA the latter is eliminated as it looks like students will be tested on objects.  So that leaves objects early and objects late.  I started looking into this when I attended the AP Summer Institute in July.  I had been following Alfred Thompson's blog and read what he had to say which concluded with use early and create late (https://blogs.msdn.microsoft.com/alfredth/2006/11/16/objects-early-objects-late-objects-never/).  I have to admit that this is what I was most comfortable with, but I also knew that my students had been struggling with this.

I read the 2009 study from Albrecht Ehlert and Carsten Schulte (http://home.cc.gatech.edu/csed/uploads/2/ehlert2009.pdf) which concluded that there were no learning gains to be found from one method over the other.  I also read the 2012 research from Murat Pasa Uysal (http://file.scirp.org/Html/23962.html) which concluded that there was a statistically significant difference in learning outcomes for object first being better than objects late.  This study was done with graduate students using the BlueJ environment which isn't my student population or the tool I am using in class (Eclipse).

The research does not seem to point definitively one way or the other which leaves teachers to select the method that works best.  Personally I find that with each year I collect new methods and strategies for teaching CS concepts and in the end hope to come up with a good set of tools for my students.  As for the debate, it looks like a spirited one with people falling on all sides of the issue, and I am making my own small experiment by moving from objects late to objects early, so stay tuned and I look forward to finding my own conclusions.