Pretty much this entire school year, I’ve been trying to come up with a good way to syndicate content to my school web site for my colleagues.  I’ve tried various iftt recipes.  I’ve gone back to diigo, rss, and javascript.  I’ve tried a learning management system.  I was kind of stuck with the school web site because that’s where my colleagues are.  There are a handful on Twitter, but mostly everyone is still just reading email and checking the web site.  Nothing automates perfectly.  For example, diigo is a great option for bookmarking things, but its embedding tool is awful and makes bookmarks hard to read once they’re embedded.  There are no bullets or other options. I tried to use another tool to take the RSS from diigo to Javascript, but the RSS feed isn’t valid so the Javascript is borking. Storify looks pretty good embedded on a web page, but I find it hard to collect the links into Storify.  I can’t get the extension to work well and I don’t want to take the time to visit the site itself. I’m having the same issue with Learni.st.  The embedded format is nice, but the bookmarklet doesn’t work. Delicious no longer has the linkroll tool.

That whole “Small Pieces, Loosely Joined” thing is failing me right now.  I will try to not go all gloom and doom about how the web is falling apart, but hey, exhibit A.

So, I’ve resorted to emailing, mostly.  I see an article or tool I think a teacher might be interested in, I just email them.  Is it time consuming? Kind of. But it’s very direct and this way, I know they’ve seen it.  And, I think, It probably creates a better connection rather than just hoping they visit the web site.  It’s a reminder that there are things that should be automated, and maybe things that shouldn’t be.

Hello, I’m a computer science teacher.  Every day, I read another article about another venture, online or face-to-face, that seeks to teach kids to code.  We’ll make it fun, they say.  I appreciate the effort.  If anything, you’ve at least made learning to code look like “the thing to do.”  You’re like the iPhones of coding.  No one wanted a smartphone until the iPhone came out.  That’s all good.  That makes what I do a little easier to explain.  But if you really want kids to learn to code (and I’m uncertain that that’s you’re real goal), then don’t make yet another tool or start yet another class that’s separate from your nearby school.  If you make a tool, share it for free with your school district.1  Contact a science or math teacher and help them learn to use the tool.  Host a workshop for local teachers.  Hire those teachers for your summer camps. They will share with you how learning actually works so that you can make your tool better.  That’s been the model MIT’s Scratch has used.  It works pretty well.

Better yet, if you really want kids to learn to code, provide money to teachers and schools for training and buying equipment (like actual computers to code on) through a grant program.  Or work on policy at the local, state and national level to incorporate Computer Science into the curriculum.  There are organizations like CSTA that are doing this already.  Maybe you can help them.  Washington State recently decided that AP CS counts as math or science for graduation requirements.  That will get CS and learning to code into the curriculum.

See, all this stuff you’re doing does a lot for publicity, but I’m afraid you’re working against actual change.  And you’re working against (in some cases) diversifying the field.2  Who has the time and luxury to go to summer camp? To work on their on with an online program? People who have resources and time. People who are likely already thinking about computer science as a field.  Often not women.  Often not students of color.  So, again, I appreciate the effort, but I think it’s time you did this a little more thoughtfully and maybe talked to some educators and schools.  Get out of your Silicon Valley bubble for a bit and deal with some of the realities facing teachers and students.  Because we do want to teach kids to code and we do want your help, but you need to work with us.

Thanks,

Geeky Mom, teacher
1I’m starting to see tools that aren’t free, not to schools, certainly not to individuals.
2The exceptions are things like Girls Who Code and Black Girls Who Code as well as CodeNow, which target underrepresented groups.

I’ve been wrestling with a student project for the last couple of days.  She’s doing part of it and I’m helping.  We’re using a tool that I like, but that I don’t know that much about and for which there isn’t much documentation.  There are lots of moving parts.  There’s python, there’s a database, there’s a web framework, and then there’s just HTML.  I started in this computing schtick with databases, so I understand the structure.  I know MySQL syntax and some SQL, but I used PHP to interface with those languages.  Now I’m using a python web framework.

Basically, I’ve been writing a line of code, running the code, and reading error messages.  I was excited when I got new error messages.  I came close, very close, to giving up.  But I finally turned to a forum, found some better examples, changed the function I was using and voila! Success!

But I completely understand my students’ frustration sometimes.  I found myself saying, “What do you mean, that variable is undefined? It’s defined right there!”  Or more often, I was trying to figure out what some method returned: a list? a dictionary? an object? all of the above?  I have developed a pretty good process for reading errors and figuring out where things are going wrong.  My students sometimes get frustrated if they get more than one error message in a row.  I don’t blame them.  We discussed the image below the other day, because it always seems to be true.

