Tuesday, April 29, 2014
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:
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:
Monday, April 28, 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.
Friday, April 25, 2014
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
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 learn 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 firstname.lastname@example.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 email@example.com, 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 firstname.lastname@example.org, or visit the Bootstrap website [http://www.BootstrapWorld.org].
Hope to see you there!
Tuesday, April 22, 2014
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.
- Launch the app on the PC;
- Connect the Phone via USB;
- Go to Project My Screen settings on phone, it should say "Searching...";
- Close the app on the PC;
- Go to device manager on PC;
- 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";
- Disconnect the phone from USB;
- Launch the app on the PC;
- Connect the phone and wait around 30 secs for it to reinstall drivers. Note: you may need internet access for this on PC.
- On your phone, go to Settings->project my screen. Plug in your phone to your computer
- 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
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?
- From the CSTA blog Karen Lang writes about Hackathons as Possible Student Motivators
- Mark Guzdial takes a more critical slant at Why bother? How hackathons can become more female-friendly (Be sure to read the discussion in the comments)
Next the question of is computer science cool or not.
Forbes starts us off with Why Is Computer Science Generally Viewed As "Uncool" By Teenagers? written by Jennifer Apacible, CS major at the University of Washington
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
1: if (booleanExpression)
4: if (!booleanExpression)
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)
6: if (!booleanExpression)
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
4: If (Not booleanExpression) Then
The compiler refuses to deal with this code until End If statements are added to make things clear.
1: If (booleanExpression) Then
4: End If
6: If (Not booleanExpression) Then
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
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:
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.
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.
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
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
Job Responsibilities, including salary:
To apply, please visit
Please email resumes and inquiries directly to Peter Bruno, email@example.com (Introduction to Robotics) or Joshu Fisher,firstname.lastname@example.org (Foundations of Programming and Fundamentals of Computer Science).
Thursday, April 10, 2014
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
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
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
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.
Penn Scientists Teach Computer Programs How to Teach Programming some news at Communications of the ACM.
Wednesday, April 02, 2014
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 supposed 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
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.
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.