Wednesday, August 28, 2013

Why Girls Don’t Go Into Computer Science (Infographic)

June Lin from Play-I sent me this infographic which I found interesting enough to share. Play-i is building educational, programmable robots for kids. Not sure when they were available but I signed up for email news.
BTW I like Rebecca Dovi's take on this issue. She doesn't like the title of this infographic for one thing. Read it at her blog - How *GIRLS* Hold Themselves Back from Pursuing Computer Science

Girls-in-Tech-5-alt

Tuesday, August 27, 2013

NCWIT Award for Aspirations in Computing Starting Again

I’m a big fan of the NCWIT Award for Aspirations in Computing program. This ncwit aic logoprogram recognizes high school young women for their interest and aptitude in technology.  Aspirations in Computing currently offers over 300K in scholarships for young women in computing. You can learn more at aspirations.org.
Aspirations in Computing is a talent development initiative designed to increase female participation in technology careers by providing encouragement, visibility, community, leadership opportunities, scholarships, and internships to aspiring technically inclined young women.  Since 2007, NCWIT has inducted more than 2,500 young women into the Aspirations in Computing community and is helping to usher these women into technology careers.
Applications are open 9/15-10/31 at www.aspirationsaward.org.  You can request a poster for your school or organization at:  www.ncwit.org/aicposterrequest I’ve requested a poster for my computer lab. Hoping to get one of my students recognized for her interests in  computing.

Posters are out for the 2013-14 Award for Aspirations in Computing - download here http://ww2.ncwit.org/pdf/AspirationsPoster2013.pdf

Monday, August 26, 2013

Interesting Links 26 August 2013

School started for me last week. I showed off some sample Kinect apps to most of my classes. For some it was to talk about Binary Clockhuman computer interaction. For others is was to give them some ideas for projects later in the semester. I also showed off my Binary clock. With mixed opinions I might add.

I tweeted the image on the right and one of my Twitter followers replied with a link to this article they wrote about Binary clocks. You can read it at Binary Clock Fun.

And now for the usual round up of interesting links.

FREE Posters for Educators

The NCWIT Award for Aspirations in Computing recognizes high school young women for their interest and aptitude in technology.  Applications are open 9/15-10/31 at www.aspirationsaward.org.  Aspirations in Computing currently offers over 300K in scholarships for young women in computing. Learn more at aspirations.org. Request a poster for your school or organization at:  www.ncwit.org/aicposterrequest

Google has started  an interesting program to send people into schools in South Carolina to run computer science programs after school. One of the program’s participants has written about the Google's New Computer Science Teaching Fellows Program in South Carolina on the CSTA blog. Cait Sydney Pickins who I interviewed earlier this month is part of this project.

A year ago I wrote about Ruth Hartsook’s CS Teaching Resources on this blog. Ruth recently let me know that her links had changed so I have updated the post with new links.

A new Blog@CACM post by Mark Guzdial: A stable future for computing ed requires schools of education. We can't do it from CS alone.

My series of interviews of computer science educators is up to 18 now with the addition of Tammy Andrew. Tammy teaches in a public high school during the regular school year but a private boarding school in the summer. Interesting read.

Don't Panic is my recent blog post on the CSTA blog. As a member of the board I’ll be posting there occasionally. Are you following the CSTA blog? Lots of good posts there.

Links to things I am working with on Kinect is a collection of links from my friend @SocalSam aka Sam Stokes. Looks useful to me.

Friday, August 23, 2013

TurtleArt–Turtle Graphics With Blocks

I ran into an article called How to Pick Your First Programming Language at Help Kids Code that talked about something called TurtleArt.  Now there wasn’t a lot in the post that I agreed with but the idea of a "picture language” called TurtleArt piqued my interest. I visited the web page – TurtleArt.org – to learn more about it.
The website is rather sparse but it does have a lot of sample images with the ability to see the “code” that generated them. There was an email address to contact get get access so I sent them an email. The reply came back pretty quickly and I installed the software.
As you can see from the image below it is sort of Logo using blocks similar to those in Scratch or Alice.
image
There are blocks to control the turtle, the pen (color, width, etc.), numbers and mathematical operations, program flow, and something called “My Blocks” which are basically two variables. I show those options below so you can see the options.
I found the interface pretty intuitive especially as I have a lot of previous experience with both Turtle Graphcs and block style programming. I was looking for a “run” command but found that code ran by double clicking on the top box.
The blocks fit together pretty well but I miss the resizing to fit that happens in Alice and Scratch. You can see in the picture above that there is some overlapping of code blocks in some cases. You could probably play around to avoid it but I found this a bit disconcerting. I’m not sure how kids would react.
The app I created is more of less my Turtle Graphics version of “Hello World” as I was able to create it pretty easily. I just wish it handled variables a little more flexibly but then dealing with variables tends to be something these sorts of tools don’t do that well.
Overall I thought is was interesting and potentially useful. At the same time it feels like it needs some work. The UI could be a lot clearer with some sort of labels for the symbols on the top. Also resizing of the boxes to prevent overlapping. And I’d like more/better documentation. Worth looking at for younger students though before you move them on to something else like Alice or Scratch.
imageimage
imageimage
image

Thursday, August 22, 2013

The Bug Report on Computer Science Teacher Certification

Most of us involved in teaching computer science know that the issue of teacher CertReportCovercertification is a bit of a mess. How much of a mess no one really knew. Until now. The Computer Science Teachers Association (CSTA) has released a detailed report on computer science teacher certification in the United States. It’s called Bugs in the System: Computer Science Teacher Certification in the U.S.

What does it say?

“[it] is a comprehensive study of all 50 states and the District of Columbia revealing that each state (and in some states each school district) has its own process, its own definition of Computer Science, and its own idea of where Computer Science fits in the academic program and who is qualified to teach it. “

It’s actually somewhat worse than that. In many states finding out what is required to be certified to teach computer science is very difficult to find out. New Hampshire, where I live, is a case in point. (From an article at Education Week (Computer Science Teacher Certification 'Deeply Flawed,' Report Says) on the report)