one_codeThis also happens when you take out one line of code.  I like the puzzles though.  I can get past the frustration when I have a clear goal in mind, and know what I want the end product to look like.  My students seem to be that way as well.  With really complex projects, though, it’s sometimes hard to see the end goal.  It’s even hard sometimes for them to see the pieces.  This project that I’m working on I broke into pieces.  My student and I are working on different pieces.  And she’s doing a lot of the conceptualizing.  We’re hoping to have at least two or three working pieces before the end is here.  Or at least have a clearer vision of the final goal.  That’s a major accomplishment.  I just hope they can see it as one.

Tomorrow evening at 6 p.m., I’ll be hosting, along with Andrew Carle (@tieandjeans) a Twitter chat around the idea of Making, MakerSpaces, and MakerEd.  These ideas are loosely tied to Make Magazine, the publication that inspires people to make their own stuff.  It returns us to a time when instead of throwing something out, we make something out of it or instead of buying something to fill a need, we make it ourselves.  My personal interest in Making goes back a ways, but I have two pressing projects that bring me back to seriously examining how to approach this.  I’m teaching a Physical Computing class where students will primarily be working with the Arduino platform.  And our school is embarking on creating a DREAM Lab for 1st-5th grade that will be a MakerSpace like space with a hands-on, multidisciplinary curriculum.

So, what are these terms, and what do they mean in an educational context.  Andrew and I touched base this morning to chat about these things.  Andrew has a Maker class already in Middle School, something I hope to add here.  Making is not just about making stuff, but it’s also a philosophy.  It’s a way of approaching teaching that really does put a lot of control in the hands of the students.  The approach is NOT, I would argue, to come up with a project with a specific set of instructions and expect the students to end up in the same place.  One may start there, sort of, but the idea is that students will solve problems by making something directed by their own interests and using their own way of getting there.  They have questions and something they make can answer it.  For example, my own question that I want answered is: where does my cat go at night?  The answer will be found, I hope, from a GPS tracking device I’m making.  So making is the idea of creating something that solves a problem or answers a question or perhaps demonstrates a concept more fully.

A maker is someone who seeks to find answers and solves problems.  They are not trying to get the “right” answers.  This is what I want my students to be.  I want them to be curious and explore their world through these projects.  I do not want them wait for me to give them the answers.  I’ll talk a little more about my role momentarily.

A MakerSpace is simply the space provided for this to happen.  It’s part art studio, part computer lab, part electronics lab, part whatever you need it to be.  MakerSpaces can have supplies as simple as cardboard and tape and glue and as complex equipment as 3D printers, laser cutters, and soldering irons.

Teaching in these spaces and with this philosophy is a challenge for sure.  I’m experiencing a little of this in my tech and CS classes, though we’re not dealing with physical objects there.  But students are allowed to go in whatever direction they want.  How do you help 6, 10, 20 students who are all doing different things?  How do you encourage effective use of online resources?  This is an area I’m finding I need to work on the most.  I do want to guide my students, but I don’t want to answer the question, “What should I do?” or “What am I supposed to be doing?”  What I want to answer is: “I want to do x, how do I do that?”  I’m also thinking about structuring classes around things like badges, so that students can move at their own pace, and perhaps be more encouraged to do so.

What is MakerEd then? I think that’s what we’ll be exploring in these chat sessions. Is it just about creating stuff with your hands? Is it a philosophy, and if so what is that? How does one take this approach in an environment that is often very counter to this approach? What about testing? What about grading? What are our students learning?

I’m looking forward to finding my way and learning from folks out there who are already doing a lot of this.

Enhanced by Zemanta

Another Friday, another collection of random links.  I think, though I’m not sure, that they’re all different from last week’s.

Quite a list, and aside from productivity things like Drive, Mail, and Calendar, mostly different.  I think I’m scaring myself.

Education is not the piling on of learning, information, data, facts, skills, or abilities – that’s training or instruction – but is rather making visible what is hidden as a seed.

Thomas Moore

Dandelion seeds (achenes) can be carried long ...A former boss once said to me that I planted seeds.  The implication, I think, was mostly positive, indicating that I have a lot of great ideas.  But it was also a little bit about my lack of seeing those seeds to their full growth.  If anyone has seen my yard and/or indoor plants, you might understand that this is a bad metaphor for me.  Most of my plants are sad looking things, barely surviving their poor caretaking.

But it’s true that most of what I do is give out ideas, get people started and then leave them to finish things up, to grow in whatever way they want.  With my students, I’m providing a lot more support.  I continue to give them information, push them, encourage them, etc.  But still, there’s no way of knowing if what I’ve said or done will effect them five years from now.  Having contacts at my former job, I know some of the things I floated as ideas as early as 10 years ago are now coming to fruition.  Some things I started are still flourishing, which is heartening to see.  I can only hope that some of my current students have learned something in my class that helps them or guides them ten years from now.

