Tuesday, June 10, 2014

That Was (Not) Easy

Someone mentioned in a comment somewhere (I wish I could find a link) that sometimes they create a project for students that they haven’t built themselves first and find out that it is harder than they expected. I sure can relate to that. I’ve done it more than a couple of times.

Now normally I like to assign projects that I have already coded at least once. Failing that I like to use projects that I know other people have used with students at the same level. But sometimes I get creative and adlib something. Typically this comes as a result of a conversation with students during class. It usually involves me saying something like “Let’s try this.” Sometimes it works. Sometimes it even works well. But sometimes things turn out to be a lot harder than they first appear.

I’m not sure this is necessarily good or bad. When it results in the students and me both learning something new that can be good. If we have fun doing the learning so much the better. When it results in a lot of frustration and misery that is not a good thing. Not for me and not for the students.

One could avoid that by always taking the safe way out – use tried and true projects only. Or perhaps wait until the instructor has a chance to code up a sample solution first.  But if you do that you risk losing a special teachable moment. Plus I like to live a little on the edge.

I learn a lot from watching students work on projects. Even if I have done a project before and think I know all the things that can go wrong an inventive student will often find a new way to mess things up. And that is fine. I learn. They learn. We both win. Having done the project before either on my own or by helping students makes it easier to make sure all the required techniques and tools are taught before assigning the project. And there is nothing wrong with that.

Trying to code a project myself usually helps me determine how long it should take students to complete the project. Sometimes I even calculate it correctly. But having students do it is really the most reliable way. It makes for interesting scheduling and lesson planning when you get it wrong of course. In high school one can’t often expect students to put in many extra hours outside of school as one would at the university level. So there are advantages to getting the timing right.

So much is about trade-offs though. There is value in spontaneity and in creating spur of the moment projects that students are really interested in doing. And there is value in having clear schedules and stable projects to assign. Generally I find some balance and that seems to work out.

Of course sometimes students surprise you and finish things early. As they say “I love it when a plan comes together.”

how long

Monday, June 09, 2014

Interesting Links 9 June 2014

Well my seniors are done. Graduation was yesterday. The Salutatorian had several interesting and funny things to say. Perhaps because it is a Catholic school some of it was in Latin too! A former student was by to see a cousin graduate and told me all about his career in computing which was great. Nice to know I didn’t mess him up too much. I have a lot of links to share this week. I hope you find some of them as interesting as I did.

CHOOSING THE RIGHT LANGUAGES FOR EARLY CS INSTRUCTION IS IMPORTANT by Eugene Wallingford @wallingf which relates closely to a recent post by Mark Guzdial Hands up who likes PHP? The role of popular programming languages in Computing Education

Self driving cars are coming which leads danah boyd to  ask Will my grandchildren learn to drive? I expect not  Something i need to discuss with my students. And think about myself.

There are some 35 teams from around the world across 3 categories headed to the Imagine Cup world wide finals. (See Meet the Imagine Cup 2014 World Finals Teams! ) Only one US team is going. A few years ago we could count on several US teams there. Should the US be worried? I wonder. See my old post on What Is It With US Students and Programming Contests?

The problem with hacker schools  is one of several posts which inspired my own post On Being a Software Developer. Have you looked at so-called hacker schools? What do you think about these apparent “short cuts?”"

Study Computer Science!!: A fun ad (a YouTube video)  for AP CS by a high school student. Nicely done.

What we should be teaching in CS by Laura Blankenship. Personally I think we need some help with this question – especially for younger students.

Navy Puzzle Challenge Blends Social Media, Cryptology I’m seeing more and more of this sort of thing. People who are looking for smart creative people to hire are using interesting and innovative ways to find them.

Bill Genereux @billgx passed on a link to How to (really) get girls into coding  in which Lydia Loizides  @lydiaNYC takes on the question from a woman’s point of view. Do you agree with her?

Garth Flint asks a big question - How expensive are good teachers? 

New from Mark Guzdial - Why Counting CS as Science or Math is Not Considered Harmful writing at the blog@CACM.

Scott Hanselman @shanselman says that This URL shortener situation is officially out of control. I have to agree. I am spending extra time these days preparing this link just getting rid of “short links” that seem to get several deep at times. At a point this becomes unhelpful.

Friday, June 06, 2014

On Being a Software Developer

Recently Mark Guzdial had a post called High school CS teachers need to read and trace code, not develop software that got me thinking along some new lines. Working with students on their final projects and some other online reading lately has me thinking even more about what is involved in becoming a real developer of software. Some claim that once you write your first code you are a software developer. Seems a stretch to me. I’ve replaced a few pipes and made minor plumbing repairs but that doesn’t make me a plumber by any means.

As a teacher with limited time for teaching I can teach only so much. I teach some important concepts that software developers need to know for sure. Loops, decisions, variables, and the general basics. Students can write simple programs with what we cover even in a short part of a semester that we dedicate to that in our first course. That doesn’t make them developers though. Not in a real sense that means someone should hire them to write code.

Developing software is more than just writing code. It means writing code well. Let me jump back to plumbing for a minute.

I replaced an l joint under my bathroom sink. It sort of worked by which I mean it only leaked a little. I knew the basics but my implementation left something to be desired. I hired a real plumber to fix that and some other work that, thankfully I knew were beyond my skill, and there was quite a difference. No leaks for one thing. For an other thing it all looks nice and neat and clean. My depth of knowledge was not enough to do a professional job.

This is also true with programming. I printed out a student program to play a game called lights out (instructions at the bottom of this post). It went on for about 20+ pages. The version I wrote too barely 2 pages. Why the difference? Experience mostly. There was nothing in my code syntactically that the student hadn’t learned. But the experience to look at a problem and see that there are different ways of doing things was not there for the student. Students took days and days to complete their Lights Out games. It took me a bit over an hour. That’s not a brag. It’s what happens when you have decades of experience.

When I looked at that program it screamed two dimensional array with “buffer” items around the edge to simplify operations. I’ve seen that sort of thing many times over the years. I see a group of items while a beginner generally sees 25 individual items that have to be handled individually. Could I have taught what I did to students? Of course. Should I have? Probably not with the time I had and the priorities for what needed to be taught in the time available.

In fact for each of the projects my students selected for their end of year projects (there were quite a variety of them) there is probably a technique that would have helped them create a more efficient and better running program. They could probably have saved time as well. But I didn’t have the weeks it would have taken to cover all those techniques.

What do we want to cover in a first programming course? The basic concepts of course. We want students to understand loops, decision structures, data storage, and the logical thinking behind all of this. That is computer science – at least a small subset of computer science. We’re not making them software developers though. Not by a long shot.


3. Lights Out – The game starts with 25 red buttons arranged in 5x5 grid. Each button pressed toggles itself and the four buttons around it (above, below, to the right, and to the left) between green and red. The object of the game is to get all 25 buttons green.

image

Related posts:

Thursday, June 05, 2014

Computer Science Principles Summit–Virtually

In case you are not a CSTA member  (why not?) and didn’t get the email this looks pretty interesting.


In a new twist for 2014, CSTA is thrilled to invite you to our first ever virtual summit in conjunction with our annual conference in July. As an online participant of the Computer Science Principles Summit you have access to presentation slides, handouts, and supplemental resources as well as the ability to interact with attendees participating virtually and on-site. This is free professional development for CS educators made possible by enthusiastic support from Google.