“the report points to the responses to its online survey in New Hampshire. Two computer science teachers and a state official provided contradictory answers to the following, basic questions: Is there a required middle school computing course? Does your state require a computing course for graduation? Does your state offer any additional or optional certificates, endorsements, or licenses related to computing? In each case, the study says, "one respondent answered 'yes,' one respondent answered 'no,' and one answered 'I don't know'." And again, when asked what specific teaching certificate is required for an educator to teach high school computing courses, the answers were all different.”

Other states have requirements that are more clear but hard to obtain or even completely unobtainable.

For example, in Florida becoming a certified Computer Science teacher requires taking a course called K-6 Computer Science Methods, however the course is not offered in any teacher preparation program in the state.

The report makes some recommendations including:

  • Establish a system of certification/licensure that ensures that all Computer Science teachers have appropriate knowledge of and are prepared to teach the discipline content.
  • Establish a system of certification/licensure that accounts for teachers coming to the discipline from multiple pathways with appropriate requirements geared to those pathways.
  • Require teacher preparation institutions and organizations (especially those purporting to support STEM education) to include programs to prepare Computer Science teachers.

The full report is highly recommended for anyone concerned about the state of teacher certification for computer science education. You can download Bugs in the System from the CSTA web site.

Wednesday, August 21, 2013

Using the Tools We Teach

One of the classes I am teaching this year is called Explorations in Computer Science. It’s a step away from the pure applications course (Microsoft Office) in the direction of real computer science. We’ll still cover some of the Office applications but mostly we’re looking at things like computational thinking, some web development and a good amount of programming. The idea is to wrap it all around computing concepts and “make it real.” As I was doing my planning I started to realize how much I use the tools I teach for my own purposes.

Take for example keep track of my schedule. My school has rotating periods. There are 8 class periods in the schedule but only six class periods each day. So on day one we have periods one though six. Day two sees periods two through seven and so on through the week. Frankly keeping it all in my head doesn’t work for me. So I turned to a spreadsheet to help me create a chart. This is what I wanted:

image

Now in all honesty I was driving myself up a tree – well getting myself confused – trying to do this by typing in all the classes in the right boxes. I realized that I was ignoring the capabilities of the tool. So I created a more simple chart that looked like this:

image

That was almost mindless in its simplicity. It just shows the period numbers of course but it is very easy to spot errors in it. Just what I needed. Next I created a CHOOSE function that looked like this:

=CHOOSE(B11,"Yearbook","ECS 2","","","","Hons Prog","","ECS 8")

and applied it to all the cells in a chart. Instantly everything was just where it was supposed to.

Now I show this not to show off (I mean really how simple is that?) but to give an example of something practical I plan to talk about with my students. A couple of things for me to talk about. Prime among them is the give an example of using a tool to solve a real problem in a way that takes something confusing and makes it simple. And of course demonstrate that I not only talk about the tools but use the tools.

I will also talk about reusability. For next semester I can make simple changes to one CHOOSE statement, copy it to all the cells in the chart and instantly have a new schedule. I want students to think about how to reuse wheels rather than reinvent them.

I plan to talk about problem solving as part of this discussion as well. How did I get from what I was trying to do to a solution that minimized my work and maximized the power of the tool? That is something I want them to think about. In short what tools are there that may or may not be obvious that they can use to solve problems? out of the box thinking? Hey, what box!

Tuesday, August 20, 2013

CS Educator Interview: Tammy Andrew

Tammy Andrew and I met a bunch of years ago when we both taught summer school at a famous New England boarding school. We were teaching C++  back then. While I’m a Windows person and she is a FOSS person in a big way we’ve managed to stay friends for years. I’m thrilled that she was willing to tell her story for this series.

Where do you teach? What sort of school is it?

During the traditional school year I teach at a public high school in New Hampshire.  During the summers I split my time between a private high school in Massachusetts and a math and science summer program.

How did you get started teaching computer science?

My journey started in fifth grade, but didn't gain purpose until I was in college.  I was very good with technology, really enjoyed my experiences with computers (especially programming) while growing up, and soon became part of the student group who helped maintain the campus computer labs.  At that time there was not a computing degree, or even classes, but while working towards my physics degree I spent much of my time building, maintaining, and working with the computing devices.  Soon after leaving college I landed a position as a computer instructor for a training firm and frequently heard the question, "where were you when I was in high school?"  This sparked my interest in teaching high school.

My research showed that, at that time, there were few schools who taught any type of computing and, at least in New Hampshire, no certification for teaching computing, so I went back to college so I could be certified to teach high school mathematics.  The first day of student teaching my mentor mentioned the school lost their math/programming teacher and asked, with my computing and programming background, if I would be interested in the position.  I said I'd consider it, and a few days later was interviewing with the superintendent.  Two weeks later I was hired full time, had two mentors (my original in math and one for programming) to satisfy the college, and was thrilled to be teaching something I've loved since childhood.

Describe the computer science curriculum at your school. What courses do you have and what are the focuses of each?

The public high school where I teach is an Applied Technology Center in New Hampshire.  We have many computing classes outside of computer science, but I am the only full time computer science teacher.  The curriculum is always being evaluated for improvement, but these are the courses as they will be this upcoming school year:

Computer Studies - Freshman/Sophomore course taught with the first four units of the Exploring Computer Science curriculum.  Focus is to introduce students to the diversity within computing and what other courses at the technology center might help them discover their computing passions and strengths.

Programming Fundamentals - First programming course; taught in Java using Karel the Robot.  Focus is on programming methodology and mathematical computer science topics.

Java Programming - Second programming course.  Taught with Java, this is considered a pre-AP course.  Course also can be taken for dual credit with a local college.

Data Structures - Approved AP course with the College Board.  Focus is on preparation for the AP exam and, after the exam, expanding knowledge and understanding of data structures not included on the exam.

Web Design - A dual college credit course, Web Design explores the creation of web sites with emphasis on career exploration, understanding user needs/wants, and CSS design skills.