At my current job, people often credit me for giving them the idea to do something, which is also flattering.  Many of my ideas come from Twitter or blogs I read. Because I’m in a small school, I know what my colleagues are doing and what they might need.  I just happen to be at the right place at the right time (online). For my own teaching, though, I’m a bit on my own.  Not that many CS teachers tweet or blog. Which I think is weird. I’m grateful for those that do.  I love sharing ideas with them and stealing the good ones I see (:)).  I think, though, of my CS teaching as planting seeds, primarily because there’s so much to Computer Science, I’m constantly aware of how much I’m *not* teaching.  There’s just no way to cover it all in high school.

I am lucky, however, in that I get to have students over the course of several years and often, I get to have them in multiple contexts, class, clubs, in other social situations.  I really get to know them as people.  That allows me to cultivate the seeds I’ve planted more thoroughly, and better.  And that’s what I think about most often.  I want to plant more seeds earlier.  I want to nurture them more.  And my challenge right now is, how.

 

Enhanced by Zemanta

Today I worked on something kind of hard.  And it’s something I’m asking one of my students to do.  I had to connect three different things together: HTML, a database, and Python.  I was using a tool, PythonAnywhere, that I had introduced to my students earlier.  I, myself, have used PHP, HTML, and MySQL (database), so conceptually, I knew how to make this work, but practically, I wasn’t sure.  My students don’t even have the concept part down, which makes it even harder for them, so I wanted to have step by step instructions to get them started.

So, I took it one step at a time, myself.  I did the easy part first, creating the HTML form to take input.  Then, I went to my Python file and wrote psuedocode for each function I needed: one to add data, one to delete, one to update, one to show/sort.  Then I made my database directly in the shell.  I wrote a single function, connected it to web form, and then tried it out.  This is actually the opposite order in which I told my student to work–sort of.  I had her my the database first.  Then, I had her make a form, then the Python.

The hardest part of all of this was explaining conceptually how all of it works.  I knew.  I could envision from the beginning how the pieces were going to fit together. For me, it was just a matter of trying out the code in this unfamiliar environment.  I was integrating new knowledge into old.  Lots of, “Oh, that’s how they do that!”  My student, who was having a hard time grasping the idea of taking data from a form and storing it somewhere where you could access it in different ways, had no vision, no model for what that looks like.  It was all new to her.  Yes, some of the Python code is familiar, but the context is very foreign.

I’ve been doing some reading about this problem.  What do you do when you have a student who can’t create a model of something in their head?  What if there is no previous knowledge to build on (or very little)? How do you help them learn? Sometimes we use metaphors.  In this case, I could have used a bucket metaphor maybe.  I tried to use a spreadsheet as a model, which sort of worked.

I was excited to have figured out how to make everything work, but struggled to figure out what to do to make it more straightforward for my students.  One thing I think I will do is teach web programming more directly.  We dabbled this year because we had some time, but I think this is the kind of thing my students might encounter and might be interested in.  And I can teach a lot of other concepts through this.  Investing more time on it seems like a good direction.  I need to do some more thinking about what to do when the concept goes straight over their heads.

Enhanced by Zemanta
Thought

Thought (Photo credits: www.mysafetysign.com)

Computer Science is a very cool field, but it’s also a very misunderstood field, even by those who are in it.  It’s a big field, so there are people in it doing all kinds of different things.  The complications remind me a little of the distinctions Sheldon makes between theoretical and applied Physics on The Big Bang Theory.  Or between what he does and what everyone else does.  And yes, there is some of the same derisiveness Sheldon expresses from people in CS.  Here are just a few of the many arguments, boiled down into bullet form.

What is Computer Science?

  • Is it primarily theory or programming?
  • Do things like web design/development count?
  • Can Computer Science be done without a computer?
  • What is the relationship between the computer and Computer Science anyway?

What should be taught in Computer Science courses (this is related to the above, but gets a bit more tangled and detailed)?

  • Should we focus on concepts, and if so, which ones: algorithms, iteration, recursion?
  • What programming language should we start with (if any?)
  • Objects first?
  • Is CS vocational or academic?
  • In my school/district/state, Computer Science is considered Word, Excel, and Photoshop.

Who is qualified to teach Computer Science?

  • Can only those with a BS or more in CS teach CS?
  • What if no one with a BS or more in CS wants to teach it?
  • Should CS teachers have industry experience?
  • Can the technology teacher who was teaching Word, Excel, etc. teach CS?  If so, how should they prepare?
  • What if we prepare all these CS teachers and there are no classes for them to teach?

Where does CS fall in the STEM spectrum?

  • Is CS a science? It’s in the name!
  • Is CS technology? Well, it can be.
  • Is CS engineering? There are majors in Computer Engineering.  There’s software engineering.
  • Is CS math? Many argue that math is the grandmother of CS.
  • And yet, CS isn’t part of most school’s STEM curriculum, nor part of the CORE.

