Showing posts with label Bookshelf. Show all posts
Showing posts with label Bookshelf. Show all posts

Monday, March 30, 2015

String Immutability - APCS A Deep Dive

Content has moved to CodeVA's Teacher's Lounge - latest post


http://www.supercs.net/2015/03/29/immutable-strings/



The String class can cause a lot of confusion for students as they first start working with code. We often introduce it early in the year, indeed it is hard to do many meaningful things without it. The problem is, as an example of a class data type, it can behave in some unusual ways...

Wednesday, October 16, 2013

How to Teach the Internet - Don't

Today my Computer Science Principles classes are starting Unit 2: The Internet Unplugged.

So rather than a terrible exciting lecture on the structure of the Internet - translation "Here's what I think you should care about" - we started with questions.

Telegraph Lines


They were asked to write their own definition of the Internet, and share at least three questions they have about it.

Really, we all use it daily, so we should all have our own working understanding of what it is. By starting with their understanding I can see where we need to add information and what the emphasis should be.

The questions help me plan our activities. By the end of the chapter I want them to understand that the Internet is a physical thing, and be able to describe how it works. I want them understanding how content is posted and to discuss the implications ethically of its content. I want them to know a little HTML and CSS and have the confidence to look up what they need.

But first, I want them thinking.

Questions they asked:
  • How is it possible that the internet can be censored in some countries?
  • Who owns the internet?
  • Who made the internet?
  • How does it actually work?
  • Why was it originally created?
  • When did personal computers have access to it?
  • Who owns data on the internet?
  • Why is internet copyright so important?
  • How hard is it to break the internet?
Right now some of my favorites are Who owns the internet? and  How is it possible that the internet can be censored in some countries? 

Frankly we could start by investigating those two things and cover everything we need to know.

Bookshelf:

Some Lessons We'll do:

Sunday, September 1, 2013

Using Music to Teach Programming

So, what does Paul Simon have to do with array processing?

Glad you asked.


As anyone that has tried to teach arrays can tell you they can be a bit dry. Sadly, the best way to really understand anything in programming is to practice. One of the best workarounds I have found is storing music in arrays. My AP kids never really got into the classic drunkards walk program, but make it a random set of notes on a kazoo and tuba and they were all over it. Music lets them play, which means more practice.

This is fairly simple to do. Each note is a number, or an object, depending on the language. I have done this in Scratch, Visual Basic and Java with the kids. Scratch music is built right in, in VB we use the Beep command, and in Java I use the JMusic tools.

And what, you might be asking, does this have anything to do with You can Call Me Al?

If you listen ahead to about 3:30, there is a bass solo. A Palindromic bass solo. The first part was recorded by Bakithi Kumalo, then played backwards for the second half

The lesson:

  • Play the video - ask them if they notice anything about the bass solo - you might need to play it a few times, and it helps if you have some band kids in the room.
  • Make sure everyone understands palindromes
  • Code a tune - store your notes in an array.
  • Create a new array that will store the original tune, then store it backwards.
  • So if your original tune was:  A B B D E the new array would store A B B D E E D B B A
  • Demo the songs to the class.




Another extension here is to watch the video of U-Bassists Abraham Laboriel and Bakithi Kumalo jamming in 2012. What happens if a musician makes a mistake on stage?

I am planning on using this as a journal prompt this year. One of the hardest things for new programmers happens around mistakes. Sadly this is a by product of much of the rest of their education. They are trained to find the right answer.  In computer science we care most about the correct solution, and that is usually going to take several tries. Sometimes the mistake points the way to a better solution. My goal is to get them to embrace their mistakes.


Curious if anyone is using music in any other languages - if so, please share. 

Saturday, May 4, 2013

Getting Things Done for Teachers


Teaching can be like a field trip back to 1982. Phone access is limited and the web is filtered (if it is working at all that day).

So trying to stay productive in a web 2.0 world can be a challenge.

1982 called - they want their technology back


One of the best tools I have developed over the past few years is adapting the principles of David Allen's GTD to the classroom.

The system is pretty inclusive, and you can read about it in lots of details in his books. For me there are two parts that have worked especially well in the classroom.

The first is changing how you tag your to do list. I used to keep it by noun- or topic. So it was sorted by APCS, Intro class, or Website. In other words I listed things by what part of my job they were related to.

Which had nothing to do with WHAT I actually had to do.

So now I keep the list by verb. By what I actually need to do. So I have a phone call category and a errand school category. And grade and email categories, you get the idea.