We also offer two courses through another technology center.  I do not currently teach these, but we send students to the other center for Networking (Cisco certified course) and computer hardware and operating systems.

At the private school I teach programming only, though there are also courses in robotics, animation, graphic arts, and web design.  The two classes I teach are both introductory level but taught in different ways:  one is a traditional programming class in Java similar to the Java Programming class I teach at the public school, the other is taught using graphical educational software.

The math and science summer program is adding computer science to its curriculum.  This past summer I co-taught a web design component that emphasized CSS.  Next summer we will add programming, but have not decided if this will be purely programming or in conjunction with engineering or robotics.

What is your overall teaching philosophy? Project based learning? Flipped classroom? In short, what makes your CS program “your CS program?”

I believe that computing is an integral part of our society and that Computer Science is a valuable subject for all students.  Not just programming, but also problem solving, understanding the capabilities and limitations of technology, and how to create using technology.

I try to keep lessons multi-modal, so I do occasionally lecture, but I also have things for students to see.  I provide opportunities for note-taking, but also to listen.  And, most importantly, opportunities for hands-on learning both through prepared "follow the steps" labs to providing a problem and letting them discover how it all "works" or determine a creative solution.  Some of the hands-on learning is group work, but I also have students work as individuals but within a support group of other students.

What is the biggest challenge in teaching CS at your school?

One challenge at the public school is funding.  The equipment is never quite as good as students have at home and the network lags.  I know the network issue is being addressed this summer, but I have another year or two before I can look at new computers.  Add to this the challenge of protecting the network interfering with teaching students about the limitations and capabilities of technology and perhaps the biggest challenge is student perception of what they will be "allowed" to do or learn.

At the private programs funding is not an issue; I ask and it is provided, including a support person during class times. 

The challenges all have in common are interest and understanding.  Society has a perception of computer science that it is too boring or too hard.  Fighting that perception, making it look fun and interesting and easy, is difficult.   Once I have them in the classroom I can do it, but getting them there without requiring the course is not as easy.

What is administration’s support (or lack of support) like at your school?

For each place I work I have been blessed with wonderful administrative support.   They might not understand the subject, but will allow changes I make in the courses and help me find additional support when I need it.

How do you measure success for your program? For your students?

I measure my program's success by the success stories some of my students or their parents send me.  This isn't just the student who now works for the DoD in cryptology and cyber crime or the student who works as a programmer or system analyst, but also the student who found a career calling combining web design and humanitarian outreach, the one who can now figure out why the family computer is not acting right and fix it, and the student who now combines a love of reading and databases and is heading to college for library sciences. My purpose is not to teach a legion of programmers but to enable students to understand the use and capabilities of the computing devices they live with.

For my students, it is similar to my program's success:  have they discovered something they previously did not know or understand?  Do they have a purpose or goal that involves computing?  Do they share their knowledge with friends and family?  Each student is different, so success needs to be individualized to each one.

School name and web site:

Tammy is on Twitter @tandrew42

For a full list of interviews in this series please see CS Educator Interviews: The Index

Monday, August 19, 2013

Learning To Program By Programming Games

There seems to be no end to the development of games that meld making a game and playing a game. Kodu is one example I have been using for a while. It’s designed for younger students. Growing out of that is Project Spark ('Project Spark' tower defense game creation video is mind boggling) from Microsoft. Recently I ran into Beta the Game which, like Project Spark, is not out yet.  There are other tools along these lines (roughly) which I list a block programming platforms elsewhere on my blog. They all seem like so much fun. They all seem like they would really engage some subset of students. Kodu clearly does in my experience. As do Alice and Scratch. But do they really teach programming?

Well probably they do but the real, deeper question is how well do they do so? Alice, Scratch and Kodu tend not to do variables very well. If anything I see them as variables late sorts of tools. This was mentioned as a negative at a SIGCSE talk I heard a few years ago (sorry I don’t have the reference handy). 

They are all sort of kind of object oriented but is it really enough? I’m not so sure because there really isn’t much research on the topic. Not that there is no research. I know that the Kodu team did some early research with a couple of schools and systems. And various facets of Alice have been researched  with Storytelling Alice being the most widely known.  How much of this research gets beyond the publication and presentation at conferences stages and into general knowledge is not that clear to me.

Could I look into this more? Of course I could. And if I were doing a graduate project I would. But how does the average computer science teacher get to know what works beyond stories from friends? At the conferences we attend (CSTA, ISTE, TCEA, etc.) we see mostly sessions on “how to use” these cool new tools. I’ve been “guilty” of this myself of course. I’ve presented no end of tools that seem to me to be cool, to be helpful, to be interesting and which I think with little evidence will be helpful for teaching computer science.  I even earned my living doing this for a while.

We all have these great ideas. We all fall in love with tools that excite us and which our own brand of logic assures us will be the greatest thing since the stored program computer. As I sit her preparing myself to teach a new school year (first day of students is this Friday) I find myself wondering if I have selected the right tools, the right projects, the right everything and anything to use this year. It’s a bit scary.

In the end I believe that they key thing is not the tools or the textbook or any of those things but the teacher and their interaction with their students. Are the concepts covered in a way the students understand them? We can measure that to some real extent. Does the teacher communicate enthusiasm as well as information? Are the students turned on to or off from the subject? Subjective for sure but real. Did I do the best that I could? Did I constantly look to figure out what I could do better and make things more understandable (and fun) for the students?

Ready or know the new year is coming and with or without solid research behind it I intend to do the best that I can with what tools I have available to me. Let’s rock and roll!

Interesting Links 19 August 2013

Summer ends for me tomorrow as my school starts with a professional development day for teachers. First full day with students is Friday. I’ve done some preparation over the summer but somehow not as much as I thought I would.  Things are about to get really busy. How about you? Any of you started school already? Well let’s take a look at some interesting links while there is still some time.

If you haven’t started classes yet be sure and check out this post on the Computer Science Teachers Association blog -  First Day Activities Revisited

Doug Bergman talks about some of his students computer science projects. I *really* want to see my students do stuff like this during the coming school year.

