Sunday, November 25, 2018

Teaching the teacher - Humble Bundle, Meetup

One of the wonderful things about teaching has to be the periodic breaks.  Pinnacle Charter School is coming to the end of a full week of Fall Break (what I would have called Thanksgiving Break when I went to school).  It was a week to rest, catch up with friends, eat too much turkey, and even to start learning a bit about some new technology -- a little do-it-yourself professional development.

Next year I will be expanding on the nine weeks of Web Design in the Exploring Computer Science class to a full semester of Web Design  class including JavaScript.  Since I have not used JavaScript before it means that I get to learn something new.  My goal is to get a decent understanding of the language, find a set of tools that my students can use, and find places where I and my students can do more.  I am picking up this new technology by going through a book I picked up on Humble Bundle earlier this year; and I am getting hands on experience by learning from others at a JavaScript Meetup which was a new experience.

Humble Bundle

I learned about Humble Bundle last year listening to a podcast, Programming Throwdown (https://www.programmingthrowdown.com/).  It's a monthly (sometimes more sometimes less) podcast that covers a wide range of programming languages, tools, and personalities.  One of the podcasters mentioned getting the bundle each month.

Humble Bundle (https://www.humblebundle.com/) is a website that offers games, books, tools, etc.  They come out with a group of related materials and bundle them together for incredibly low prices -- as low as $1 USD for the first bundle.  They offer additive bundles on the topic for increasing (but still very low) prices.  Earlier this year I purchased a group of books from the Head First series.  I had a paper copy of Head First Java and bought the full bundle of O'Reilly Media books which included one on JavaScript.

I started reading the Head First JavaScript book at the beginning of break and decided that this was going to be a good reference and way for me to learn about the important parts of the language and try some simple projects.  But it didn't answer my question of tools and other ways to get experience, so I wanted to find another way to do this which led me to a Meetup.

Meetup

Grab some coffee and your laptop -- JavaScript Meetup
I don't recall where I first learned about Meetups but had looked at computer science Meetups in the Denver area.  I found one on Python which looked interesting and also one on JavaScript which was exactly what I was looking for.  It advertised itself as "Bootcampers Collective presents our new weekly JavaScript meetup in Denver. We'll be meeting weekly on Tuesdays to work on various projects, kata/whiteboarding, code challenges, and more."  I thought that a bootcamp was just what I needed.  However, to me meetups felt like a millenial kind of thing and going to a strange part of the city to meet with people I didn't know was not exactly in my comfort zone.  Nevertheless, I went and was pleasantly surprised.

The people at the meetup ranged from current IT professionals that wanted to expand their knowledge and learn JavaScript to beginners currently in other fields that were looking to move into IT as a career change.  After introductions, we sat down to work on a problem together.  Someone chose FizzBuzz which was great for me.  It was something I had done as an assignment for my AP CSA students during the lesson on loops, so I felt comfortable with how to solve the problem.  That left learning how to code it in JavaScript.  As an added bonus, we needed to put the results in a array.  I was able to contribute which felt good and learn something new at the same time -- Hey!  I think there might be something good for my students in that statement.

While working the problem I asked alot of questions about favorite tools to code JavaScript -- Visual Studio Code (https://code.visualstudio.com/); a good place for JavaScript reference material -- Mozilla's Developer Network for Java Script (https://developer.mozilla.org/en-US/docs/Web/JavaScript); and a good learn on my own website -- Free Code Camp (https://learn.freecodecamp.org).  Now I feel armed to learn some more on my own. 

Well, that's my excusion into do-it-yourself Professional Development!

Image from pexels.com

Sunday, November 18, 2018

Reflecting

It is the beginning of Fall Break for Pinnacle Charter School.  In the USA we are approaching Thanksgiving Day, and some schools give the whole week off as a fall break.  This week off is a great time to take a step back from the classroom, rest, relax and pause for some reflection before entering the final month of the first semester.
Reflections over Thanksgiving Break

When I was taking classes for my teaching license, I learned about many of the early education researchers.  John Dewey was one of those early thinkers, and among his contributions was the encouragement to engage in reflective thinking.  I tend to put my reflections into three categories:  short-term reflection on things I want to change now, putting last year's reflections into actions, and long-term reflection on my teaching practice.

Short-term Reflection


Most of my short-term reflection centers on the new classes that I am teaching this year.  AP Computer Science A is a new class for me.  The student engagement in the class is not what I hoped it would be, and I think about the changes I want to make at the semester break.  About half of the class is very engaged in the material and actively working hard to learn the concepts and practice them by working on the programming assignments.  However the other half is not as engaged, but complete assignments with the help of others but don't do as well on the tests.  For this class I am divided.  On the one hand I feel that I am being driven by the scope and pacing needed in order to get through all of the AP material.  In order to get more students engaged I consider changing my grading percentages for the second semester to weight more heavily towards tests since the AP test is the culmination of the class, and this would pressure students to put more effort into the class.  On the other hand, I want students to be engaged with the material and think that the pace is preventing that and feel I should slow down and possibly not have time to have a multi-week review before the AP test, but hopefully end up with more students that would be interested enough in computer science to pursue it in college.  I am seeing a discussion on this topic going on in the Facebook group for AP CSA, and others thinking about this same idea seem to fall on the side of taking more time.  And that is the direction I will take my class during the second semester.  I am still reflecting on this topic and have not quite landed on a decision that I am completely comfortable with.

The Game Design class is also new this year, it has had a slow start this year because we did not have the Unity software installed on the machines.  Due to circumstances, we did not get the software installed for the first 12 weeks of school.  Very frustrating, so I stalled by spending about eight weeks teaching the students programming concepts in Python and ending up by creating a text based dungeon crawl game using loops and conditionals.  In the end I think the time was well spent although it was not as smooth as I would like.  For the last month of the semester we will be working in Unity, building our first 2D platformer game and move into the second semester where students will be able to create a 2D roguelike game and then design and develop their own game.  I feel better about this class as I will plan to take it in the direction that I hoped to at the beginning of the year -- we are just getting a late start.  This one is not so much a matter of reflective thinking as it is simply acknowledging a slow start and needing to pick up at the beginning a bit later in the year.

Last Year's Reflections -- This Year's Actions


My end of lesson/unit reflection typically looks like yellow sticky notes that are attached to the unit test on what went well and what needs to change next year.  These either get handled over the summer or during the next school year.  This year I am teaching Exploring Computer Science for the second time, so the number of yellow sticky notes is quite high!  Last year I felt that students did not have enough practice with each of the skills in the web design unit, so this year I have created explicit practice exercises where students practice each skill before applying skills to a larger project.  After 2-3 skills are learned students create a web page of their own design and topic.  I am seeing much better results this year and am happy with the change.  Score one for reflective thinking!

Long Term Reflection


My long term reflection involves looking at the areas where I need to improve in my teaching practice and then looking at the larger view of teaching computer science today and in the future.  As a fifth year teacher the area that I still feel least comfortable is classroom management.  As a student, I was one of those compliant kids that enjoyed learning and when I didn't enjoy it, would still get the work done because that was what I needed to do.  Teaching and working with students who prefer the more social aspects of school, aren't as motivated to do school work, or simply don't see the value in an elective class in computer science is a challenge for me.  I still find myself getting frustrated when students aren't engaged as I would like.  I find that things go best when I acknowledge the students in front of me as individuals with their own unique perspectives, but hold them to the expectations of the class.  Now I just need to do that on a consistent basis! 

I had two great opportunities to reflect on computer science as a whole over the last two weeks.  First, I had my advisory committee for our CTE program over to the school a week ago.  Talking with people in industry about the direction of the program and the industry as a whole is refreshing.  I still have work to do on the input I received and will write about that another time.  The second opportunity was with the Colorado CSTA (Computer Science Teachers Association) meeting this past week.  Talking with other teachers after the session about the directions they are taking their programs is encouraging and exciting.  We are all looking ahead to things like Machine Learning, Maker Spaces, and Cyber Security.  The great thing about this profession is that the reflections look forward as well as backward.  More topics for future blog posts!

Image from pexels.com.

Sunday, November 11, 2018

CS Course Pathway

Another full week at the Pinnacle.  We took a day for our juniors to take a practice SAT test which was eye-opening for many of them to see that they need to remember all of the math and language arts that they learned as freshmen and sophomores.  Several came back exclaiming that they had forgotten much of their geometry -- a good reminder for us all, that all those things we learned long ago may come back.
A thin layer of snow looks pretty, what about
a thin layer of CS courses?

On Friday I met with the Advisory Committee for the software engineering CTE program at the Pinnacle.  Once again I am so grateful for the commitment of these men and women to provide input, guidance, and a willingness to jump in and help.  As a teacher busy with the day-to-day activities of the classroom, it is good to step back and take a longer look at the program.  We spent an hour and a half discussing our five year plan and looking at the courses that are being offered.

Today I woke up to the first snow of the year in the Denver area.  While I walked the dogs, I thought about how the light snow made for slick sidewalks, and it gave me pause to think about the classes I have setup and wonder if too thin a layer of Computer Science classes (trying to do too much) can make for a slippery path for students taking CS in high school.

Pinnacle:  CS Course Pathway

Pinnacle:  Computer Science classes
The pathway of courses will be completely rolled out with the next school year and is shown in the diagram on the left.  It begins with Exploring Computer Science (ECS) which has no prerequisites and is laid out with four units of nine-weeks each:  
  • What is a PC (computer hardware)
  • Web Design (HTML and CSS)
  • Programming (Python)
  • Robotics (Python with libraries)
It is designed to be a survey course that exposes students to many different parts of computer science.  Once completed students can explore areas that are of interest to them.

Students that want to learn more about the hardware and networking aspects of computer science can take a series of Independent Study classes which are offered online through TestOut (www.testout.com/).  These online classes prepare students to take the CompTIA A+, Networking+ and Security+ tests and allow students to get industry recognized certificates.  Because the classes are offered online, I can teach all three courses concurrently and have students checking in through review quizzes and hands-on opportunities that I set up.  This is a great way to offer a three course path in hardware and networking and only use a single class period out of my day.

Students that enjoyed the programming unit can jump to a full year Game Design class that is built around the Unity Game Engine (unity3d.com).  The course is mostly about how to use the Unity tool to build scenes, sprites, etc.  The programming in the course is done with C#, so students are exposed to another language.  This course was added based on student interest and demand.  The prerequisite for the course is ECS.

Students that enjoyed web design and programming can take an every other year course call Web Design / Intro to Programming.  The class is one full semester on Web Design which quickly reviews the HTML and CSS from ECS and then moves into JavaScript and adding a new programming language which can allow the addition of things like games to a web site, but can also be used to added data access and storage.  The second semester is an introduction to programming with the Java programming language.  This is an addition in order to help my students be more successful with the AP CSA course.  It will be a new class next year and I hope to teach students the basics of programming using an environment like Greenfoot and then transition to Java.  The pre-requisite for the course is ECS.

AP Computer Science A is the final stop for students that are interested in programming.  It is a full year course that will be offered every other year, alternating between Web Design / Intro to Programming and AP CSA.  As with most Advanced Placement classes, students can receive college credit based on the score they receive on the test at the end of the year.

Taking A Step Back

One of the great things about being the CS teacher at a small charter school is that pretty much any course that I offer to teach gets accepted.  As a result, I have proposed many new courses that I am interested in teaching and that I think will put students interested in computer science in a good place to discover many different areas in the field.

My biggest fears with the course pathway, that will be complete with the next school year, is that we are trying to do too much and that there won't be enough student interest.  As a small school there is a limited set of electives,  I am trying to offer students a variety of classes that they can take but fear there will be too many options and make it confusing for students.  The other fear and perhaps the larger one is that in a small school, there won't be enough student interest.  With the 42 students that I have enrolled in two sections of Exploring Computer Science, I only see a handful of students that I think may be interested in taking follow-on courses in CS.

I hope to partially remedy the situation by making sure that our middle school students know about the options available in high school and can actively request to be involved in intro CS class so that they will have the ability to take all of the classes that interest them.  That means starting an advertising campaign with our middle school in January.  We will see where this leads, but I am hopeful!

Images are my own.

Sunday, November 4, 2018

CS lesson planning: The blank screen

It was a good week for Computer Science at the Pinnacle.  One of my students attended the Rocky Mountain Celebration of Women in Computing (@rmcwic), and she met some interesting professionals and graduates students in the IT field.  I am grateful to the ACM for putting on a conference like this in the Denver area and taking the initiative to invite high school girls to one evening of the event.  It reminds me of the need to put an increased focus on getting more girls in my upper level classes.  The fractions for my classes this year are not good.  1/2 of the students in Exploring Computer Science are girls (freshman elective that students are placed in); 1/4 of the students in my Game Design class are girls; and only 1/7 of the 14 students in AP Computer Science A are girls.

We also competed in the first round of Cyber Patriots (@CyberPatriot).  Our school still has two teams competing and both teams did better than last year, so we are starting out well!  When I looked at the score board at the end of Friday evening, we were right in the middle of the pack for the 80+ teams that were competing from Colorado.


CS Lesson Planning

I have been teaching CS for four years and am now teaching three computer science classes:  Exploring Computer Science, Game Design, and AP Computer Science A.  I have built these classes and the lessons with them in three ways:  from scratch, starting with a blank screen each week; using a course guide or curriculum structure that provides a skeleton to build on; and using a fully completed curriculum with all lessons, labs, quizzes, and tests included -- easy street.

Grey and Black Laptop Beside White and Teal Coffee CupFrom Scratch:  The blank screen


When I started teaching my first beginning Java programming class four years ago, I looked around for text books with teachers' editions, similar to what I knew in mathematics -- I didn't find any.  Being a new teacher at a small charter school without district backing I didn't know where to go for resources or who to ask.  But I did have a long career in IT to draw on and so I built the class from the ground up pulling from various resources.  I sat down at my laptop each weekend and looked at that blank screen.  Some weekends things came together quickly, others not so much.

Occasionally, I go back and look at what I had put together from a mix of resources and building up the class in an order that made sense to me (https://sites.google.com/site/scholtenjava/).  In the end I was fairly happy with what I put together.  It took me three years before I had a set of lessons that I felt good about and would only make a tweak or two for each unit. 

Spoiler Alert:  Not until I saw a fully developed curriculum from APlus (https://www.apluscompsci.com/) did I see how many short comings my curriculum had.

Course Guide:  The skeleton


The second class I started teaching was Exploring Computer Science (http://www.exploringcs.org/).  What a difference and how much easier!  Before teaching the class I attended a one week training where I was taught by experienced teachers of the curriculum and worked with other new teachers to build out complete a complete lesson from each unit.  At the course, I received a course guide with unit plans and outlines and idea starters for each of the lessons.  Throughout the year we met online and via conference call four other times.

The course guide provided so much material that lesson planning became a matter of reading the material and then deciding how I wanted to teach each section and then building a set of Google Slides to teach the lessons and then designing the activities to support the lesson.  However, the course guide provided lots of materials and ideas to support this.
Selective Focus Photography of Skeleton

Using this curriculum skeleton gave me the structure and a good deal of material and lesson planning was cut in half.  If you can find a course guide with lots of ideas, your life is much easier.

This year I am teaching Game Design and found a similar course guide put out by Unity (https://create.unity3d.com/unity-educator-toolkit-whitepaper).  Course guides although only a skeleton provide the start and make the lesson planning process much easier.

Fully Developed Curriculum:  Easy Street


This year I moved from teaching my Java class to teaching AP Computer Science A.  Thanks to CTE funding, my school was able to spend the money to buy me the APlus curriculum.  This is a fully developed curriculum that provides Powerpoints for each lesson; worksheets to review concepts; 10+ labs for each topic so students can practice coding; quizzes to review the topic; a unit test that covers multiple choice and free response questions similar to what students see on the AP test.

Each unit I can do planning in the way that I learned in my education classes.  I start out by looking at the unit test to see what the final goal is for the students and can do my backwards planning.  I review the lesson and may choose to add or eliminate a few pages.  Then I select the learning activities for my students based on how much practice I think they will need on the topic.  I build up a review using the quizzes and create a practice free response question for the students.

While I realize that this isn't always going to be the case, I definitely know that whenever possible I want to find my way to easy street and use a fully developed curriculum!