There are just a few simple things you'll need in order to take full advantage of our online summit experiment.

  • Register on the CS Principles Summit website so you can receive summit updates and the option to join a pre-conference tutorial on Google Hangouts-On-Air. CS Principles Summit Site: https://sites.google.com/a/csta-hq.org/csps
  • Before the summit, set up a Google account and connect with CSTA. Directions can be found on the CS Principles Summit website. CSTA on Google+: https://plus.google.com/u/0/104945032068887469146/posts
  • The day of the conference, use your laptop, tablet or smartphone to access polls, handouts, slides, and the interactive video stream. It all starts on the CS Principles Summit website.
  • Afterward, stay in touch with CSTA through social media on Facebook, Twitter, LinkedIn, and Google+. Review recordings of the sessions on the CS Principles Summit website, too!

I cannot stress enough how excited I am to be a part of this new dimension of conference participation. If you have any questions about getting set up that aren't covered on the Summit website, contact me, Daniel Moix, CSTA's Virtual Offerings Volunteer Coordinator for the Computer Science Principles Summit via email at daniel.moix@csta-hq.org.​

Wednesday, June 04, 2014

A Matter of Focus

My students are wrapping up the year with final projects. For the most part these are great learning experiences. Sometimes though students get hung up on the wrong things. For example, students can spend a lot of time getting things to look just right when what they should be focusing on is coding functionality.

One of my students is working on a game using XNA that involves collisions and showing explosions. He’s not happy with how the explosion graphic looks. Now if this were a game that was going into production that would be a serious concern. But for a final project where the code is the thing how the images look should be a later concern. Getting that message though can be difficult though. Human nature makes us want that which is visible look its best.

This is a common problem with projects that involved a graphical user interface. In other projects during the year I sometimes get around this by providing the GUI and asking students just to write the code. If they want to make the GUI “pretty” later I will let them but they have to have the code first.

There are also times when the focus is on “the right thing” but gets too narrow. For example I had a student ask me if there was a way in code to ask if something was NOT GREATER THAN OR EQUAL TO. I suggested LESS THAN. He was so focused on looking at the problem one way that he missed what should have been obvious.

That is a common problem even for the most experienced software developer though. That is why pairs programming (which I tried some this year) is becoming more popular. Even explaining a problem to someone else often makes the solution appear.

I keep thinking of an old saying “Though shalt not perspire minor matters.” I’ve heard it “don’t sweat the small stuff” as well. Sometimes it is hard to remember what is the small stuff and what is the big stuff. My student with the image issue had it wrong though only for that project in that context.

But in programming sometimes the small stuff really matter. For example is “=” to comparison operator or is “==” the comparison operator? Different languages do it differently. A small character but a big deal if you get it wrong. Often times one can focus and focus on an if statement and totally miss the missing character. That is where a second set of eyes can help.

For beginners the problem of a sort of tunnel vision can be devastating as they focus on the wrong thing or so hard that they miss things by being too close. A teachers job is often to help them refocus a bit. That is just one reason I think we’ll always need teachers for most students.

Tuesday, June 03, 2014

That Doesn’t Mean What You Think It Does

I’ve had some fun with a line from the movie The Princess Bride and meme generator below inspired by working with students.

not what you think

Programming is so non intuitive for many students. An equals sign doesn’t mean what they are used to and then we confuse it in some languages by having “=” and “==” mean different things. And that is just the start of the problem.

I find myself asking students “what do you think that code does?” in order to understand exactly what problem they are trying to solve.

Monday, June 02, 2014

Interesting Links 2 June 2014

I used to tell people that I liked to blog because I knew that classroom teachers didn’t have a lot of time to look for things. As the school year comes to a close and I am a classroom teacher I am finding the truth of that. My blog production is diminished the last few weeks. And I was sick over the weekend so even this post is late. So lets start with some fun.

Embedded image permalink

People have started a crowd funding effort to raise money to make Born With Curiosity: The Grace Hopper Documentary Hard to understand why there hasn’t been a movie made about her life yet.