NYC Department of Education Announces Three New Early College and Career Technical Education High Schools One of these is computer science focused. The idea is a six year program that includes high school and community college. These schools involve partnership with industry.

Congress is getting into the game with the Congressional App Challenge to promote Computer Science. They are on twitter at @congapps  This hasn’t started yet but you can sign up for information when it does start.

Who is Teaching Computer Science in US High Schools? on the CSTA blog reports on some interesting results from a research program about high school computer science teachers.

Honeycomb Rush Tutorial for Windows 8 (Presentation/Code from MonkeySpace Conference) by my friend Tara Walker

Computer Science Teacher: CS Educator Interviews: The Index updated with the latest CS teacher stories including:

Hadi Partovi: An Update from http://Code.org – This was the CSTA 2013 Closing Keynote this summer: http://youtu.be/rIM20_dAt7s?a

Active Recruiting - Attracting Girls into High School CS: Lecia Barker: http://youtu.be/Wany9hiZtm0?a

Blackbox: large scale programming education data collection » research on learning Java as part of BlueJ. If you are using BlueJ you’ll find this interesting.

Thursday, August 15, 2013

CS Educator Interview: Cait Sydney Pickens

One really can meet people online though sites like Twitter. That is how I met Cait Sydney Pickens. I look at everyone who follows me on Twitter and saw her name. That lead to her blog (Computing Education a research blog about computer science education) and more about her. She has done some interesting things in teaching and in CS education research. That quickly convinced me I wanted to include her story in my CS educator series. Thankfully she agreed.

How do you describe yourself?

I am a teacher, an open source advocate, a Pythonista, a female coder and engineer, a blogger, an education researcher, a queer woman. I have been (and sometimes still am) an undergraduate CS teaching assistant, a summer middle school teacher, a Michigan State Spartan graduate student, a Software Carpentry teacher. Most recently, I am a full-time researcher at Google with the Computer Science Teaching Fellows program.
The thoughts I'm sharing here come from the combination of all of those experiences and aren't specific to any of the particular institutions where I teach.

You are a PhD student researching computer science education. What does that mean? Are you studying tools, techniques, something else?

Yes, I am a PhD student researching computer science education (CSE). That translates into a few different things: (1) reading a lot of blogs, tweets, research papers, and dissertations about what people are doing in CSE; (2) synthesizing what I am reading into a mental map of the field, (3) identifying what topics have “open questions” or areas that have not been researched, (4) designing, implementing, and evaluating educational interventions in a classroom, (5) communicating my findings to the broader CSE community.
I just finished my second year in a PhD program, so my research focus has not been fully refined yet. I’ve done some heavy reading on topics like integrated engineering education and first-year computer science. As I am developing my identity as a researcher, I am learning that I am most interested in questions about diversity, access, and engagement. How do we broaden the field of CS to include all different types of people? How do we make sure that they stay engaged and feel included? Those questions can be targeted with tools, teaching techniques, classroom environments, really anything. I am keeping my mind open when trying to answer the question of diversity in computing.

How did you get started in computer science in general and researching CS education in particular?

I went to Lake Forest College planning to be a high school math teacher. As part of the mathematics degree program, they require students to take an introductory CS class, and I am so glad they do! I started then with object-oriented programming in Java and I loved it. I just never stopped. I find CS to be the intersection of all the math and logic skills that I happen to be good at and the creative, design, and language skills that I really love.
I first started researching CS education when I was invited by a mentor to teach on Pine Ridge Reservation in South Dakota. The summer workshop at Porcupine Day School teaches middle-schoolers about the intersection of art, animation, digital storytelling, programming, and computational thinking using Alice. My experience on the Rez in the past two years really shaped my understanding of the current status of CSE in middle school and got me thinking about how to reach and engage all different types of learners.
I have been really lucky in finding people to support me in my desire to do CSE research. I have been able to work on the Rez, be a teaching assistant in a REAL classroom at Michigan State, teach data scientists how to program with Software Carpentry. These teaching experiences have helped guide my development of research interests and questions.

You’ve done some teaching as well in a couple of settings. A Native American reservation for one. What was that like? Are there particular challenges in that environment?

Teaching on the Rez is always a defining life event for me. It teaches me so much about my own privilege, about what a “low floor” for inexperienced learners really means, and how living in poverty heavily impacts student learning. At the same time, I learned about the importance and beauty of human connection. On the Rez, there is a feeling of belonging. In fact, there is a common Lakota phrase Mitakuye oyasin, which translates to “All my relatives” or “We are all related.” My favorite part about teaching at Porcupine Day School is how the students show that sort of Lakota interconnectedness with each other and with their teachers every single day. It’s refreshing and inspiring.

What is your overall teaching philosophy? Project based learning? Flipped classroom? In short, what makes your CS education style “your CS education style?”

I believe in connecting people. I think I have always believed in that, but I especially identify with it after teaching on the Rez. When I am teaching, I try to get students away from computers and gadgets and technology, and instead reflecting about computational thinking and how it impacts their lives. We talk about ideas, problem-solving, the pros and cons of different solutions. I also believe in using computational thinking in unexpected environments (writing poetry, composing music, digital storytelling, dancing, etc). So, I think my approach to teaching focuses on inclusion, interaction, and using what you’ve learned in new environments. That means I end up doing a lot of project-based learning where students are building and creating their own ideas as a community.

How has your research impacted your teaching? And your teaching experience impacted your research?

I think it is pretty obvious at this point how my teaching on the Rez has influenced my desire to develop an inclusive learning environment. As for how research impacts my teaching... Well, I do a very informal assessment called a “minute card” where students write down 1 thing they learned during a lesson and 1 question they still have. I’m always impressed with how much I can learn about my own success as a teacher from analyzing that sort of feedback. As for more formal research - I’m learning that there is a lot of work in education research more generally that studies how engaged (motivated, on-task, included) students are in a classroom. I try to build my own lessons and classrooms around those findings, using their suggestions to build a place where it is totally okay for students to take risks, to be wrong.

How do you measure success for your teaching? For your students?