As you all know just getting to the phone or to the office to check your mailbox can be a real challenge. I want to make sure when I get to use the phone I have a full list of ALL the parents I need to call. If I am going to make the 5 minute trek to the front office (my lab is in the absolute back corner of the school) I want to make sure I have everything I need with me.

To support this I built a binder specifically for my planning period where I stick all the paperwork that fits these categories, so everything is in one place when I actually get planning time. That typically is about 30 - 45 minutes a day, so that time is pretty valuable.

I use Remember the Milk for my list. It makes filtering by activity super simple and I can add things on my phone. There is a free version of the app.

The second part I really use is the weekly review. The idea is you regularly go through all of your inboxes - email, mailbox, papers to grade, all of it, and you build and capture what is there and what needs doing. This year I am managing these reviews about every other week due to my limited planning time.

Again, there are tons of web resources out there describing different takes on this. I keep it pretty basic. The idea is everything you touch (or open in the case of email) gets planted somewhere. For me it is either a to do, something to store and reference later, or trash/recycle.

Included in this is a review of the calendar. I look over the past few weeks to see if there is anything unfinished still hanging out there, and look ahead and cross check my lesson plans so I am not tying to do a class discussion on the day of the senior picnic.

Anyhoo, I keep getting asked this year how I get everything done. Frankly I don't, but having this system in place lets me really concentrate when I need to without worrying that I am forgetting something. And sometimes the appearance of efficiency is almost the same thing.

Wednesday, April 17, 2013

Great Books for CS Principles

The applications to pilot the new CS Principles class are due today. As folks were working on their submissions I have had several questions about books I used as a part of developing curriculum for the course.



I want by starting with a caution. Relying too much on one book runs the risk of locking in your curriculum. The course is most powerful when you have the flexibility to adapt what you are doing to where the students interest point. Relying on only one book you run the risk of robbing them of this experience.

Also, you as the teacher need to be driving your course. Obviously we need materials to fill in gaps in our own knowledge, but you ultimately need to develop these materials to meet your students where they are and pull them into the course.

So, now that I have warned you, here is my partial  list of books I used over the past two years.



I am curious, what books have you all been using? Anything unexpected?

Monday, March 18, 2013

Big Data - Research

When I start off with a new topic in class I like to gather as much information as possible. Most of it will never make it to the notes of activities the kids see, but I find the more stuff floating around the ol' noggin the better I do with teaching the topic.

Data in particular is difficult. I majored in math - which was great for the theoretical underpinnings of mathematics (totally practical on a daily basis). The field of Operational Research was brand new when I was going through college, so again, not a huge foundation for this whole data thing.

Some of the resources I have been using, in no particular order:

Thursday, September 20, 2012

Weaving Binary and Peeing in Buckets

Weaving! Today was craft day in CS Principles. We are starting binary numbers - and if you think weaving in a computer science class is odd, I'll have you know that one my favorite computer science book ever was A Computer Science Tapestry by Owen Astrachan. It totally relates.

I borrowed a frame from our art department and set up the warp using this description:



I used cotton for the warp and wool for the weaving. Using a  needle and thread I got us started, then we passed it around and everyone took a turn:




So, why weaving in computer science? Binary is the mast basic way of communicating weaving and knitting patterns. Think knit - purl - knit -purl. In weaving it is over - under - over - under. Alternating rows of over - under gives a small checkerboard pattern. By changing this we get different patterns in cloth.


Houndstooth Pattern


This brought on a whole load of questions, and we did get off topic a bit. One kid brought up that the Romans used urine to dye fabric...and in fact To dye animal fibers you need an acid to fix the color to the fibers, which is why Kool Aid can be used to dye hair, or wool. Uric acid was the first commercially available chemical. Long time ago folks used urine to do indigo dyeing, which meant collecting a lot of the stuff. In a bucket, in the barn.

We did finally get back on track and watched a video on Jacquard Looms. I know we always use the examples of punch cards coming from looms, but really who cares? Today was the first time in all the years I have taught this that it mattered at all to the kids. Doing the weaving first made them really ask a lot of good questions about the loom. And the idea of storing a pattern and algorithm in a binary system is the basics of everything we do.

The final Product, it's a bit lumpy, but it is made with love.


They really got into this and had lots of questions. Had I known I would have set everyone up with a loom so they could make their own. Might be an interesting extension to give them a pattern in binary and see what the design ends up being.

