A Tale of 2 PDs

Posted on October 20, 2017 by Christalee

Recently I attended two professional development events nominally aimed at “maker educators.” They ended up being pretty different experiences, though!

One event was held at a university, lead by a faculty member who (with colleagues) has developed well-known tools and pedagogy for the pursuit of creative technology. Like most PD for teachers, it was structured as a lecture with projected visuals and some live-demos. Since only half a dozen were in attendance, we did have some chances to bring our own experiences and questions to the group, but this was insufficient critical mass to really get a discussion going.

The other event was held online, organized by researchers at another respected university program focused on learning with technology. I had signed up only a few hours before, so I didn’t realize the team was using an unconference format. I tossed an idea into the nomination pool on a whim, hoping to spark some conversation at a more abstract level than swapping standards-aligned lesson plans. (Nothing against lesson plans, but it’s not why I came!)

Surprisingly, my session proposal quickly got traction, mostly due to a catchy title. When the voting was over, I found myself chatting with half a dozen educators about challenges they’ve faced getting maker programs off the ground in their schools. Several others popped into the chat over the next 45 minutes, although technology issues made it tough to promptly invite them to speak. We used an Etherpad to summarize the discussion and collect resource recommendations.

I did my best to facilitate the discussion, which did not go in the direction I had in mind when I proposed it. But that’s the double-edged nature of unconferences - you never know which perspectives are coming to the table. I enjoyed it, although I wasn’t expecting to talk so much - that was a bit stressful. Next time I’ll come prepared! And I would’ve liked to pop into other sessions that sounded interesting; luckily the organizers sent out all the session notes afterwards. The event attracted ~50 attendees, many of whom seemed to already know each other, but we all introduced ourselves in chat and had a channel to swap contact info.

I love observing educators in the student/audience role - do they react the way their students would? What are the goals of the organizers? attendees? How are those goals served by the format of the event? Was the event as-advertised, or did it go another way?

Teacher PD is often organized in a fairly traditional lecture/slides format - odd, when so many educators have moved away from that model in their own classrooms. The outcome is relatively predictable, though, compared to an event that depends on everyone’s participation. Do you have thoughts on what makes a PD session more or less effective? Have you attended an unconference, or presented at a conference session? Would you rather do all your PD online, or is the networking/facetime important to you?

Teaching Programming in 2017

Posted on June 23, 2017 by Christalee

Recently I heard from someone newly hired to teach programming/web development at a CTE (vocational) high school. CTE programs vary in length and duration, but the ones I’m familiar with typically require 1080 hours of technical instruction over 3 years (alongside classes to fulfill non-CTE graduation requirements.) Instead of laying all my overly optimistic ideas on this poor fellow, I’m going to park some of them here. My advice is based on what I’ve observed from friends working in industry (mostly software engineer, sysadmin, and web developer roles) with and without CS bachelor’s degrees; close friends helping or leading hiring processes for programming jobs; and my own observations of what job ads ask for and what those jobs actually entail. my limitations

Anyone teaching computer-related topics in 2017 knows that: 1. The range of skills, compensation levels, and working conditions in “tech” is huge and unpredictable. 2. Trying to future-proof your students is impossible, but depending on their college/career goals, you need to strike a balance between exposing them to transferable but abstract concepts vs. fostering mastery of specific tools. Students should leave your program showing mastery in a cluster of skills, to build their confidence and ensure that they know how to learn beyond the beginner level.

One challenge is to contextualize and connect different computer-related roles and careers. Ideally students get a taste of multiple fields but end up clear that different job titles/paths go with different daily activities, salaries, business sectors, and educational requirements. An Oracle DBA leads a different life than an iOS designer or an embedded systems engineer. Keeping an eye on the job market is essential input for your curriculum. Internships, field trips, and career talks from working professionals may not be enough to get students to distinguish between career paths. Other career exploration ideas: ask students to review a resume and suggest what jobs it would and would not be suitable for, with tips for improvement; browse real job ads on Craigslist, Indeed, and LinkedIn, and talk about what differences and similarities they see. The details of this web developer roadmap are overkill, but if you can find or create a simplified version, it could be a good visual aid.

A common complaint about CS education is that students are taught too much math and abstract CS, which isn’t applicable to their future jobs. This is pretty funny to me: in this era of widely distributed systems, big data, and high-performance analytics and availability, you have to design systems for big N. Sampling and distributions are essential to understanding what an SLA (service-level agreement) means for your system’s uptime and monitoring needs. Working programmers need to step outside their IDEs and communicate with QA, sysadmins, UI designers, and DBAs. Knowing enough about topics outside your module to ask the right questions is essential. A unifying framework supports students making connections as they learn. The AP Computer Science Principles curriculum, CSTA K-12 Computer Science standards, and anything drawing on computational thinking has good vocabulary on concepts and practices of computing.

My suggestion is to build your curriculum around websites (HTML/CSS/JavaScript/SQL/APIs) and mobile apps (App Inventor -> Java). They are popular with students and potential employers, especially if they lead to a digital portfolio & resume, and touch on:

Topics * variables/functions/loops * how the internet works * how graphics/processors/caching work * data structures & algorithms * databases

Practices * UI/wireframing * prototyping/design workflow * debugging & QA * documentation * version control * testing * forking/remixing

Design the year around two or three big projects, with smaller hardware or special topics units interspersed. Ideas:

Hardware * ethernet & server installation * (dis)assembling a PC * installing Linux on old hardware * playing with RasPi/Arduinos

Special Topics * how do you know when your problem is Big Data or AI or machine learning or buzzword of the month? * basics of network security, threat modelling, password hygiene, & hacking ethics * build an educational Twitterbot (historical events, procedurally generated text/images, ASCII art)!

At some point students will specialize, but have them team up for at least one project, like they would in the workplace. Front end can work with back end to design a schema & API, or with a DBA for a data visualization project; two backend devs can design modules to work together; tech writers & QA can interpret requirements, etc. Talk to your math faculty to find out when students learn stats & probability (monitoring/availability/SLAs), geometry/trigonometry & linear algebra (graphics), and limits & induction (algorithmic analysis). If you have to cover Office, definitely include a deep look at programming with Excel (if you use Google Docs, you can add Apps Script!)

Resources for teaching programming abound, but here are a few tools I’ve used or heard good things about, in addition to those listed above. Cloud9 is an editor/dev environment; Glitch is another, directly aimed at web/API scripting and remixing. I’ve always wanted to use Twine to do a ELA/programming interactive storytelling unit.

To be less pie-in-the-sky, here are CS activities I taught or facilitated with colleagues: - basic programming in Scratch, up through loops and variables (8 weeks) - basic HTML/CSS -> build a webpage in Weebly - students building Android apps in App Inventor - students exploring game dev with Unity 3D - student writing a Python app to display assignment due dates in the classroom, based on the teacher’s updated Google Calendar (using OAuth & RasPi) - students exploring basic programming with Codecademy,, and CodeCombat - “dissecting” a broken iMac & other electronics

Teaching Materials Selection in High School

Posted on June 13, 2017 by Christalee

A few months ago, a former colleague lead a project where students designed, prototyped, and pitched a model of an urban watershed for use as a teaching tool. They had already interviewed local water department staff and watershed educators. Now the instructors contacted me for ideas about supplies and activities for prototyping. Materials selection and Ashby charts are rarely covered in depth for most STEM students or teachers, so I wanted to give them strong guidance. Here’s my advice:

  1. Find a maker or engineer to visit or consult. I put a call out to my network and got a response from an exhibit designer at the city’s science museum.

  2. Drawings are the quickest way to explore design ideas, so don’t jump immediately to the laser cutter! In addition to 2D paper sketches, consider Sketchup or another modeling program to build 3D visualization skills, especially for younger students.

  3. Essential questions: What is the timeline? budget? What concepts or lessons is this model trying to teach? What goals does it serve? What functions or properties does it need to accomplish that?

    Ideally students would come up with these questions, and some of their answers, during the project introduction. One way to get started is to ask students to think about the 5 Ws: Who will use this? When? Where? To do What? Why?

    Or, have them fill in the blank: This model needs to be ________ (cheap, durable, easy to build, easy to fix, fixable without special tools, expandable/upgradable, waterproof, easy to clean, not too heavy, collapsible, creative?)

    Write down these answers and post them on the wall for easy reference.

  4. Grab some boxes and take an hour after school gathering up prototyping materials: plywood, lumber, acrylic sheet, felt/fabric, plastic bottles/containers, metal bars, tile, XPS foam, glass pebbles, PVC pipes, polycarbonate sheet, landscaping/craft foam, aluminum foil, plastic wrap… Also gather scissors, glue guns, box cutters, Gorilla glue, tape, glue sticks, and other tabletop cutting and fastening supplies. Maybe also markers, graph paper, and rulers. Use the boxes to organize everything per classroom and per group. Anything you can’t find or don’t have enough of, put in an order now!

  5. For pointers on how to break down the materials selection process, I recommend MIT D-Lab’s excellent Materials Selection poster. (They also have resources on Adhesives and Fasteners.)

    Ask students to look at the table at the top to get acquainted with the key questions and comparisons between wood, metal, and plastic. Which parts of this chart are relevant to this project? What would you add? Is color or paintability important, or not? Having samples of materials on hand can help demonstrate differences in weight, strength, absorption, etc. and get ideas flowing.

  6. Next, to ground it in the logistics of the fabrication shop, ask students to split up and make a list of machines and the materials each one can cut or join. Add notes on how much time/effort is involved in each method; for example, the entire 10th grade probably can’t design and laser cut multiple iterations in a week. Students may realize they need to improve their CAD skills or get trained on a machine - now is the time to schedule some tutorials!

  7. Step back and check your list of which properties are most important for the prototype and the final product (remember, they may not be the same!) A model you hope to manufacture in bulk as a teaching aid might need to be light, strong, cheap, and waterproof. What combination of materials and manufacturing techniques can accomplish that? You may need to try something out, like comparing the behavior of plywood vs. lumber in water, or do more research, like finding out exactly which plastics can be cut safely on the laser cutter.

    By the time their prototypes are built, students should be able to explain why they chose the materials and manufacturing methods they did. Their analysis can also inform recommendations on how the final product should be produced, although design for manufacturing is a whole topic on its own.

Often, teachers design activities to use what’s on hand, or what can be acquired cheaply and in bulk. But students need to learn how different materials behave, just like they need to learn how different tools work. Materials selection is part of the engineering design process, so I hope I’ve given you some ideas on how to include it in your next maker project!