When I’m teaching on any given day, I use minute cards. That’s mainly because many of my teaching experiences are workshop-based and I can’t really give something like a final exam to measure student learning gain. I especially focus on the questions students still have after a lesson to see if higher-order thinking or metacognitive processes have been engaged during the lesson. If the questions I receive are all low-level, content-definition-based on the minute cards, I informally conclude that my own teaching wasn’t successful and that learning for students was probably not very meaningful.
When I have the chance to teach in a more consistent environment, like when I am a teaching assistant at Michigan State, I have teaching evaluations at the end of a term.
I’m always especially rewarded when students give feedback saying that they felt comfortable, at home, or confident in my classroom. When I teach with Software Carpentry, I like to follow up with workshop participants some time months later to see if the workshop has had any lasting impact on a participant’s research patterns and workflow.

Is there anything else you’d like to tell me that I forgot to ask?

I just want to emphasize how important it is in my mind that we (as an education community) focus on structuring our classrooms and our research around developing students who are able to solve real-life problems with computers and programming. And not just some students. All students - that means male and female and every other gender that exists, people of all different races and ethnicities, students of all different socio-economic backgrounds, rural and urban environments and everything in between, and so many other factors. We need to stay committed to that major task and not be deterred.

More Cait Sydney on the Internet.

Blog: michigancomputes.wordpress.com
Twitter: @caitsydney
For a full list of interviews in this series please see CS Educator Interviews: The Index

Wednesday, August 14, 2013

Beware the Self-Taught Know It All

I spent last weekend with a room full of university computer science professors. As you might expect discussions covered a wide range of topics during breaks and meals. One item that came up was a problem several people had seen with students who were both self taught and arrogant. It seems that these students often make life in the classroom uncomfortable for other students. They “know it all” you see and delight in making other students feel inferior or unwelcome. This has a negative impact on student retention in computer science programs.

In all honesty the arrogance is the real problem not that they students were self-taught. One can see this in almost any case where some students come into a class with significantly more knowledge of the subject than others. It does seem to be more prevalent among the self-taught though. Perhaps something about doing it on one’s own breeds a certain attitude of superiority. I do know that my career has been overflowing with self-taught programmers and software developers who denigrate formal education in the field and people who learned in class what they learned “on their own.”

Obviously the constantly changing nature of computer science means that someone who wants to stay current has to do a lot of learning on their own. And there is nothing wrong with being self-taught other than that you really need to watch out for the quality of teaching.

The classroom can be a fragile environment. Students can be turned off to a subject as easily, if not more easily, than they can be turned on to it. As a teacher my goal, obviously, is to get the students feel good about the subject and about themselves. Students who do know more than their peers can be a very positive experience. I have seen peer tutoring work wonders with students. So a student who uses their knowledge to help their peer rather than as a club to put them down can really contribute a lot to making the environment a good healthy one.

Learning on ones own is something I strongly encourage. I don’t believe that the teacher should limit students to only what they (the teacher) knows. (see All You Know Isn’t Enough)  I want to encourage students to share what they know with their peers in a spirit of support and collaboration rather than as a power game. I try to help students understand that teaching something improves understanding of it for the teacher as well as the student. I also want all students to understand that while people learn in different ways that is a good thing. No one way works for everyone and there is not necessarily a right way for everyone to learn.

But I really wish some of these self-taught student developers had had a better teacher.

Tuesday, August 13, 2013

All You Know Isn’t Enough

Lou Zulli and I got together recently to talk teaching and computer science education recently. Lou Zulli and Alfred Thompson pictureOne of the things we talked about was common points from the teachers we know and from those I have been interviewing lately on my blog. A key point is that the best teachers are not afraid to admit that they don’t know everything. Students come to them with ideas for projects that the teacher has little to no idea how to accomplish. Rather than say “no” they say “go ahead” and they help the student figure it out. Sometimes they learn together. Sometimes the teacher points students in a direction and gets out of the way. Regardless the teacher is not afraid that the student will know something they don’t know.

These days there is so much going on in computing that no one can know it all. If a teacher limits what their students learn to just what the teacher knows the students are being too limited. Students are naturally curious and creative. There are times when I worry that we can stifle that curiosity and creativity in the name of keeping control. Fear can be a limiting factor. We worry that the student will get stuck on soothing we can’t help them with. What will that do to our credibility? Will the student get too frustrated and turned off to computing? What other bad things will happen because we don’t have all the answers?

Fortunately most of these fears are over rated. First off most of our students don’t expect us to know it all. They have unfairly low expectations of their teachers even when it comes to computing. Chances are that for all we admit to not knowing most students will be impressed by what we do know.

Students also often have a much higher tolerance for frustration than we give them credit for. At least when the project interests them. If they are picking their own projects they are highly likely to keep going long past where they would go for a teacher assigned project. A teacher can help by finding new resources (students are often poor at searching the Internet or documentation) and by helping a student to understand what they do find. One can also help a student understand that what they are doing is hard and that they are making progress.

Success is learning not always completion of a project. With a little help and encouragement students will often amaze you with what they can learn and what they can do with what they learn.

Monday, August 12, 2013

Interesting Links 12 August 2013

Where has the summer gone. A week and a day before all teachers have to return to my school. Students the end of next week. It’s been a great summer but I’m looking forward to the new school year. How about you? Either way a lot of good links to share today. Hope you find something useful here.

I recently discovered Computing Education a research blog about computer science education by Cait Sydney Pickens, a graduate student at Michigan State University and a Noogler. A Noogler is a new employee at Google by  the way. She is doing some cs education research. A couple of good posts there to start you off are:

This blog has been added to my Computer Science Education blog roll BTW.  Have you checked the lost out recently?

APCS teachers have you seen these proposed AP CS A labs? The case study is going away after the 2014 school year. Labs something like these on Paul Tymann’s web site will replace it. Deepa Muralidhar has been blogging about AP CS Principles portfolios which are a part of this whole thing on her blog most recently at CS Principles Portfolios: Data

CS Educator Interviews: The Index  Now with 16 different teachers interviewed. The most recent two being:

At the CSTA conference this summer I took part in a mobile app “throw down”  where people  used Apple iOS, App Inventor for Android and Windows Phone to develop the same app. The session was recorded and you can watch it here.

Speaking of Windows Phone app development, Rob Miles has been creating some Windows Phone App Studio Screencasts Also at Windows Phone App Studio for an introduction to this tool.

Google Computer Science Teaching Fellows Starting Up in Charleston, SC. I am following this with interest. That link is to the Google Research blog. There is also this news article about the program at the Berkeley Independent - Google pilots teaching program in Berkeley County.

Outstanding post by @PaulRWood for all teachers  Keep an eye out to be the difference for a student.

Is your school still using Windows XP? Make sure your administrators read this (Kill your Windows XP systems before they kill you) and suggest they act responsibly.

From the Kodu Team @koduteam

Looking for a batch of fresh Kodu games to keep you entertained? Why not give this collection uploaded this week  look.

From @CSEdWeek: Computing in the Core member Google announces 2014 Google RISE Awards opened for submissions.

Tips for teaching Computing for the first time (list of resources included) Not just for first timers either!

Saturday, August 10, 2013

Think Big

I’m saying at the Trump International Hotel in Las Vegas for the final meeting of the CS 2013 task force.  While this hotel doesn’t have a casino or other gaming it does have a lot of references to “The Donald” including one quote that struck me. “As long as you’re going to be thinking anyway, think big.” I think I need to take this attitude as I continue to plan for the coming school year

Thursday, August 08, 2013

CS Education Interview: Tammy Pirmann

Tammy Pirmann is my mentor on the CSTA Board of Directors and is helping me understand how and what it is all about. More importantly she teaches at a public high school on the edge of Philadelphia. She agreed to answer a few questions for us about her, her school and her CS program.

Where do you teach? What sort of school is it?

I teach at a suburban public high school right on the edge of Philadelphia.

How did you get started teaching computer science?

I am a career change teacher, and had a career in the tech industry before deciding to become a teacher. I did some consulting work with a Vo-tech during which I worked with high school students as part of the overall project. I found them to be delightful to work with and eager to learn what I knew. That experience, and the birth of my son, led me to look for a family friendly career that did not include significant travel.
My first position in education was at Eastern Center for Arts and Technology as a Computer Application Support Specialist where I worked with student interns to deliver desktop support and to create and maintain the website. While there, I put together a computer science program but it never took off because so many of the sending districts had some type of computing class.
My program was implemented at a different Vocational school and I accepted the position as teacher. 
The next morning, Springfield's superintendent called me and asked me to be the CS teacher at Springfield. I was not certified to teach CS in a 'regular' high school (certification is different for vocational vs. academic in PA). That day I must have taken about 50 phone calls. I had served on several technology committees in the county and worked with many people in various roles. I had no idea how many of the people I had worked with were from Springfield. The Technology Director, several teachers, the Principal of the high school, parents, etc were calling me to ask me to please accept the  position. Meanwhile, the superintendent secured an emergency teaching certificate for me. At the end of the day, the only reason I had for not taking the position at Springfield was that I had already accepted a teaching position the evening before. I finally accepted the position at Springfield and the other position went to another applicant.

Describe the computer science curriculum at your school. What courses do you have and what are the focuses of each?

Computer Science is a graduation requirement at Springfield, so we have a pretty comprehensive curriculum.
Computer Science Basics meets the CSTA K-12 Standards in level 3a, but at a rather fast pace and without much time to build things. It is really for the humanities student who just needs to meet the graduation requirement.
Computer Science Principles is available for anyone in grades 10-12 and also for any honors level 9th grader (to meet the grad requirement). My focus in this class is on mobile development. We use App Inventor and HTML5 to create mobile apps and sites.
Quest 9: Future Studies is the ninth grade gifted class and is a CS course with robotics and Sci-Fi. It also meets the graduation requirement.
Web Application Development 1 uses xhtml, html5, css and javaScript to create websites. We also learn about how the Internet works, the hardware involved and the social and ethical issues. The students get to create several websites for themselves and for local non-profits. This class meets the graduation requirement.
Web Application Development 2 adds more JavaScript, plus PHP and SQL so the students can build database driven websites.
Game Design is a non-programming course that is focused on what it takes to make a great game. The students create several game prototypes in this course and by the end have a game design document to take to the next class in the sequence.
Electronic Game Development is the second class in the Game Design and Development sequence. In this class we create a digital prototype of the game based on the design document brought forward from the previous class. We use Unity3D for the final, production game. This sequence earns dual enrollment credit with Montgomery County Community College.
STEM 1 is new this year. It is essentially the Quest 9 course without the Sci-Fi. We design and build a robot with the VEX platform, and program the VEX in RobotC. We also have a NAO robot that is programmed in Python and will have a set of Finch robots to program in Python as well. This class meets the graduation requirement.
STEM 2 will be offered in 2014-2015 and will be a survey of three engineering disciplines, chosen by the students in the course.
AP Computer Science A is all about Java, of course! This class is also a dual enrollment credit with MCCC.
Post AP CS A, I have two options for seniors only:
Senior Thesis in Computer Science meets the schools graduation requirement for a capstone course. Each student chooses a topic, writes a research paper, works on a project and makes a presentation. In my course, I connect each student with a mentor in the field of their choice and their presentation has to be published on line. They create a website for this course and publish all relevant materials on it.
Advanced Topics in CS is an independent study  I offer for seniors who have taken everything I have that interests them but they still want to learn more. I  work with them over the summer before school to choose a topic and method for this class. With the advent of MOOCs, we are using them more often for this type of independent course.

What is your overall teaching philosophy? Project based learning? Flipped classroom? In short, what makes your CS program “your CS program?”

I believe that students need to work on real projects, so if I had to sum it up in one word, I  would use "authentic". That said, I am a huge fan, advocate and proponent of Process Oriented Guided Inquiry Learning (POGIL) in CS.

What is the biggest challenge in teaching CS at your school?

