#makered Ugly Sweater success!!

Well, that wasn’t so hard. :)  I followed this excellent Adafruit tutorial.

And here’s the behind the scenes:

IMG_20141214_112548583_HDR
Connecting the neopixel: – to ground; + to vbatt; D10 to –>
Adafruit Flora
Connecting the Flora VBATT, D6, & GND
IMG_20141214_140912986
Underside of shirt

Some weird things about the code.  The RGB didn’t seem to be working properly.  I have v. 1 neopixels and red should be (255,0,0) but it’s (0,255,0). I thought it might be because they were wired for GRB, but green was not (255,0,0). It was (0,0,255).  Since I got it to work, I didn’t spend much time making it perfect. So, just FYI, this is not normal.

And here’s the code:

#include <Adafruit_NeoPixel.h>

#define PIN 10

// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic ‘v1′ (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(3, PIN, NEO_RGB + NEO_KHZ400);

void setup() {
strip.begin();
strip.show(); // Initialize all pixels to ‘off’
}

void loop() {
// Some example procedures showing how to display to the pixels:
colorWipe(strip.Color(0, 255, 0), 50); // Red
colorWipe(strip.Color(0, 0, 255), 50); // Green
colorWipe(strip.Color(255, 255, 255), 50); // white

}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}

Blogging the #makered Ugly Sweater build: Step 1, materials

IMG_20141213_140651434I’ve challenged myself and the #makered chat folks to build an ugly sweater for Tuesday’s #makered chat.  I’m hoping I can knock this out in a couple of hours, so you’ll see more on this later today.  First things first, you need to gather materials.  For this project, I’m using the following:

  1. Long-sleeved Christmas themed shirt (not as ugly as I’d hoped, but hey, it will do.)
  2. Flora GPS kit. I probably won’t use the GPS module, but will use the Neopixels
  3. Conductive thread
  4. Scissors
  5. Needles
  6. Battery pack
IMG_20141214_104911260
Materials for ugly sweater project
IMG_20141214_104918187
The Flora in last year’s Christmas project

Things I wish I had:

  1. Sensors
  2. Speaker

Here’s my plan of action:

Using alligator clips, connect 3 neopixels and program the Flora to have the 3 lights blink in a pattern, perhaps with delay time.  Once I have the connections and programming worked out, I will arrange the lights and begin sewing them onto the shirt.  My plan is to put the Flora on the underside and the lights on the front.  That’s a little more challenging from a sewing standpoint, so we’ll see how that works out.  I’m not the greatest of seamstresses.  Check back in a couple of hours to see the progress.

Happy CS Ed Week!

Today kicks off the annual celebration of Computer Science known as Computer Science Education Week.  In honor of the week, I made cupcakes (in binary of course).

cupcakes

Tomorrow, we’re hosting an Hour of Code event.  Wednesday and Thursday, we’ll be having a guest speaker Skype in to my CS classes. Also on Thursday, I’ll be running a faculty workshop on coding, with a special surprise for them.  So there’s a lot going on!!

What are you doing to honor the week?

Robots in love (and other robotic truths)

My CS I students are finishing up their first big projects.  It’s a pretty open-ended project that’s intended to have students use the skills and concepts they’ve learned over the last few weeks in a larger and more complex context.  I’ve been thoroughly impressed with the things they’ve come up with so far.  I’ve got a robot tour guide, a robot hide and seek project, an art museum docent/aspiring artist, several varieties  of word games, and a robot musical.

A popular project is the robot dance.  One might think that would generate boring are all the same kinds of projects, but it doesn’t.  Some of my students, even, are a little worried that they haven’t done enough, but I’ve assured them that they’re just fine.  Here’s just one example of the kind of thing they’ve done.  It really is super fun. (And sorry to my Twitter followers who’ve seen this!)

 

What learning is supposed to look like

My teaching goal is always to eventually have students working fairly independently, creating things they’re inspired to create, figuring out what they need to figure out as they need to.   Especially in my Maker-oriented classes, where students are working on their own things, I really want them to find their own solutions.

There’s a lot that goes into getting to that point.  There’s laying enough foundation, so they’re not totally starting from scratch. There’s getting them used to exploring on their own, and not asking for help all the time or asking if something is right or good enough.  That second piece is harder than the first. And there’s getting them to work even when the reward is a long way away.