So here’s my own experience with these issues.  Most people (lay people) are in two camps when it comes to what CS is.  They either think it’s technology in a very general way, mostly about using applications.  If you’re lucky, they’ll assume it’s mostly about complex applications like Photoshop.  In the next breath, they’ll ask you what kind of computer to buy.  The other camp assumes it’s programming.  I’d much rather deal with these people.  They’re usually dealing with more complex issues like future job prospects, whether jobs are outsourced or not, gender bias, etc.  Much more interesting conversations here.

The issue of what to teach is complicated.  My Ph.D. research involved figuring out how students learn, and how to motivate more self-directed learning.  So I think about structuring my classes based on what I’ve learned from that research, and from more recent research specific to Computer Science.  I am so lucky to be where I am because I can build my classes however I want.  I try to provide a solid foundation and I also try to respond to student interest.  People have really strong opinions about this that I find kind of bizarre.  There’s also a huge difference between what might be appropriate for high school or middle school, and what’s appropriate at the college level.  There’s a huge difference in cognitive development between a 9th grader and a freshman in college.  I’ve seen this in two different fields.  I think the main goal at the secondary school level is to get students interested in the field.  If you start focusing on they “should” know, I think you can suck the life out of the class and cause students to become disinterested in the field as a whole.  An example that drives me crazy: commenting code “properly”.  In high school, who cares.  They can learn that in their software engineering classes in college.  I encourage commenting so students remember what blocks of code do, but in the beginning, their programs are so short, they don’t really need to.  But someone will fight to the death over the idea that even high school students should learn proper commenting techniques.  Like we’re gonna know what their future team manager wants.

Teacher qualifications is a touchy area for me, given that I don’t have a CS degree.  I feel quite squeamish about it at times, but I know I have more experience than my students, and I keep building on that experience.  I’ve created several programs for the school that have tested my programming chops, and next year, I’ll be headed into the land of Arduinos, so I’ll be diving into a new language.  Many teachers I’ve run into *with* a CS degree are having to learn new things.  Most colleges aren’t teaching you how to program Arduinos or Finch robots or Kinects.  Some are, but most stick to a rigid curriculum that hasn’t changed that much.  Ten years out from a CS degree, the common languages have changed anyway.  So, I’m not sure not having the degree makes my life too much harder than for those with the degree.  And certainly, I have the teaching experience in spades, which I honestly think is more important.

Ah STEM.  It’s the buzzword du jour, and yet the biggest field that has contributed to its success is not included in most interpretations.  Some people can make the connection work, but I find the T in STEM causes all kinds of problems because it draws people back to the idea that it’s just about using technology (not computing) to do other things like make pictures, write papers, etc.  I’d love it if we could find a better acronym.  To me this is a lesson in how language matters.

My basic approach to all of this is that what I do is about creating and making my own tools, not using someone else’s.  I think about that broadly, so it can include things like building web sites from scratch (something girls tend to enjoy).  Why use Excel, when you can write some code to analyze your data and graph it however you want, not just the way Excel wants you to.  Don’t like the way a game works? Create your own.  Want to track your cat’s nightly excursions? You can build that, too.  Looking at CS this way as opposed to getting into the nitty gritty of languages and concepts makes more sense to me.  I’m just trying to make it fun.

Enhanced by Zemanta

Life always gets in the way. I’m doing a million things, and yet, there’s more to do. Here are just a few items in my head.

  • There are interesting conversations on the CSTA mailing list about teacher certification and computer science. Let’s just say it’s a mess.
  • I’m helping Mr. Geeky develop curriculum and documentation for Calico, an IDE/programming environment he’s helped develop. Because I needed more to do.
  • I’m loving Flipboard’s new “create magazine” feature. I’ve been creating collections of things as I read them. You can also share them. It’s mobile only as far as I can tell, but it’s definitely nice.
  • I’m exploring Google plus more. I like the communities. The one I’m liking the most, oddly, is Python. The education ones are so far disappointing. Also, having a hard time getting a good system of sharing going.
  • I can maybe see the light at the end of the tunnel. Summer is coming. I’m ready.

I was going to write another “OMG! I’m so busy!” post but I see I did that a week ago. But I am so busy, and one thing I’m struggling with is setting priorities. Right now, I’m mostly going with what’s most immediate. If it’s due tomorrow, that’s what I’m working on. Tomorrow, I give a talk, so today I created visuals, and in a few minutes, I’m re-reading my notes. Sigh.

I really do need the break that’s coming up in a little over two weeks. Most of the work that’s stressing me out a bit right now will be done by then. To some extent, it will be downhill after that. But before that, there are talks to give (yes, multiple), programs to write, classes to plan, robotics competitions to participate in, meetings to lead, documents to write and trips (yes, multiple) to plan.

Somehow it will all get done.