After the weaving we started on binary numbers. Last class we spent about 20 minutes doing an activity covering how base ten numbers work. Today for the fast start their question was "if you only had 1's and 0's to represent numbers how would you represent 0, 1, 2 and 3?" Lots of good debate over how to show certain numbers.

Last we made our Analog Binary Calculators that we'll use the next few classes as we go more in depth on how binary works.


Thirteen!


Update: Here is a post about the weaving program at the Henry Ford Museum in Michigan. I got to see the Jacquard loom in action last summer when I was there for Maker Faire.

Friday, July 27, 2012

Tubes and Squirrels

They really are evil.
OK, For full disclosure, we have a thing about squirrels at our house. Every year we plant tomatoes, and for the past three we have not gotten a single tomato. Now I know you are probably thinking we just don't know what we are doing...But those beautiful, healthy tomato plants are surrounded by eggplant, peppers, swiss chard, peanuts (yes, peanuts), beans, chickens...you get the idea.

Unfortunately those beautiful, healthy tomato plants are also surrounded by squirrels. Our octogenarian wiener dog is a bit past the chasing other mammals phase of his life,and the blind Labrador is full on useless at this, so it it rodent city around here.
And at this point you are wondering what any of this could possibly have to do with computer science. Normally you'd be right, but there is a tie in...Tubes.

I got this out of the library, and it is so good I ended up buying a copy. The author starts his journey to discover the structure of the Internet after some of the aforementioned rodents disrupt his connection to the net.


I am hoping to get some classroom copies for this next year - it would work well in both the CS Principles class and in the International Baccalaureate Computer Science courses. Great background on the physical structure of the Internet. It is at a level most high school kids should be able to read it. Plus it would work really well with Baker Franke's #hashtagging homework project - which you can find on his course Moodle here with a more complete description given during the CS&IT presentation here.






Sunday, July 1, 2012

Random Numbers make Big Hair



Random numbers are one of those core topics in teaching computer science. We experience them all the time, but most folks really don't know anything about how they happen or what they are used for.

Often games are the most obvious way of teaching about random numbers. It is a quick and easy way to introduce the topic. However there is a downside in relying too much on games. Not all students, especially females, are naturally interested in gaming. Traditionally it is perceived to be a very male centered activity and  only using gaming to teach runs the risk of turning off a large chunk of our students.

This month's Wired Magazine had a quick article on how the animators at Pixar created the hair in Brave. It gives and interesting discussion of how geometry and computer science come together in animation. The article is nice and short and would make a good discussion board prompt on random numbers.

I do use games throughout my courses, but I try to balance them with other types of programs. We use a lot of media computation based problems also, and when I do games I try to wither offer a social component or an alternative assignment.

A side note - overall this was one of the better issues for high school kids. Pretty readable overall, and less questionable content than some.


Tuesday, June 26, 2012

CS Principles Bookshelf

One of the things I get asked most often about the pilot is "What textbook are you using?" In reality limiting the course to one book isn't possible. Part of the whole point of the curriculum is broadening the focus beyond just teaching coding.

Also, computer science is by its very nature is not static. Having a great set of reference books to work from has been essential this past year.


These three were my main resources:
  • Computer Science: An Overview by J. Glenn Brookshear
    • This book did a good job of covering the basics, plus it covered some other areas like artificial intelligence and computer graphics.
  • Computer Science Illuminated by Nell Dale and John Lewis
    • This one takes a layered approach starting with the information layer of how data is stored and processed and then moved up through applications. Each chapter had a good set of thought questions, beyond just simple vocabulary and multiple choice, that related to the topics covered.
  • Explorations In Computer Science by Mark Meyer
    • This books takes a laboratory approach with a series of hands on applets. Great for brainstorming how to approach a topic.
Some other books I used. If you haven't guessed I am a huge reader, so this is just the tip of the iceberg.
  • Introduction to Computational Science by Angela B. Shiflet and George W. Shiflet-
    • This book was new to me this year. One of the hardest areas to teach with the CS Principles course was Large Datasets. While the book is over the head of your average high school student, it is a fabulous resource for teachers. It is all about how computers are used in modeling and simulation and has an entire module on errors in modeling. Each topic covered has several case studies that range from Drug Dosage to Skydiving to Mushroom Fairy Rings. Great examples to pull from.
  •  Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
    • This covers the first steps of representing data as a code - like Morse code all the way through graphics. It is clear and easy to follow with fun examples. It is a it a level high school students could follow most of it, although some passages get a little more mathy than most students are comfortable with. This is one of the books I came back to again and again.
  • The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography by Simon Singh
    • This is one of my all time favorites. His website also has lots of great interactive tools for teaching on this topic. I have used the digital version in class for several years. I also have developed a set of  hands-on cryptography activities whenever the network is down at school-like Caesar sticks and Morse code.  Understanding some of the history of how humans used encryption to send messages makes the abstraction of computer science easier to understand