I was rewarded yesterday for all my hard work in building up the foundation (some of which continued today).  I walked around the room, checking on projects, asking if help was needed, and after one circuit, no one needed anything, so I sat and watched them.  It was weird, and honestly, the first time that’s happened in 5 years.  It only lasted for about 5 minutes, but hey, I’ll take it.

For context, here’s what my students are working on:

  • A cardboard dollhouse with lasercut pieces
  • A board game
  • A mini wooden townhouse with lights
  • An arc reactor a la Iron Man
  • A photography portfolio page
  • A robot that avoids walls

They all came up with these ideas and designed them themselves, and then had to execute the design themselves.  Each one involved learning new things: learning new software, learning to solder, learning to program.  Just by going through the process of figuring out what you need to know in a couple of smaller projects, they kind of had a handle on how to proceed for this bigger one.  I think they have had fun.  They’ll finish up on Monday.  Here’s some pictures that capture the essence of a) middle school and b) #makered.

Creative Computing

Soldering

Board game

Don’t Panic

I probably have at least one other post with this title because I know in the past, I’ve often gone into panic mode when things get busy.  For some reason this year, I started out that way, but now I’m all zen about it.  I think I’m busier than I’ve ever been.  There’s no way to get everything I need, much less want, to get done in a day that I just do what I can and leave it at that.  I don’t work late into the night, though I do usually do a couple of work-related things at some point between when I get home and when I go to bed.  And for a deadline, like grades, I work until I’m done, which does sometimes mean a late night or two.

And while I wish I were plowing through my to-do list sometimes, I also don’t feel ridiculously behind, and I don’t feel that stressed.  I’m starting to really feel what I’ve understood intellectually for years, that stressing over how much work you have is counterproductive.  Go figure.  I will say that it’s kind of a weird feeling.  I’m not sure how to explain it really, except to say that I feel like I’m taking it one day at a time.

Assessment

Sorry for the radio silence.  Last week was incredibly busy.  And I just spent this weekend finishing up grading.  I don’t mind grading/giving feedback.  What I hate is that it comes in such large chunks.  You’re never just grading a couple of student assignments. You’re grading all of them.  Our quarter grades are due today, and after catching up on a few individual assignments, I started doing the calculations for the quarter grade.  When I grade, I tend to think about how I should change something to better get across a concept or to make the students work a little harder.  Some thoughts I had while grading:

For CS I:

  • My labs are too easy and/or I grade them too easy.  For the most part, I’ve been giving no lower than a B on a lab.  These are simple activities that just require following directions. Students that lose points often just fail to follow one part of the lab.  There are a few of these that I think I need to make harder.  The assigned tasks should be more specific and there might be a challenge to get the tasks completed correctly. Some of the later labs were like this, and they seemed better to me.  I could also be harder on mistakes.  More points off for certain things.  Basically, students either get an A or a zero, very little in between.
  • I want to weight quizzes more.  I’ve given two or three quizzes and a couple of practice quizzes.  I think I should weight these more.  They were worth so little that even when a student got a low grade, it didn’t affect their grade.
  • I’d like to squeeze in one larger assessment before the quarter.  Everything they’ve done up to this point has been small things, which will only be worth about 1/4 of their grade when all is said and done.  I’d like to have a larger project or a test before the quarter ends.

For CS II:

  • I did manage a test in CS II, but the balance of small and large projects was off.  We only got one large project and 3 small ones.  We ended up doing two small projects together, so those didn’t get graded.
  • I sort of wish it were a year-long course.  I feel like I’m cramming a lot of stuff into a semester.

I am committed to Project-Based Learning for both courses, and in CS II, I do feel like the concepts stick with the students.  They’ve worked pretty hard and are tackling some very challenging material.  But in CS I sometimes I feel like the students forget everything they learned from one lab to the next.  I put in more assessments to force them to remember, but until I have a larger one, I’m not sure how it will pan out.

Questions I hate getting from students:

  • How long should this be?
  • Is this good enough?
  • Is this right?
  • Why did I get [insert grade here]?

I understand why they ask these questions, and I know sometimes my instructions seem vague because I may not put length or other super specific requirements.  I say things like I’m grading on quality and creativity and complexity.  And they aren’t sure what those mean.  What I tend to say is it needs to be long enough and good enough.  If it’s right, the program will run without error.  I don’t generally get these past CS I.  I think the landscape is so unfamiliar in CS I, they’re looking for places to stakes in the ground.