KIDS REACT TO OLD COMPUTERS The kids are shown an Apple ][ some of us remember when that was the state of the art in school computers. The video is worth showing students so they can see how far we have come.

Founder of http://Code.org and Harvey Mudd President: Don't Call It "STEM" (Video)

Google Computer Science for High School programs from Google regarding CS in high schools.

Two more though provoking posts from Mark Guzdial

Do programmers still need a computer science degree to land a great job? Good question. What do you think?

Recently on the CSTA blog - Moving From "CS for a Few" to "CS for All" to "CS For Each"

Finishing up with a quote to think about:

    "The most effective debugging tool is still careful thought, coupled with judiciously placed print statements." -- Brian W. Kernighan

Wednesday, May 28, 2014

Looking Back To Move Forward

I think most teachers do some introspection at the end of the school year about how things went for them. They think about what worked and what didn’t work so that they can make the next year better than the previous years. That is the difference between n years of experience and one year of experience n times. Certainly I’m doing a lot of thinking. Inspired by some teachers I really respect who have blogged their thoughts (Garth Flint and Laura Blankenship) I’ve decided to put some of my thoughts to print.

I taught two computing courses and Yearbook this year. I did everything possible wrong with Yearbook (I’d never worked with a Yearbook before) but thanks to some incredible students we did turn out what I think is a great yearbook. Thankfully someone else gets that course next year. That is better for everyone.

My first computing course is a course we call Explorations in Computer Science. It is loosely patterned after the Exploring Computer Science course but adopted for a single semester and some particular needs of our school. two of us taught a total of ten sections of this course which is mostly taken by freshmen (ninth graders). In it we cover a range of topics including the Office Suite, some HTML, computing concepts (some of it using materials from CS Unplugged), and some basic programming.

Overall it went well. The other teacher and I shared and co-developed a lot of the materials. We were able to tune some of it from semester one to semester two which was helpful. Students seem to like the course. One of the things we are still working on it making the material on the Office Suite more about problem solving and less about mechanics. We’ve made progress with the first semester being better than our previous course that was all mechanics and the second semester improving on the first. It’s still an area were we think we can make progress.

The programming has been a mixed bag. I think the other teacher may have done a better job than I did because he was more organized. Organization is my goal over the summer. I also want to revisit the projects we used to make them more interesting. Most of all I want to get more interactive with students.

Honors Programming was my second computing course. Because of how we changed our curriculum around I had more of a range of previous experience this year than I have had in the past and will (I hope) next year. Some students had a previous semester course (or more) in programming while some had no prior experience in code at all. That made things interesting.

I’m pleased with the projects I used for the most part. Students liked them and did some good work. Here again I want to get more conversation going with students as I explain things. Lectures just don’t work no matter how interesting one tries to make them. I taught without a textbook this year. Sometimes that works but sometimes it doesn’t.

I think what I want to do over the summer is write up some supporting materials for both courses. Less than a textbook but more than a PowerPoint deck. Maybe I’ll call them tip sheets or sometime like that. I envision one to three pages with pictures and sample code as well as  textual information. I’d like to cover both the required material and some supplemental things. It’s a thought. We’ll see how far it goes.

Organization will be a must do for the summer. I think I have a good handle on timing or at least how long things should take. If I document it all as a clear plan I hope to keep things moving more smoothly. Hopefully that will help students as well as me.

So what are you doing to prepare for next year? Or can’t you think about it before August?

Monday, May 26, 2014

Interesting Links 26 May 2014

There are still a couple of weeks of school for me and my students. Well the seniors are done with their finals on Friday but underclassmen  have some time after that. I should be thinking about summer vacation but I find myself thinking a lot about how to do things better next year. Interestingly enough most of this weeks links seem to largely have a forward looking slant to them. Take a look.

Constructionism for Adults by Mark Guzdial @guzdial I talked to Mark about this last week and told him he gave me something to think about on my flight home. And it did. Take a read.

Save the date! CS Ed Week is Dec 8-14, 2014 Will it be centered around an Hour of Code again or something completely different? Really not too early to put it on your and your school’s calendar.

Super Computer Science: AP Computer Science Teacher Training Rebecca Dovi links to resources AP CS teachers will really find useful.

A true CS course for next year by Garth Flint. Like me Garth is already thinking about how to do things next year. I find his introspection valuable to my thinking and I think you will as well.

Code matters – a thought provoking post by Bertrand Meyer. One great line that may get you to read is this one:

It is a pretty general rule that people arguing that language does not matter are partisans of bad languages.

Wednesday, May 21, 2014

Is the Tech Community Working Fine Without Women?

Mark Guzdial linked to a post about Technology’s Man Problem yesterday and highlighted one piece of it. It really got me thinking.

a commenter calling himself White_N_Nerdy wrote on Reddit, “I’m honestly trying to understand why anyone says that females are ‘needed’ in the tech industry.” He continued: “The tech community works fine without females, just like any other mostly male industry. Feminists probably just want women making more money.”

The bolded part above is my highlight and what I was thinking was the though that “The tech community works fine without females.” And my first thought was, well, no, actually the tech community is not working fine without females. Of course for me a well working community, by definition, incudes a diverse population including women. But even if you don’t include women as a requirement for a community “working fine” are we really ok? I think not.

Our software is too often non intuitive. We have too many bugs. We have too little in the way of creative ideas. We have great (for some definition of great) software for geeks and nerds and so-so software for the general population. And that is why we need more diversity.

Too much of the development community has no understanding of the term work/life balance. That’s not healthy. Too many people work too hard and not smart leading to software that is less than ideal and people who burn out.

In my first job out of college I worked for a software house that had a large percentage of women developers. They had lives. They had husbands, children and other interests beyond work. This lead them to work efficiently and smoothly. From them I learned that is not how many hours you work but how you work during those hours. We need more of that attitude.

We’ve seen all sorts of changes in other areas of work as women enter them in larger numbers. As more women entered the types of jobs involving business travel we saw wheels added to luggage. That’s not something men would have thought of on their own. Most men were too macho to say “I’m not carrying that because it is heavy.” Now we all accept wheels as being as normal as handles on luggage. What sort of changes would having more women in computing make? We’ll never know until it happens. But I suspect that men will find a lot of things how up that in hindsight they will wonder how they lived without.

Studies show that mixed gender teams tend to be more productive and more creative. With increased demands for software that solves more and more problems both productivity and creativity are desperately needed. We are not “working fine without women.” We are shortchanging ourselves and the community when we push women away. Men have to stop doing that.

Tuesday, May 20, 2014

Coding as Game Play

I’ve been thinking a lot about the idea of how we teach computer science or perhaps just programming to younger students. Some of it brought on my the online debate at the New York Times recently. Some of it by the comments Mark Guzdial posted from Elliot Soloway on his blog. And some of it just from ongoing thoughts I have been having for a while. What do we want elementary school students to learn and why do we want them to learn it?

We don’t know that introducing computing earlier in the curriculum will lead to more students studying it in high school and beyond. We want to believe it but there evidence is fuzzy at best. Clearly we are not expecting elementary and middle school students to develop professional code. Do we? So what do we want to get out of teaching computing earlier?

Tools like Kodu, Scratch and Alice (and other block programming platforms) are very much like video games. In fact they are virtually indistinguishable from video games. Is this good or bad? How do we even define good or bad in this context? Aside from learning to code or learning computer science concepts (assuming those things are happening) is there any other benefit from this early introduction to coding?

Perhaps there is. A recent article in the Seattle  Times (Code-writing clicks as kids get creative) talked about the creative aspect of all of this “video game coding.” I do believe that coding is very much a creative pursuit. That creative aspect is a large part of what got and kept me interested in it over the years. I do think that students benefit from more creative opportunities so these coding games are good for that. At least I think the are.

While I do want young students to learn  the things that we at least (want to think) teaching computing does such as critical thinking and problem solving I’m not sure we have evidence that this works. But perhaps the creative aspect of computing is useful for some students. And games can be creative.

Related links:

Monday, May 19, 2014

Interesting Links 19 May 2014

The only blog post I wrote was the Monday morning links post. I feel like I’m slacking off but I sure was overloaded with other things to do last week. Some of the links below deserve posts of their own and if I have time this week I’ll have more to say about several of them. But just in case go read them now. Smile

Reading, Writing, Arithmetic, and Lately, Coding: But mostly a video game (Elliot Soloway) Interesting take on the pros and mostly cons of learning to code via what amount to video games from Mark @guzdial

What It Takes to be a Successful High School Computer Science Teacher  Another post by Mark @guzdial this time at blog@CACM A must read in my opinion.

Stretch your programming skills: 4 languages you should learn this year An interesting list. Not sure I agree completely but it is something to think about.

Microsoft Research Launches Code Hunt Game to Teach Programming More gameification of learning to program.

Annual self review of my Python course  Garth Flint takes a close look at his Python course.

Microsoft is running free Youthspark summer camps, starting July 2 at various local Microsoft stores. Read about them at Helping Students Learn Through the Summer

Embedded image permalink

Not everyone will be a programmer Good stuff from Laura Blankenship who by the way recently won an election to the CSTA Board.

The winners of the Grand C++ Error Explosion Competition I’m not so sure that winning a competition like this is a good thing. On the other hand I am amazed at how easily one simple error can generate huge numbers of errors.

NY Times debate - Computing in the Classroom -  What do you think? Mark Guzdial takes exception to some statements on both sides of the issue at his Computing Education blog.

The rise of coding in K-12.... http://nyti.ms/1jyhQoH Reading, Writing, Arithmetic, and Lately, Coding | NY Times

Almost 6000 views in it's first few weeks - have you read Microsoft UK’s Computer Science in the National Curriculum ebook (regarding the Curriculum in England) yet?  

Embedded image permalink

Monday, May 12, 2014

Interesting Links 12 May 2014

Looking at my Facebook timeline it looks like schools in the southern US are starting to wrap up for the year already. My school has about another month or so. After that it is ISTE for me! Looking forward to seeing a lot off friends there and learning a lot. A lot of learning online for me now though. As usual I share some interesting links below.

Have you wondered What a systematic approach to computer science education looks like in England? I have and fortunately the National curriculum in England: computing programmes of study is online. Queen’s English spelling and all. Closely related  Mr. O’Callaghan who teaches in the UK is collecting a bunch of GCSE Computing revision materials

My friend Ken Royal @kenroyal discusses why educators should visit the exhibit halls at conferences.  I happen to agree with him. There is a lot of value in the exhibit halls of educational technology conferences.

How serious is Microsoft about their international student competition the Imagine Cup? Satya Nadella. Microsoft’s new CEO, will be a judge at the Imagine Cup World Finals as part of an  impressive slate of judges.

An interesting list - 7 reasons Computer Science is ideal for women.

Lee Kolbert writes in Flip, Blend, and Mix with New Free Office Plugin about an interesting new addition to PowerPoint. More interactivity. Needs the latest Office or Office 365 which I have yet to get so I haven’t tried it myself yet.

Game development takes a lot more than coding. A new study shows that diversity and communication skills are key.

This is interesting. Did you see the ciphered tweet from the NSA? Apparently they do this from time to time to help recruit people who are interested in code breaking.  Code Cracked: Mysterious NSA Tweet Is Decrypted in Seconds

Thursday, May 08, 2014

Can You Explain the Binary Clock?

Some years ago my wife bought me a binary clock. I have it sitting on my desk at school facing the students. It drives the students crazy.

What is it?
A clock.
How is that a clock?

We do cover binary numbers in class. And while they seem to get the idea and do well on worksheets and quizzes somehow making the application to the visual artifact of the clock is hard for them. The other day I had several students ask for a more detailed explanation of how it works. I thought that sounded like a reasonable request and started thinking about some visual aides to make it go better. Being a programmer a program seemed like the best solution. Maybe PowerPoint or similar would work for some people but not me. So during my lunch break (and some of a prep period) I created a binary clock program. It looks like this:

Binary Clock

There are two columns each for hours, minutes and seconds. I added position indicators on the right hand side to show the ones, twos, fours, and eights digits. Along the bottom I show the value of each column. This makes it easy to read that this image was taken at 1:17 and 9 seconds. The totals and position indicators are scaffolding and there are buttons to make each set disappear. I also have a stop clock button so we can deal with a static time or set a specific time for discussion purposes.

The class discussion went pretty well. By the end of the session I had students calling out the time displayed, even without the scaffolding, as I changed the static display. I plan on using this as an integral part of binary discussion in classes next school year. I am hoping that making it all more visual and perhaps letting students manipulate virtual clocks themselves will help then internalize the concepts better.

I rushed the code a bit so it’s not really sharable now. I am thinking about assigning something like this as a project for my advanced programming students. I’m looking forward to what they come up with for solutions.

BTW my primary list of Resources For Teaching Binary Numbers can be found at this link.

Wednesday, May 07, 2014

The Case For Lifelong CS Education

I stumbled upon a really good talk by Simon Peyton Jones from Microsoft Research about teaching computer science early on today. In it he talks about some things I have been thinking a lot about myself lately. That being computer science education throughout the school years. Not just a single or pair of courses late in high school but a series of including CS starting in the primary grades. Even if you don't read the rest of my post I recommend the video.

I’m teaching high school computer science and for most of my freshmen this is their first experience with computer science. Oh sure they have been using computers for many years but that is hardly the same thing. They have been exposed at some level to just about every other science and math subject for years. We don’t wait until high school to teach addition for example. That would be silly. Is it less silly to wait until high school to start computing science training? I think not.

By high school students are using math to help them learn other subjects like physics and even social studies. Can you talk about financial systems without an understanding of math? Not hardly! And they have been using reading and writing for over a decade as tools to learning other things. But not computing and that is a shame. I feel like I get my students just to the point of being able to do interesting things and then we are out of time. Frustrating!

I had my Explorations in Computer Science students write a temperature conversion program recently. It was a great way to talk about the difference between concepts like integers and real numbers, order of operations, and even number bases (1/10 is an infinitely repeating fraction in Binary). This is all material that they learned (sort of) in middle school if not earlier. Why could they not learn it with computing? Personally my understanding of those important concepts was enhanced when done with programming. I suspect it would be for many others as well. That is the tip of the iceberg for me. I really started to understand algebra when I got into programming. Programming allowed me to do so much more is less time that it became a wonderful tool for me.

What I would like to see my high school students is using computing  and programming as a tool for more than just learning how to program. I want to see them getting creative. I want them to solve problems but not my problems. I want them to solve their own problems. In my university statistics courses I kept getting bogged down in the arithmetic so I wrote programs to do the math for me. As my professor pointed out to my peers who complained about that I had to really understand the formulas and their application to write the programs.

I’ve had students go on to write programs to help them with their other school work. It is a wonderful thing to see. I would like to see it become the norm rather than the exception. For that to happen we have to start earlier. And it has to be a regular and, dare I say it, required, part of the curriculum.

People say that making computer science required will make it boring or that it will cause students to be turned off from it. And that is always possible. A poor teacher can make the most interesting topic dull, boring, and horrible. That is a very pessimistic and self-defeating attitude though. The other problem is a serious shortage of people qualified to teach CS. What that means is we need to train and prepare more teachers not that we should just give up on the idea of doing what needs to be done.

Monday, May 05, 2014

Big Change At The CSTA

Earlier this evening Chris Stephenson, the founding executive director of the Computer Science Teachers Association, announced her resignation from the CSTA. (Looking Back, Looking Ahead, and Thank You for the Honor of Serving CSTA) Her blog post includes a long list of the CSTA’s accomplishments over the first ten years of its existence. Make no mistake, Chris has been a driving force behind this organization from the beginning. Actually from before the beginning.

I’ve known Chris for many years now as we meet long before there was a CSTA. She has long been a powerful voice (and actor) for computer science education. I know that she will continue being that powerful voice as she takes on new challenges at that California advertising company (Google I think it is called) where she starts next month.

While Chris provides a look back at the history of CSTA I think it is important to look forward as well. The last year or two have seen an explosion of growth in interest in Computer Science and in the acceptance of computer science as counting for graduation credits. Code.Org has been a huge part of that and gets a lot of attention (well deserved) but it is important to remember they are building on a lot of the work that CSTA and its members have been doing for the past ten years. So where do we go from here?

CSTA is no less important now than it was ten years ago. I would argue that because of the progress we have made it is more important than ever. CSTA is a powerful voice of the computer science educator. It is the organization that supports local groups of teachers in CSTA chapters for example. It is the organization that provides the single most influential CS education professional development opportunity (the CSTA Annual Conference). It is the organization that has done the leg work behind many of the statistics that other organizations and groups use to make the case for CS education. And it is done the research into standards for courses and certification for CS educators.

As the demand for CS educators grows, and it surely will, CSTA will be the group that supports these teachers in the long run. Fortunately CSTA has a strong and active membership, a capable volunteer leadership in the Board (yes I’m on the board but there are some great people on it as well), a very good staff, and many people willing to step in and work for common goals.

Thanks Chris! You’re leaving CSTA in good shape.

Interesting Links 5 May 2014

Well back to school for me today. I didn’t plan on much Internet time last week (school break) but it turned out that the weather was horrible and I stayed indoors more than I’d planned. So I do have one or two links to share. First of some last minute aid for students taking the APCS exam this week.

Rebecca Dovi has some flashcards and some advice to students taking the APCS exam on her blog at AP Computer Science Exam Review Worksheet you can follow Rebecca on twitter via @superCompSci. I do.

Speaking of Twitter – a lot of education discussion happens on Twitter. So much so that Twitter itself has taken notice. Twitter Exec Reports that Educators Dominate the Twitter sphere

Did you see my post last week about HSFCTF: A Cybersecurity Competition For High School Students  Looks interesting. I’ll be talking about it to my students today.

Friday, May 02, 2014

BASIC, Computing, and What Have We Lost?

Yesterday, May 1, 2014 was the fiftieth anniversary of the BASIC programming language. Articles about this are abundant on the Internet and rightly so. I link to a couple of them at the bottom of this post for people who don’t want to Bing (or Google) for them. BASIC which is short for Beginner's All-purpose Symbolic Instruction Code was how many people learned to code “in the old days.” Many will tell you that its time is long past but even if you agree with that (and I don’t) it is good to look back on its importance.

In the early days of the personal computer, before Ken Olsen made his oft maligned comment that "There is no reason anyone would want a computer in their home." there was in fact no reason to have a computer in the home. If you wanted to use a computer at home you really had to create your own programs for it. The Internet was in its infancy and very few had access to it outside of work or school. And even at work or school you were limited in who had access. Tools like word processing or spreadsheets were still to come. Why would you have a computer at home without software?

The first personal computers, which came before the IBM PC we now think of when we say PC, did come with one important piece of software – BASIC. The Commodore PET, the TRS-80, the early Apple computers and many more which have faded into history came with BASIC. The people who bought computers were forced to learn to program.  

I learned BASIC in college on a mini-computer (built by Ken Olsen’s Digital Equipment Corporation). I had learned FORTRAN IV on an IBM mini using punch cards in a course the previous school year. The DEC computer was new and it didn’t have FORTRAN but it did have this BASIC stuff. And there was documentation laying around. The transition from FORTRAN to BASIC (in this case a version called BASIC-PLUS) was pretty easy. having access to a time shared computer which several of us could use at once was hugely empowering. It was in a sense of taste of personal computing as it was to develop.

At there time there were all sorts of books and magazines that provided listings of simple BASIC programs. Remember no Internet! Moving code from one computer to another meant transporting physical media usually magnetic tapes from one location to another. So we typed in these sample programs. We learned from them. We added to them. We made them our own. It was heady times.

Those of us who could program got attention. We did “cool things” like make the computer print out large banners or ASCII art. Some of us thrived on it.

As the personal computers became less expensive – I paid $600 for my first personally owned computer – a TRS-80 – more hobbyists bought them and learned to program. Almost always with BASIC in some form or another. Most were self taught because there were few if any classes available.

Today computers are ubiquitous and we have come quite dependent on them. While 50 or even 30 years ago we could get by with a relatively few number of programmers today we need more than we have. Few computers come with development software anymore though. And we don’t have enough people learning on their own. Oh we have some and they are doing some cool stuff. I read this morning about a student who is helping pay his families mortgage with income from some iPhone apps he wrote. He’s self-taught. Search engines and the Internet are here now. (See How a Florida kid's "stupid app” saved his family’s home and landed him on the main stage at Facebook for more on that story.)

So if computers don’t come with BASIC anymore (or any other development tool) how do the do it yourself learners get started? Fortunately there are a lot of tools free for the download. Microsoft has Small Basic which is a lot more like the early version of BASIC in terms of simplicity and ease of use/learning than most others. And they also make an express edition of Visual Basic (and other languages) available for free. Their DreamSpark program (which I used to get paid to promote but haven’t for a while) is a great opportunity for students to get professional grade software for free.

And of course Java and multiple development environments for that are also free. I confess to not being a fan of Java as a first language though and that is why I think various version of BASIC still have a place today. The syntax of Java and other C-family of languages really seems to get in the way of learning the more important concepts of programming in my experience.

Python has a lot of the good qualities of BASIC being a dynamic language and you can find it for free as well. But I don’t see an edge that it has over Visual Basic for example. (Your mileage may vary of course) Either does let you “play around” a lot though and that is important. BTW for very young students, pre-teens for example, you may also want to start Programming With Blocks of which there are many free and low cost options. But eventually you want to learn a real language.

What about the future? The future of computing and of BASIC? BASIC has come a long way in 50 years. Arguably it has grown with the times better than its early contemporaries FORTRAN and COBOL. While neither of them were designed with beginners in mind today’s versions of BASIC still have many of the attributes that made BASIC such a powerful learning tool in the beginning. A language like Visual Basic lets one do pretty much anything a language like Java lets you do. In fact it lets you do many things easier, with less frustration and with more ease of making programs that look and feel real.

I teach my student in our school’s first computer science course how to program using Visual Basic. It works well. And while, largely in a bow to the need for them to learn Java in APCS, we use C# in the first full semester programming courses I’d be quite comfortable teaching them a lot more VB. In fact some of my advanced students continue to use Visual Basic for their own personal projects.

BASIC was designed to be friendly and forgiving and those are still strengths we need in programming today. So here's to you BASIC and I hope to be programming with you as look as I write code.

Tuesday, April 29, 2014

HSCTF: A Cybersecurity Competition For High School Students

HSCTF, an online competition which will educate high school students across the country about computer security, runs from May 18-25, 2014. Competitors in High School Capture the Flag (or HSCTF) will learn computer science skills, and use ingenuity to discover a series of increasingly hard to find “flags” encrypted, hidden, or otherwise stored somewhere difficult to access.
While HSCTF is primarily about educating students in computer security, it will also include other computer science topics such as programming, algorithm design, and programming language design. The approach is unique in that it extends the CTF model to other areas of computer science.HSCTF is inspired by Carnegie Mellon's enormously successful picoCTF:
https://picoctf.com/
To learn more, see sample problems, and sign up to receive more information about registration, visit:  http://hsctf.com/For questions, contact Jacob Edelman, HSCTF Lead Founder/Organizer at:
jacob@HSCTF.com.


Monday, April 28, 2014

Interesting Links 28 April 2014

I’m officially on vacation this week. I’m not sure if there will be an interesting links post next week as I plan to take some time off of the Internet. In the mean time a couple of things I collected last week.

One big piece of news from last week was http://code.org and that they are now Partners with 30 School Districts to Bring Computer Science to Classrooms

Code.org made their own announcement on the code.org blog. There they said “Today we announce 30 school districts will offer computer science to 2M students. 1M students on our platform already.”

NCWIT is proud to present their new NCWIT scorecard // A report on the status of women in information technology // Some interesting data here for anyone interested in how women are doing in IT.

Maker Spaces and computing seem to be natural allies.  Want to Learn About Makerspaces? Here are 26 Resources to Assist You

Friday, April 25, 2014

So Many Myths About Teens and Computing

For the last year and a half I have been back in the classroom as a full-time teacher. It’s a lot of fun working with the students. It’s been a bit eye-opening though about what young people can and cannot do with computers. They are not the wizards that so many people seem to think they are. Digital natives? Not hardly.

Oh they can find and play games. But doing productive work? Not as much. Even things us oldsters take for granted like moving files, creating and navigating through folders can be new to more students than you might think. They don’t experiment as much as you’d think either. We’ve largely raised a generation that wants step by step instructions for everything. Well except for games. Why they expect to have to figure out games but have everything else explained I don’t know.

And of course we all know that boys are the experts and girls are not. Ha! I see girls helping boys out with things like Word and Excel more than the other way around. In my programming classes girls seldom go to boys for help if there is a girl in the class they can ask. Boys ask boys mostly but seem more than willing to ask a girl for help. It seems like the girls are better at a little skill called “paying attention.” Imagine that.

Also girls and boys are both interested in programming if you give them projects that are interesting to them. The boys may like games better but not always. The girls like projects that manipulate or create images. Girls seem to get very creative when I introduce programming for the first time using turtle graphics in TouchDevelop for example. Boys like it as well though. Stereotypes don’t work well with teens. They work less well with pre-teens by the way.

Both middle school boys and girls love using programming techniques to tell stories. (My wife does a lot of that in her middle school.)

I’m more and more convinced that projects that give students a chance to be creative are the best ones for learning. Sometimes it takes a bit to push them away from the idea of having everything spelled out with cookie cutter ideas of write and wrong for results though. It’s like we have to reteach a bit of creativity that I know they had as pre-schoolers and in the early grades. It sure is worth it though.

Kids are still smart. Kids are still creative. You should hear their creative interpretations of rules! Taking advantage of the creativity lets them exercise the “smarts” more. And then the fun really begins for everyone!

Wednesday, April 23, 2014

Upcoming Bootstrap Workshops

From the CSTA announcement list.


Bootstrap is a curricular module for students ages 12-16, which teaches algebraic and geometric concepts through computer programming. In this workshop you’ll Bootstraplearn how videogame programming can be directly aligned with algebraic and geometric concepts. Work with your peers to discuss classroom experiences, and spend the day in your students' shoes. You'll be able to debrief with other teachers, talk pedagogy with the trainers, and try out the materials and software firsthand. And finally, you'll go home with a video game that you created! Choose the one that best meets your needs.

San Francisco, CA :: May 17th

We're offering a one-day Bootstrap infosession, hosted by Upward Bound at USF. This is not a full training, but will be a good introduction for anyone who is interested in learning more about the program. Discover how Bootstrap connects computer programming to core algebraic concepts, using a creative and hands-on project. You can sign up to reserve your seat, at USF's registration page [http://www.iammath.org/]. For more information, contact Emmanuel Schanzer atschanzer@bootstrapworld.org, or visit the Bootstrap website [http://www.BootstrapWorld.org].

--------------------------------------------

Waltham, MA :: June 25th-27th

The Massachusetts Computer Science Teachers Association is hosting a 3-day BYOD Bootstrap Workshop for teachers, which runs from June 25th-27th. This workshop is a full-scale training for math and computer science teachers, which includes a chance for you to practice teaching some of the material and getting feedback from peers and master teachers. 

Register at http://www.eventbrite.com/e/bootstrap-summer-professional-development-june-25th-26th-27th-registration-9697608809 to reserve your place now - registration is limited, and these seats will fill up fast! For more information, contact Emma Youndtsmith at emma@bootstrapworld.org, or visit the Bootstrap website [http://www.BootstrapWorld.org].

--------------------------------------------

New York City, NYC :: August 20th-21st

Bootstrap is delivering a 2-day workshop as part of our partnership with CSNYC. Space is limited to 40 participants, and priority will be given to public school teachers. For more information, contact Rosanna Sobota at rosanna@bootstrapworld.org, or visit the Bootstrap website [http://www.BootstrapWorld.org].

Hope to see you there!

Tuesday, April 22, 2014

Windows Phone 8.1 Project my Screen app now available

image
last week I installed the new Windows Phone 8.1 for Developers on my Nokia phone. There were some pretty cool features there with Cortana (the Siri for Windows Phone if you will) getting a lot of attention. And I’ve had some fun with it.
One feature that was almost there was called Project my Screen. I say almost there because while support for it was on the phone it needed an app on the PC to work as I wanted. Well now   the PC application that enables the feature is available to download from Microsoft’s servers. That is a screen shot from my PC of my phone screen on the right.

Now some people, including me, have had some issues getting it going. I found a solution a couple of places and have included one of them below. BTW the problem was with a Windows 7 machine. My Windows 8 machine was no trouble at all.

I hear talk that a wi-fi connection is coming but for now I am connected to my PC with a USB wire. It works pretty well and I look forward to demonstrating some of the apps I have been working on that use features that are hard to show in the emulator – like shaking. If you have a Windows Phone this app will come in handy for a lot of things.
One solution found on Reddit.
  1. Launch the app on the PC;
  2. Connect the Phone via USB;
  3. Go to Project My Screen settings on phone, it should say "Searching...";
  4. Close the app on the PC;
  5. Go to device manager on PC;
  6. Under "Universal Serial Bus Devices" you should find several instances of your phone. Right click each of them and press uninstall. It will prompt you to reboot once or twice, make sure to press "No";
  7. Disconnect the phone from USB;
  8. Launch the app on the PC;
  9. Connect the phone and wait around 30 secs for it to reinstall drivers. Note: you may need internet access for this on PC.
  10. On your phone, go to Settings->project my screen. Plug in your phone to your computer
  11. Open the Project My Screen app on your desktop/laptop. You should then receive a message on your phone asking whether you want to project your screen or not. Pressing yes will initiate the screen projection.

Monday, April 21, 2014

Interesting Links 21 April 2014

I may be getting some spring fever. Next week is our school’s April vacation but mild days and a sunny sky have me wishing I had a bit more time to enjoy the day now.WP_20140420_002

For this week’s links I start up with dueling posts. That is to say two posts on two topics with somewhat dissenting views.

First off – hackathons – good or bad?

Next the question of is computer science cool or not.

Speaking of Code.Org – They are looking to teachers to help add smart hints to http://Code.org tutorials see http://code.org/hints for more information.

European teachers -  Want to teach your students to code and to develop games? Join us for the first European #Kodu Cup:

The CSTA Voice - the newsletter of the Computer Science Teachers Association is now available 

Bootstrap is delivering a 2-day workshop with CSNYC (http://www.csnyc.org ). Space is limited. This event is in New York City.

Tuesday, April 15, 2014

Programming Languages Are Horrible

A bunch of my students in my honors programming class made the same error yesterday. Remarkably today Bertrand Meyer had a post about the very same error in the CACM Blog (Go read it – it’s great - Those Who Say Code Does Not Matter) The short version of my student’s problem revolved around how C-style languages handle if statements with multi-statement actions. Take for example the following code:
   1:              if (booleanExpression)
   2:                  DoSomething();
   3:                  DoSomthingElse();
   4:              if (!booleanExpression)
   5:                  DoAction();

Students have a tendency to assume that if the expression in line 1 is true that both of the statements in lines 2 and 3 will be executed. Not so. The compiler assumes that (regardless of indentation) only the statement in line 2 will be executed if the expression in line 1 is true. The statement in line 3 will always be executed. This caused my students no end of trouble. The right way to do this is to enclose the two statements inside curly braces.

   1:              if (booleanExpression)
   2:               {
   3:                  DoSomething();
   4:                  DoSomthingElse();
   5:               }
   6:              if (!booleanExpression)
   7:                  DoAction();

This removes ambiguity. I try to get students to use the curly braces even for single line code blocks but it is not an easy sell.

This problem doesn't occur in all languages of course. Visual Basic, derived from that ancient of languages BASIC, doesn’t allow this to happen as easily. Trying to do this line for line conversion in Visual Basic gives me errors.

   1:          If (booleanExpression) Then
   2:              DoSomeThing()
   3:              DoSomethingElse()
   4:          If (Not booleanExpression) Then
   5:              DoAction()

The compiler refuses to deal with this code until End If statements are added to make things clear.

   1:          If (booleanExpression) Then
   2:              DoSomeThing()
   3:              DoSomethingElse()
   4:          End If
   5:   
   6:          If (Not booleanExpression) Then
   7:              DoAction()
   8:          End If

Now I am not saying that Visual Basic is not without flaws. All programming languages have flaws. But we do have to be aware of these flaws. The flaw that Meyer wrote about was the same basic error my students made but was made by professional developers in a product that impacted millions of people. It is so easy to make “rookie mistakes” in many languages.

So does this impact the tools we teach with? Honestly, not really. The APCS exam is based on Java which has all the same problems of other curly brace and semi-colon languages. [Let’s be honest – are those curly braces and semi-colons there for the programmers or the complier writers?]  Especially in high schools where we are largely at the whims of things outside our control (APCS exam and pressure from parents and students to teach industry languages) wind up using Java, C++, and maybe C# for many courses.

Oh sure a lot of us get by with various versions of BASIC (and take flack for it from “experts”) but there is always the pressure to “move on.” Most of us at the high school CS level have barely heard of Eiffel (invented and promoted by Meyer) or other languages that have been invented in academic institutions. These languages sometimes do influence the development of other programming languages but seldom seem to migrate into industry intact.

What does that mean for us as educators? It means we wind up teaching students have to solve bugs that they’d be better off if the language did not permit to happen in the first place. This problem has, I believe, contributed to the development, popularity and use of drag and drop block programming languages for beginners. But eventually we all push our students to learning crummy languages.

I don’t see an easy answer. It will probably have to be the universities who solve this first. High schools are allowed to follow trends in higher education. And I have seen a lot of professional development organizations influenced by language choices of recent graduates. Though that almost always requires a common choice by many top universities which seems to be less common all the time.

For a lot of professional developers, especially those who are self taught, seem to view doing things the hard way as a point of pride. Looking for tools (or languages) that make creating bugs harder is seen as a crutch by the “brogrammer” crowd.

Ah, well, maybe when the current generation gets to be my age and loses the desire to spend time tracking down easy to prevent bugs things will change.

Monday, April 14, 2014

Interesting Links–14 April 2014

Crazy busy weekend for me. The weather was great and I got a lot done outside. Left me too tired to write this up last night. Sorry for the early birds who usually get here before now. Hope people find some useful things anyway.

This is a fun video Domino Addition – simulating binary gates using dominos.

The good folks at Phillips Exeter are putting on a hackathon for middle and high schoolers May 17. Probably of interesting only to New Hampshire and some Maine and Massachusetts students. But looks like fun. http://www.hackexeter.com/

Looking for a new CS teaching job? Or looking to hire a computer science teacher? You will want to check out the  CSTA jobs board.

BIG NEWS via NCWIT! Students age 13+ have the chance to attend this year’s Apple WWDC conference for free on a scholarship.

Computer Science as a School District Marketing Tool on the CSTA blog. The private school I teach at definitely lets people know about or CS offerings when we meet with prospective students. In an age of growing school choice and of people picking where to live based on schools does your school or district make the most of it’s CS courses as a marketing tool?

SHIP - Summer Hackers Immersion Program Really exciting looking summer program for computer science in Brooklyn NYC. I did a post about this last week but a link to the original announcement is worth re-sharing.

BTW I posted two other blog posts today about news from the CSTA members announcement list. If you didn’t see them or get the CSTA email check out:

Code: Echo–Programming Challenge

Using a coding challenge as a promotional event for a movie? This is a new one on me but it looks interesting. What I especially like is that they are sharing resources that students can incorporate into a game.


Here is a chance for your students to use their coding skills to win big!

Summer family movie EARTH TO ECHO is hosting "Code: Echo": a Challenge for students K-12 to create a game inspired by the film. Students can download assets and get creative.
PRIZES:
In each category there will be:

  • 1 grand prize winner ($5,000.00 + hometown screening)
  • 1 runner-up prize winner ($2,500.00)

WHO CAN ENTER
Students of all ages, a team with up to 4 friends, or an entire classroom.

Entries are due May 2nd. Start coding at www.codeechomovie.com.

Summer Work for Computer Science and Robotics Instructors

If you are a member of the CSTA you should have received this announcement via email. BUT if you didn’t or you are not a CSTA member (why not?) I thought this worth sharing.


Summer 2014 Employment Opportunities: Computer Science and Robotics Instructors

The Johns Hopkins University Center for Talented Youth (CTY) is seeking instructors for summer programs. CTY offers challenging academic programs for highly talented middle and high school students from across the country and around the world. Information regarding our summer programs can be found at www.cty.jhu.edu/summer. Positions are available at residential sites (room and board is provided in addition to salary) at various locations (see below) on the east and west coasts. A commuter site is also located in New York City.
We are currently seeking individuals with expertise in a number of Computer Science, Computer Programming, and Robotics courses. Graduate coursework is a desired qualification for instructor candidates.  Experience working with young students is a preferred qualification.

Active instructor openings at residential locations (room and board is provided in addition to salary):

  • Introduction to Robotics (5th and 6th graders): Bristol, RI and Chestertown, MD
  • Foundations of Programming (7th – 10th graders): Easton, PA
    ·         Fundamentals of Computer Science (7th – 10th graders): Lancaster, PA
  • Active instructor openings at commuter day site locations:
    • Introduction to Robotics (5th and 6th graders): New York City, NY

For detailed course descriptions, please visit

http://cty.jhu.edu/jobs/summer/courses/math_computer_science.html.
2014 Program Dates:
Session 1: June 29 - July 18
Session 2: July 19 - August 8
For a full list of locations and dates, please visit

http://cty.jhu.edu/jobs/summer/sites_dates.html.
More Information
Job Responsibilities, including salary:

http://cty.jhu.edu/jobs/summer/positions/residential/index.html

To apply, please visit

http://cty.jhu.edu/jobs/summer/apply/.
Please email resumes and inquiries directly to Peter Bruno, pbruno1@jhu.edu (Introduction to Robotics) or Joshu Fisher,jkfisher@jhu.edu (Foundations of Programming and Fundamentals of Computer Science).

Thursday, April 10, 2014

My Students Are Not Me

Sometime in elementary school a teacher taught number bases. I was fascinated. It was interesting. It was fun. It made perfect sense to me. I spent hours converting numbers from one base to another. For some reason base 5 and base 7 struck me as a lot of fun. I played with Binary and Octal as well. It just came easy. Lately I have been teaching (or trying) Binary to my students in our Explorations in Computer Science class. My students are not (to no ones surprise) me.

Some of them get it quickly. Some of the get it after a bit. And some of them just seem to think I am crazy. I have to remind myself that not everyone sees things the same. I have a lot of Resources For Teaching Binary Numbers (that is one of my most read posts BTW) and I am using a number of them. There is no one right way that works for everyone. I think I’ll keep trying.

I’m teaching classes and objects to my programming class these days and seeing the same sort of thing. Some people get it right away while others struggle.

Honestly I struggled with some of the concepts for a while myself. This is a big topic and I find that different people struggle with difference aspects of it. Why do we send messages for example. (see Don’t Just Grab the Wheel, Ask the Driver to Turn) The difference between getting methods and setting methods for an other. Again what was easy for me may be hard for others. And what was hard for me may come easy for others. I have to remind myself of that. It’s not all me and it is not all them.

There is never one right way to introduce a concepts to students. This is seldom more true than with computer science topics. So many of them are very far outside of a student’s previous experience. They often don’t have a good context to start with. It is up to me as a teacher to provide some context, some purpose, and to try and find enough ways to explain things that most (shooting for all) of my students to “get it.”

This as much as anything else is why teaching is so hard for some many people. It is easy to fall into the trap of saying “This explanation worked for me so it should work for everyone.” Well I think I’ll go now. I’m going to look at a video that may help some of my students.

Wednesday, April 09, 2014

Don’t Just Grab the Wheel, Ask the Driver to Turn

We’re learning about classes and related topics like data hiding and using methods rather than public data in my programming class these days. One of the students asked why we couldn’t just access public data from calling programs. One hears that all the time.

I asked him if when he was a passenger in a car he would ask the driver to turn or would he grab the wheel and turn it himself. I’m not sure is sunk in right away. The analogy didn’t seem to hit him as smoothly as it did me. The more I think about it the more I like it though.

We want the methods in a class to take care of the actions. We, the programmer using objects of that type, really don’t want to be making assumptions about how everything works internal to the class. There may be factors we don’t know about. Just like as a passenger in a car we may not be aware of things the driver is aware of.

The driver knows how responsive the car is, what sort of traffic there may be around the car, and a bunch of other things that we as a passenger may not be aware of. We’re much better off asking the driver to turn and letting them do it their way than taking things into our own hands.

This may be an analogy I can develop and use. Maybe it will help me to convince my students of the wisdom of data hiding and passing messages and requests.

Tuesday, April 08, 2014

Summer Hackers Immersion Program 2014

image

Mike Zamansky announced this program on his blog yesterday. (Announcing SHIP) It sounds amazing. It’s being run at St Joseph’s College in Brooklyn and is for students from all over New York City. Mike and his team are amazing teachers who are also getting support from NYC tech companies. This should be an outstanding opportunity for the students who are able to take part.

From Mike’s announcement:

SHIP is being hosted at St. Joseph's College in Brooklyn and runs from July 7th through July 31.

So, if you know a rising 9th through 12th grader in or around New York City let them know about this great opportunity.

Monday, April 07, 2014

Interesting Links 7 April 2014

Spring has sprung. Well at least the last of the snow is gone. Seems like late here but it hardly matters as I’ve been busy with school anyway. Seems like last week was slow for me on the Internet at least. Not to fear though I have a couple of links to share.

what is computational thinking? What indeed? This is a great explanation from the UK’s Computing At School site.

World Wide Access: Accessible Web Design video  I’m trying hard to get my students to understand the importance of making web pages accessible. This video from the University of Washington is a big help.

Why (And How) Students Are Learning To Code An infographic with a lot of information. 

Majors with the Most Pre-Graduation Job Offers. According to a recent study, students in these degrees receive more job offers before graduation.  Computer Science tops the list! 

How do we make programming languages more usable and learnable? A lot of discussion in the comments as well. Another great post by Mark Guzdial.

Senator Gillibrand Proposes New Legislation for Computer Science education 

Penn Scientists Teach Computer Programs How to Teach Programming  some news at Communications of the ACM.

Wednesday, April 02, 2014

Too Much Forgiveness

I’m teaching a little web development to my freshmen this week. Not a lot – it’s not a web development course – just enough to give them some idea of what is behind the screen. I’ve had students create a very simple profile page. The pages look pretty good when viewed in a web browser. The images are there. There are lists where there are web-developmentsupposed to be lists. And the hyperlinks (most of them) work. Sounds great right?

Well a lot of the code is a mess. <head> and <body> tags are missing. There is no proper closure to some of the list tags. And yet the pages work – for a basic definition of “work.” If I were a beginner placing my first web page on the Internet I’d be pleased. But I’m not. In fact knowing what I know about how things change I know in my gut that at some point pages like these will break and probably break badly. Eventually.

My job is to teach students to do things the right way. This is actually easier when doing the wrong thing causes thing to not work. Loading images breaks very easily but that is almost always a function of an incorrect specification of the file name or location. Operating system file systems are notoriously fussy. That is not always a bad thing because ambiguity is almost always a bad thing in computing. But web browsers are great at making assumptions about ambiguous HTML and doing (mostly) the right thing. Students are happy.

Next class we with have a long talk about what codes are missing or incorrect according to the standards. Someone will likely say “but it works fine in the web browser.” because these are teenagers and that is what teenagers say. I’ll come back with discussion of how small errors and code that can be ambiguous can cause unexpected problems later on and code develops. Hopefully they’ll accept that.

I’m thinking I need some new tools for them to use next time I teach this though. I need to look at software that verifies HTML and at least warns about errors. I have looked at the W3 Validator and it does some of what I need. I think I’ll keep looking as I don’t really want to write my own. Any suggestions? How do others check student web pages?

Tuesday, April 01, 2014

Thinking about Vo-Tech Programming & Web Development Curriculum

I get questions. By email, twitter, LinkedIn, Facebook and more. Seems like they come just about everyway. And I love it. Recently I got a question about vo-tech curriculum. I’ve been on advisory boards for quite a number of career/technical high school computer programming and web development programs over the last few years so the question is not a surprise. But for some reason this one had me thinking a lot more than usual.

If you were to begin teaching voc tech high school students programming and web development today would your curriculum be primarily based on Microsoft / Windows applications, Linux and Java or Mac OS X and iOS? The main goal being to teach fundamentals and core concepts so that when graduation came in four years their skill set foundation matched the majority of needs in the industry or aligned best with a college choice in CS?

A lot to think about here. Operating systems, programming languages, development paradigms and web development. It’s all getting blurry these days. And Predicting the Future of Computing is hard! Though all of that I have to work though my personal biases (People with a choice actually choose to use Linux? Or Java?) to try and outline something that is best for the most students. Whoa!

Career/Tech high schools are different from standard high schools. The vocabulary is different in ways that reflect different goals and points of view. Career/Tech high schools are largely about preparing students for jobs. In many trades that means apprenticeships and the like. For some it means entry level jobs without formal internships. For programming and web development there are no real apprenticeships and entry level jobs for HS graduates are rare and hard to come by. So most programming and web development students do go to college – some four year and some two year community colleges. Even still many of then work coop jobs or internships. The school to work focus is different from other high schools where the focus is more often school to more academia.

So what would I suggest for a career/technical program? Flexibility and project based learning. Ah, but specific tools and platforms?

Let’s start with web development. With software, including virtualization software, available for cheap to free though DreamSpark (https://www.dreamspark.com/) cost should not prevent a school from teaching students to set up their own web servers using both Linux/Apache and Microsoft. Build them in virtual drives. Knowing some thing about both is better than picking one or the other.

Expression Studio, still available though DreamSpark, is great for teaching web development including HTML and CSS. A great start. For programming, you’ll want students to know some HTML 5 and JavaScript. Maybe introduce some Hack but I don’t know enough about that to be sure. But it does seem like it has more of a future than plain PHP or Ruby.

For programming, mobile and touch are the future. JavaScript is a growing thing with Windows 8 touch apps. And nicely that fits in with the web programming. I prefer C# to Java or C++ but you will want to teach multiple programming languages during the program. The second language is often thought of as the hard one to learn so if they are on language three when they get out of high school things should just get easier.

A career/tech school should have tablets and phones available for students to develop on. Touch is different. Windows and Android would be my recommendations but if you have Apple fans iOS is in high demand. Can you do all three? Maybe. Depends of the faculty and the students. I know a lot of people would say do iOS and Android and forget Windows. I think it is far too early to count Windows modern (what they used to call Metro) apps out of the running. There are just too many of those systems out there.

College prep schools who have CS programs usually teach the Advanced Placement CS course. I am not a fan in general but that course really doesn’t make send for a Career/Tech school. For one thing the sort of students who thrive at a career/tech school learn better in a much more project based learning environment with theory being taught in a work related context rather than the way APCS tends to be taught. Also it’s too language focused for my tastes and most of these students are problem based and see the language as a tool they will learn as needed.

I think most Career/Tech schools do a great job of getting all of the same concepts taught without the straightjacket of the APCS curriculum. Your mileage may vary of course.

Lastly, for anyone who didn’t run away calling me an idiot, I’d like to talk about the exploratory. For those not familiar with Career/Tech schools, many of these schools run their freshmen students though a serious of departments (called “shops” in career/tech speak) for between one and four weeks. The idea if for students to try out the programs and make a more informed decision about which one they really want to take.

The key here is to have students say “wow” and find something that excites them.  Fun is also a good thing. The specific tools or projects almost don’t matter here. What matters is getting them interested. Any number of tools are used. Alice, Scratch, Small Basic, Visual Basic, Python, App Inventor and Gamemaker are all used with success by different schools. I would add TouchDevelop to that list as a possibility. I think a day or two creating a simple web page using plain old HTML in a text editor cane be useful as well. I hear a lot of “wow” when students open the first web page they create in a real web browser.

There is no real one size fits all for career/technical high schools anymore than there is for college prep high schools (see also Have We Reached a Consensus on a National CS Curriculum?) but there sure are a lot of good options to choose from.