Tuesday, May 29, 2012

I Have a Dream - bookstore edition

It is sad that in the local book store with the best selection of these:

There is not a single computer science book in these:


My goal? To have enough local high schools offering computer science that is is financially viable for them to carry computer science review books too.

Sunday, May 27, 2012

It's the end of the year as we know it - and I feel fine

Fourteen days left...not that anyone here is counting.
The end of the year is always bittersweet. Summer - positive. Goodbyes - negative.
I teach many of my computer science kids for all four years they are in high school. They are going on to great things, but I still miss them.


So this isn't exactly computer science, but it is definitely teaching. And I could use a dose of inspirational.
In the past month I have tried to explain the whole Dave - Eggers/education thing to at least five people. Here's a summary:
  • Ted Talk - while I am not a writing teacher, per se, this is exactly what I am trying to create in the lab. I watch this several times a year, always good for inspiration.
  •  Teachers Have It Easy: The Big Sacrifices and Small Salaries of America's Teachers - I have not (yet) read this. Seriously folks, it is the end of the school year. If I make it to the end of the day without getting caught in a food fight I am doing really good. It is on my summer catch up list, promise.
  • The documentary - Here's an NPR story about the documentary AMERICAN TEACHER. As a computer science teacher one of my grumbles is, well, other teachers' grumbles. When they complain about lack of planning time I try to remain calm - most other subjects have age-appropriate books with worksheets and practice problems. Over my 15 years of teaching computer science I have probably written five or six textbooks. Notes, worksheets, projects, the whole thing. These things are in short supply for computer science teachers.

    One of the main points of his work here is the amount of money spent on textbooks, $8 billion. Now I do not mind developing materials for my classes, curriculum work is actually part of what I enjoy most about teaching. It is just sad that out of that huge total the computer science teaching community is so under supplied.
So here it is - a little reminder of why we do what we do. Something to get you over the hump until summer. Just curious, where do you find inspiration?


Saturday, January 28, 2012

Second Semester Looms

So now that we are past the holiday rush, and exams are done, I am trying to pace out second semester. I have boon looking to a couple of places for inspiration.

Wednesday, October 26, 2011

Cans and String: The Internet Unplugged

I am still gathering materials for the CS Principles course. Every time I think I am caught up I find something new.

Today while reading over the blog by Harry Lewis , author of Blown to Bits, I found a book that is exactly what we are going over right now.

On my shopping list: D is for Digital by Brian Kernighan. He teaches at Princeton. Here is the course website: Princeton site for CS 109

We are in the middle of Unit 2-The Internet Unplugged. We've done HTML, as an example of abstraction and creating digital artifacts. We'll be adding CSS next week. right now we are talking about the physical structure of the Internet. I honestly thought this lesson would be a bit dull, but the students really had a lot of questions. I try to end each block with an "exit ticket". Last class they had to tell me one thing they had learned new and one thing they were curious to learn. This helps me steer where we are going.

It is amazing how little they really know about the Internet...it has been omnipresent since they were little, so very few of them have ever really looked at the how and why behind it all. To me it is foundational for technological literacy.

I am so glad we started with binary this year. Honestly it was a stall tactic-I had planned on doing it when we got to number calculations, but I had a few days to fill in Sept so we did binary, octal and hex. It had turned out to be perfect- so much of what we have done has related back to that lesson. Tomorrow we talk about IP addresses.

Tonight I am forcing my own children to eat a buffet of canned foods. Fortunately they like tomato soup. We're doing the "Two Cans and a String" game tomorrow and I am a bit short on cans. My challenge for the students is to discover how long a piece of string can be before the message breaks down. My plan is to use this an introduction to error checking - how do you KNOW the message you get is correct? I think it will also help with the idea of packets.

I have also been reading The Internet of Elsewhere. I am still reading the chapter on Korea. It includes a great description of the beginning of packets on the ARPANET. I like that it makes the connection that before packets information had to be sent in one long dedicated connection, like a phone call. I am hoping that our Cans and Strings activity will also help drive this point home.