It's a small school, so I am always marketing my courses. Also, we've been hit hard by funding shortages, so this upcoming year, I am the only CS teacher at the HS. This means that I will be teaching Quest 9, Web 1, Game Design, STEM 1, CS Principles, and CS Basics, but not AP CS A, Electronic Game Development, Web 2, etc. It isn't a lack of interest on the part of the students, it's the limitations of my time.

What is administration’s support (or lack of support) like at your school?

I'll let you know! We just got a new Principal at the High School, I've only met him once, but I am optimistic. He seems like a great person and willing to look at the big picture. My superintendent has been with us for one year, and she has been supportive of the program. 

How do you measure success for your program? For your students?

I love it when a student comes back to me after the course is over and tells me how she used what she learned in my class in real life. Often this is related to the unit I teach to 9th graders about how to buy a computer. I hear back from them, sometimes as late as senior year, to tell me that it was very helpful.
From a data standpoint, I look at how many students request another class in CS (after meeting their requirement). I can't use how many get into an elective because scheduling at a small school is so difficult, but currently the percentage of students who have requested another CS elective is 27%. That's up from about 5% before the CS graduation requirement. I also try to keep track of how many students are heading off to college to major in CS or IT.
More of Tammy Pirmann on the Internet
For a full list of interviews in this series please see CS Educator Interviews: The Index

Tuesday, August 06, 2013

CS Educator Interview: Norm Messa

Today we visit a career/technical school in the seacoast area of New Hampshire. Norm Messa is the teacher we talk to there. Norm is a second career teacher who does an amazing job at his school. Seacoast School of Technology serves students from several school districts around Exeter NH and is an unqualified gem of a school with an outstanding staff and administration. Full disclosure: I serve on Norm’s advisory board.

Where do you teach? What sort of school is it?

I teach at the Seacoast School of Technology.  SST is a Career and Technical Education center in southern New Hampshire.

How did you get started teaching computer science?

I got interested in computer science in the summer of 1969.  I won a National Science Foundation scholarship to participate in a summer program at Chico State College in northern California.
I found CS interesting but logistically difficult.  You had to design your program, put it on punch cards, then wait for your turn on "the computer".  You would feed your cards into the card reader, got the the terminal and type in some commands and listen to the line printer print out error messages.  After fixing your errors, you would repeat the process over and over again until your program was working.
At that point I filed computer programming in the "too much hassle" category.  Then in 1981 (or there about). a friend of mine brought this to me to help him solder together.  It was a Sinclair 1000 (a less than $100 computer that had BASIC programming built into it).  After a couple of hours of soldering we had it hooked to a TV and were writing programs.  For me, that changed everything.
While working on my electrical engineering degree, I also studied programming and wrote as many programs as I had time for.  In my career as an electrical engineering, I found computer programming was a really helpful skill not only being able to write both low and high level software but also the what is now referred to as a computational way of thinking and problem solving were inherent to that study.
When I retired from my engineering career in 1994, I decided to go into teaching.  I went for a math certification as it was the most expedient for my background.  I was hired at a school to teach computer science and quickly discovered that teaching CS was a totally different thing than doing CS. 
I have spent the past 18 years refining the way I teach CS.  While the technology changes rapidly, I have continued to concentrate on fundamentals.  I believe that it is of greater benefit to students to concentrate on building a strong foundation as opposed to worrying about glitzy decorations.

Describe the computer science curriculum at your school. What courses do you have and what are the focuses of each?

Our program is two years in length and consists of 4 one semester courses.  All of the courses in my program concentrate on problem solving and algorithm development.  The first course, an introductory course is the most important.  If you don't get that one right, nothing else matters.  The first course covers the basic program constructs using Alice (4 or 5 weeks).  The rest of the semester we use Python to cover a wide variety of CS topics and problems.  The second course is a Visual Basic course.  Again, even though we are using a visual programming environment we re-enforce the fundamentals of problem solving and thinking computationally.
Our year 2 program consists of Java and C++.  These two courses really focus on the object-oriented paradigm and class analysis and design.

What is your overall teaching philosophy? Project based learning? Flipped classroom? In short, what makes your CS program “your CS program?”

I teach in small chunks.  I will introduce a concept and then have students work on a project that demonstrates that concept.  I will use various degrees of scaffolding to help students learn a concept.  At the beginning, the scaffold is extensive while later the scaffold will be barely existent.

What is the biggest challenge in teaching CS at your school?

Getting students that are truly motivated.  Too many just want to play games.  This situation has improved dramatically over the past couple of years because I believe we have been more honest in our recruiting and the story we tell about what computer science is.  CS should not be some shiny object that is thrown out there too attract students. I have found that if you can show students the raw power that being able to be a good problem solver and think computationally can change their world everyone is better off in the long run.

What is administration’s support (or lack of support) like at your school?

It is unquestionably 100% supportive.

How do you measure success for your program? For your students?

To me program success is more than do we get numbers and continue to exist.  Success is do we get students that take the program seriously and continue on to year 2.  This is why that first introductory course is so important.  In the past it was not unusual to have 35 - 40 % year 1 to year 2 retention.  This past year we had a 68% retention of year 2 eligible students.
I would measure success for students is what are they doing 5 to 10 years down the road.  This is very difficult to measure.  I can only give a qualitative sense of this as I have used LinkedIn to stay connected with many of them.  Most of the "serious" students are definitely working in the CS field.  Even those who have moved on to other fields have admitted to me that problem solving skills they developed has helped them in their new fields.

What is the one thing you like to talk about regarding your program that I haven’t already asked?

I do not believe that public education is serious about graduating students that are able think analytically or critically.  Problem solving and computational thinking are skills that will be required to function in the very near future.  I really believe that computer science should be required of all high school graduates.  And I do not mean some watered down "parts of a computer" or "how to surf the web" course.  I mean a serious "using computational devices to solve problems" type of course.
For a full list of interviews in this series please see CS Educator Interviews: The Index

Monday, August 05, 2013

Interesting Links 5 August 2013