I know college profs who give F’s when there’s just a missing semicolon.  I don’t want to be that person, but I also want to make sure they’re not too loosey goosey.  I would love to hear from others about assessment, both projects and performance overall.

A great #makered week

Last week, things really started to gel for both my 8th grade Creative Computing class and my CS II class.  On Thursday’s #makered chat, I posted this:

This is an 8th grade student going to town with a Hummingbird Kit.  The assignment was to create something physical with a Halloween theme.  And while her robot probably will only loosely be Halloween-y, she’s ready to work on this for the next few weeks.

8th Grade Student and her 3Doodler success
8th Grade Student and her 3Doodler success

Another student wanted to make a Haunted House, so she laser cut the front of a house, and then used a drill to cut out the windows and then started using the 3Doodler to enhance some of the details on the front.  She asked if this house could be a prototype for a whole city.  Um, yeah, I said, That would be awesome.  She said, oh man, this is what I’ve always wanted, to be able to do stuff like this.

Meanwhile in CS II, I’ve been trying to corral what is a pretty feisty group of students.  There are only 7 of them.  They have been bonded through their experience in CS I, and they have a tendency to want to goof off; however, this week, they finally got to work on some object-oriented programming, again with a Halloween theme.  Below are two of the projects.  My CS II class is at the end of the day, and is followed by a free period for students. Many of my CS students just stay and keep working.  It’s pretty cool.  At the end of last week, I was feeling pretty darn good about my students.  And I have more good student news to share.  Stay tuned!

 

What all my CS students should read

This is an old post, but it popped up in my feed last week.  In it, the blogger describes how he went to a hackathon with a friend, a person he described as a programming god, and just felt totally inadequate.  He watched his friend and realized that his friend didn’t know everything either, that the friend just Googled the problems he ran into and then figured it out.  The next hackathon he went to, he was the programming god, because he followed his friend’s lead.

Both of these people are CS majors in college.  Going from CS major to work at Google (or any programming-oriented job) is a big leap.  You know the foundations, but you do not know exactly how web security works.  When I first started learning to program, I did a combination of things.  I used other people’s code and modified it to do what I wanted.  In order to do that, I had to understand the code.  I went through books, step by step.  And finally, I took some online classes.  I do wish, sometimes, I’d had some direct instruction from a real person in that process, but the reality is, the landscape of computing changes so rapidly that keeping up requires a chunk of just figuring stuff out on your own.  Often, you have a specific problem to solve in front of you, and you need answers.  You can’t wait until the 6-week mark of a course where they cover that topic to get the answer.

I know some faculty hate when students Google the answers to the problems they’re given.  Code for most basic CS exercises can be found anywhere on the web.  And some of those basic CS exercises are necessary foundations, but the solution to a lot of “cheating” is to have harder problems.  Have students design their own problems.  Partner with people in the school to solve real problems.

I have students who are planning to attend a hackathon in a couple of weeks.  I shared this article with them, and I also explained that what we’re doing in class is not what people in the “real world” do.  There are frameworks and tools that real developers use that we don’t, because just those tools themselves are hard to understand much less the coding.  And I want to focus on coding.  And, more importantly, I want to focus on learning.  I want to end with a section from the last paragraph of the post, where describes the hard work learning takes, and the understanding that there’s much to learn:

The barriers to becoming a software engineer are real. People born in technical families, or who were introduced to programming at an early age have this easy confidence that lets them tackle new things, to keep learning — and, in our eyes, they just keep getting further and further ahead. Last year, I saw this gap and gave up. But all we really need is the opportunity to see that it’s not hopeless. It’s not about what we already know, it’s about how we learn. It’s about the tenacity of sitting in front of a computer and googling until you find the right answer. It’s about staring at every line of code until you understand what’s going on, or googling until you do. It’s about googling how-to, examples, errors, until it all begins to make sense.(emphasis mine)

NCWIT Award for Aspirations in Computing due Nov. 2

I have been encouraging students to apply for the NCWIT Award every year.  I’ve been lucky to have 3 winners among my students so far.   This year, I have many more students, so I’m hoping many more applicants.  If you have female students interested in technology and Computer Science, you should encourage them to apply.  Just applying gives students access to a fantastic organization that supports young women in their pursuit of careers that involve computing.  That support is crucial, especially as they move on to colleges where the percentage of women in CS or Engineering might be low.  And beyond that, to careers in tech where again, the percentage might be dismally low.