I turned 3C years old yesterday.  That’s in Hex of course.  011  1100 in binary. In place of presents post a link to my blog on your blog, Facebook and/or Twitter. Smile I spent much of last week at Walt Disney World having a real vacation. It was a great time but now I am starting to think that there is a lot I need to do to prepare for the new school year. Some of the links below may help me with that. Especially this first one.
First week of school... What are you doing? Getting close. About three weeks for me. Less for some of my friends. In this post Crystal Furman writes about some of her plans.
Senators Casey and Rubio Introduce Legislation to Bolster K-12 Computer Science Education Looks like people in DC are finally starting to “get it” that there is a problem that needs fixing.
Don't let the dulcet tones fool you—these girls are sick of being called fake geeks is one of several videos making the rounds this week. Another is the She++ video. Mark Guzdial give some cautionary advice about that one on his blog at She++: The Documentary and The Audience
The Today Show features a story on CS in schools Hadi Partovi teaches Ryan Seacrest to program! Some good exposure for computer science education in this other widely referenced story/video.
Michigan Teachers Learn To Use 3D Printing In The Classroom I still have mixed feelings about 3D printing. It seems so cool but I don’t really know how I would use one in the classroom. Looking for success stories from other teachers. Know any?
CS Educator Interviews: The Index  now highlighting fourteen computer science teachers. Most recently:
PACE, the Partnership for Advancing Computing Education now has a web site
PACE, the Partnership for Advancing Computing Education, is a coalition of professional organizations concerned with meeting the global demand for a well-prepared, well-informed, and diverse computing workforce. PACE provides a clearinghouse for members to communicate their visions and efforts toward these goals, helps members to identify common issues and interests, and engenders collaboration that leads to cross-organization unified effort.

Friday, August 02, 2013

Computers Really Are Everywhere

Last week I took a little drive. Something around 10 miles in something under 8 minutes I guess. That’s me behind the wheel of a NASCAR race car.NASCAR I rode with a trainer in the right hand seat and drove around a real race track in Orlando Florida. Part of my big birthday celebration. Probably a once in a lifetime ride. Although …

So why bring this up here? Well because this was a very hi tech experience. One of the first things they did was to plug a USB flash drive into a computer in the car. The car was fitted with several cameras, microphones, tracking devices and more. The computer put this all together into a video that showed the race track, the trainer and I and on the same screen where on the track we were. Frankly I bought it just so I could see how the ride was. While you are driving your focus gets a little narrow. Staying on the track and off the wall are priorities.

I can’t imagine getting that sort of video experience without computers though. And that was just the start of the week for me. I also took a backstage tour of Walt Disney World. In the tunnels under the Magic Kingdom are miles and miles of networking cables connecting all parts of the experience. And, I’m pretty sure, collecting lots and lots of data.

Many of the rides and attractions depend heavily on computer control. All the animated figures are just part of it. Things start at the ticket check in where the system reads magnetic information on your ticker and scans you finger point. I wonder how much information they keep and how well protected it is?

My room key (actually a plastic card with information stored on it somehow) could me (and was) used to charge things from anywhere in the property (40+ square miles of property) and computers handled it all. The amount of data that WDW must handle on a daily basis is mind boggling. I suspect  a lot of thought and computing power goes into analyzing that data as well.

I wonder if there is a job down there for me? Smile

Thursday, August 01, 2013

CS Educator Interview: Rebecca Dovi

Just north of Richmond VA to talk to Rebecca Dovi who  teaches at Patrick Henry High School. Rebecca is also very active in the CSTA and is a chapter President. Besides her regular courses she is one of the pilots for the new CS Principles course. AND she is working on developing an AP Computer Science MOOC for Amplify. That should be interesting.

Where do you teach? What sort of school is it?

I am at Patrick Henry High School which is north of Richmond VA. My school is a mix of a small town and rural. Many of my students have over an hour bus ride home in the afternoons. We have a reverse bell curve - many wealthy families and many poor. It is not unusual to have students that do not have electricity or running water at home. At least 1/3 of my kids do not have Internet access outside of school.
We are very unusual in my county in that every high school has a full time computer science teacher. We are the only district in Virginia that has computer science in all high schools and middle schools.

How did you get started teaching computer science?

My first year I taught math. The Friday before the students returned to school my second year I was called down to the principals office and told that on Tuesday I was the school's new computer science teacher. I started with APCS in Pascal A and B, and an intro course in QBasic.

Describe the computer science curriculum at your school. What courses do you have and what are the focuses of each?

We have:
  • International Baccalaureate Computer Science, both the SL and HL levels
  • AP Computer Science
  • Intermediate Programming in C++
  • Introduction to Programming
I am also a pilot site for the new APCS Principles course

What is your overall teaching philosophy? Project based learning? Flipped classroom? In short, what makes your CS program “your CS program?”

Everyone should learn computer science. It is my job to translate the material so that every student in my classroom has an experience that meets them where they are and invites them into the magic of computer science.
We do a lot of project based learning and inquiry activities. In the AP and IB classes I do flipped instruction - which takes some creativity when so many of our students do not have the Internet outside of our building!

What is the biggest challenge in teaching CS at your school?

I am very lucky, my school and district have always been very supportive. We have had the APCS course since the 1980's and they have remained committed to offering the classes despite the deep cuts brought by the recent recession.
As for challenges, it is equity of access. While some students have computers, tablets, etc., many do not. That is the beauty of computer science , it has the ability to take any student where they are are open up a whole new world.

What is administration’s support (or lack of support) like at your school?

Administration is great. Despite the cuts, which have been deep in Virginia, I have a well equipped lab. They are great about helping me attend conferences and support other teachers in our Computer Science community here in Virginia.

How do you measure success for your program? For your students?

When they have that moment that they realize computer science is used to MAKE things they use everyday. Computer Science is a craft and I want all of my students to be able to express themselves

What is the one thing you like to talk about regarding your program that I haven’t already asked?

I am so excited to see the growth in our field. I deeply believe the access to computer science is deeply tied to our future as a nation. Every student in our country should have access.
More Rebecca Dovi on the Internet
For a full list of interviews in this series please see CS Educator Interviews: The Index