Wednesday, July 27, 2016

Advanced Placement CS Principles Off By One Errors

I’m learning about the new AP CS Principles class the week. There is some good stuff in it. On the other hand the arrays in the pseudo code that is used to write language independent questions uses one based indexes rather than zero based arrays. This is going to make things interesting.

Most modern text based languages (C, C++, C#, Java, etc.) all have arrays where the index of the first element is zero. Many block based languages (Scratch for example) have the index of the first array element be a one.

As I understand it the logic behind the decision is to make it easier for students who learn with one based arrays. It does disadvantage students who learn with zero based arrays of course but I suspect the “powers that be” expect most AP CS P courses to be taught using block based languages. They may be right.

My school is still deciding what language to use for APCSP (we’re not offering it for the 2016/2017 school year but the year after) but this issue is one we will have to face eventually. Other schools who are using languages like Java and Python will be facing this issue this year. Oh boy!

I think it would be nice if array based questions on the exam include a reminder comment about the index start. Some will argue that it is covered in the handout and that teachers should prepare their students for this issue. And they would be right but under the stress of answering 74 questions in 120 minutes I think a tad extra reminder would be a good idea. Discuss!

Tuesday, July 26, 2016

Collecting and Grading Programming Projects

No one like grading. Well no one I know. But as teachers it is an essential part of what we do. Grading programs can be a real pain to do though. Do you run every program? Well you probably better. Do you read all of the code? Probably better do that as well. How do you collect it? On paper? Online? A lot to think about. Bare with me as I “think out loud” here looking for input from others.

My students save all of their programming work on a network drive that I have full access to. Assuming they follow directions, give files the names I ask them to use, and save things in the right place we’re off to a good start. Easier than it sounds but let’s assume it works. It usually does.

Opening up the project in the IDE used to develop it is the simple most powerful way to look at the code and run the resulting program. IT an take a while depending on the size of the project, the speed of the network and the speed of the computer.It’s not really necessary if the program compiles. One can just run the executable – assuming one trusts that the executable matches the code.

One can also ask for the code to be printed out and handed in. I do that a lot but it feels like a waste of paper. On the other hand reading code on paper feels better to me than reading it online. This is probably a result of me being old school and dating back to before we had screens to read code on and it was look at the cards or a listing or nothing.  I miss the color coding of the IDE though sometimes. Like those times when I think there is a problem somewhere in the code.

I’m thinking of having students create a Word document (or PDF) for handing in code this year. I’ll ask them to include a couple of screen shots of the running program at the top of the listing. That way I can see how their results look without running anything. I’m unsure if that will actually save time or not. Will it also open the door for more cheating? I hope not but it is something I will watch for.

I’ve been learning about the way projects have to be submitted for the new AP CS Principles course and that is moving my thinking about a bit. IT seems like doing something similar even if not exactly the same might have the added benefit of preparing students (and me) for the APCSP course which my school will be offering in 2017/2018.

Feedback is the other issue in grading. I have experimented with a couple of programs to record my feedback and grade justifications for both students and myself. Basically I have the result saved in each student folder on the network drive. Files are less likely to be lost or misplaced than pieces of paper. Plus my typing is a lot easier to read than my handwriting. I plan to keep this up this year but I also want to upgrade the rubrics I use and the programs I use to make it easier to provide more details than previously. What I use now   if very basic.

I’ve experimented with the rubric developed for Harvard’s CS 50 course. I like it for the most part but I want to tweak it some to fit what I think I need to provide for details. I’m open to other rubrics or grading plans as well if you know one that works well for you.. No matter what method I use for collecting and reviewing projects a good clear rubric that students understand is critical.

Monday, July 25, 2016

Interesting Links 25 July 2016

Blogging just hasn’t been my thing the last two weeks. Too much travel, too much work around the house when I haven’t been traveling, and I really need to do more prep for the new course I am teaching in September. Speaking of preparation and travel, I am in St Johnsbury Vermont this week learning how to teach the new AP CS Principles course. Thankfully not starting in September as two new course in the same semester would be a bit much. Not that CS teachers don’t face that a lot but really I’d like to avoid it if possible.

A lot of these links came from the Annual CSTA Conference the other week. I tweeted a lot while I was there. Some are from later. There are more than usual. But as usual I tried to pick out the best of what I saw in hopes of not wasting your time. Enjoy!

Speaking of the Computer Science Teachers Association – have you seen the new logo and website? I like it how about you?

The Beauty and Joy of Computing - CS Principles Part 1 - starts on edX on September 6. If you are thinking about starting AP CS Principles this may be a good place to start.

Coding Resources for non-Computer Science Teachers – we’re seeing more and more teachers who do not have a CS background being asked to step up and teach CS. This is a useful list for them.

Building Computer Science Teacher Pipelines at CSNYC  h/t @lsudol New York City has big plans for adding more CS education and filling the teacher pipeline is a big part of it. Take a look at some of their plans.

Interesting trip report (not by me) on the Snowbird conference focusing on talking about CS Education research. http://blogs.uw.edu/ajko/2016/07/20/snowbird-trip-report-automation-education-and-academia/

The Allen Educators program is still somewhat new to me.@AllenEducators and it is not just for CS teachers.

Dawn DuPriest writes about it on her blog at The Allen Distinguished Educator program and grants

Meeting the need for AP CSP at Georgia Tech  by Mark @guzdial Teaser: It’s not by adding a new course patterned after AP CS Principles.

OK what is interesting about this new camera from Nest is that they are building software so that it recognizes the difference between people and not people (animals, leaves blowing in the wind, etc.)

Read about it on Wired or the Nest official outdoor camera website.

Microsoft announces professional degree program to fill the skills gap via @techcrunch People have been asking Microsoft and other t3ch companies to run their own university courses for years. Is this a good idea? I’m not sure and I tend to be a MOOC skeptic but still an interesting development.

Looking for a Crypto101 Introductory Course for Programmers  This may be an option.

Small Basic Pi – “Small Basic, one of our favorite learning languages, marry that up with the Raspberry Pi and you got some tasty IoT”

Build your own robot with #Internet of Things and Raspberry Pi! See how:  One day I’ll have time to do this.

 

Great rubric for evaluating CS resources from Saber Khan ( @ed_saber) at informative #csta16 session. I love these suggestions.

BBC micro:bit lessons via @YouTube These devices may be coming to the US. When? No idea but if you are in the UK and have them check out these videos.

Here they are! The new ISTE Standards for Students

Speaking of standards have you seen the New CSTA standards at http://www.csteachers.org/page/CSTA_Standards

The ScratchEd Teamis crowd-sourcing a list of cross-curricular Scratch projects. Add your suggestions here: http://bit.ly/scratchacrossthecurriculum …

Saturday, July 16, 2016

Picking a Platform for Teaching Mobile App Development

Come late August I’ll be teaching a course in Mobile Application Development. It seemed like a great idea when we were discussing new courses to add to the program of studies. Now it appears to me that picking a development platform is easy if you only have to teach one set of devices: iOS or Android Of course Windows Phone is by far the easiest platform to develop for but I am pretty sure the students who have signed up want to develop for their phones. Previous surveys I have done at school suggest the split will be about 60-70% iPhones and 30-40% Android phones. So I need something that works on both. Ouch!

I’d prefer a text based language but a drag and drop or block based language would probably work. Most of those create apps that run in the browser which is ok but never really feels like a “real app” what ever that means these days. What I’ve looked at in that area are TouchDevelop and code.org’s AppLab.

AppLab is pretty cool and gives easy access to cloud data which is a plus. It doesn’t seem to give access to phone features such as accelerometers, GPS, and cameras. I’d really like that to make the course relevant to phones. TouchDevelop, which I have some experience with and even a few lesson and project plans for, does give access to phone features. I need to find out more about cloud data. I think it is there but am not sure how easy it is to use yet.

For text based languages the only real option I know about so far is Visual Studio with Xamarin. I know it lets me do C# and build for both iOS and Android but I don’t yet know how hard it is to deploy to them. I believe that deploying to iOS requires a Mac which I do have access to but I don’t yet understand how that connection works. Hopefully YouTube has something on it.

What I’d really like is to talk to someone who has already done something like this. What worked? What didn’t? Typically I get people who say things like “I haven’t done it myself but this should work.” Ah, thanks, but “it should work” I can usually figure out myself. I’d like to same myself from having to try a lot of things that should work and go right to things people know works.

Next week I start trying things in earnest. Hopefully the computers at school have had their memory upgrades – emulators take a lot of memory. And I can play with the Macs there. But I’m still open to suggestions here. Anyone I know done this already and can save me time?

Monday, July 11, 2016

Interesting Links 11 July 2016

Yes I’m late with this week’s interesting links. In my defense I have been extremely busy the last four or five days. Last Thursday and Friday were the CSTA Board meetings. Saturday was helping to set up for the CSTA conference. Sunday and today have been the first days of the CSTA Conference. With over 500 attendees the place is hopping. I’ll have a post or two about the conference later in the week after its over. In the mean time if you are not at the conference but are on Twitter follow the #CSTA16 hashtag for a lot of great stuff going on.

But for now a few links including some things I have learned at the conference.

The ScratchEd Team ‏is crowd-sourcing a list of cross-curricular Scratch projects. Add your suggestions here: http://bit.ly/scratchacrossthecurriculum

The new CSTA K12 Computer Science standards are now available at http://www.csteachers.org/page/CSTA_Standards

I learned about this How-To: Papercraft Enigma Machine at one of the workshops at the CSTA Conference. This link may be the most retweeted link I have ever tweeted. Looks like fun.

David Renton ‏posted Resources for creating a Flappy Bird game in < 2hrs with TouchDevelop & @Spriter2D

Problem solving or solving problems via @dougpete Should we rethink how we write Computer Science Textbooks? Take a look at Doug's post and let us both know what you think.

There is a new Hopscotch update is now out ! Download now for new blocks and features to power up your projects. http://hop.sc/29uda4M

Thursday, July 07, 2016

Secretary of Education Hosts Tea with Computer Science Teachers

Once a month a small group of teachers is invited to have tea with US Secretary of Education John King. June was the month for computer science teachers and I was honored to be one of 14 teachers from around the country to be invited to meet with the Secretary at the Department of Education in Washington DC. US DOE

In his welcoming remarks Secretary King spoke about how important he and President Obama felt computer science education is for students. While he mentioned jobs I was pleased that he sees CS as more than vocational training but as an important liberal art that helps all students better understand the world around them. That is all too often left out of the conversations.

Of course there is only so much the Department of Education or the President can do about supporting CS education without help from Congress. There is currently a request for $250 million dollars to be included in next year’s budget to support computer science education. This action seems to have bi-partisan support and the Computer Science Education Coalition (who hosted lunch for he teachers earlier in the day) has been bringing industry and NGOs together to back the request.

US DoE AlfredTeachers did most of the talking after the Secretary's brief remarks. The Secretary (and his staff) took copious notes and were very focused on listening.

Equity was a big topic. Access to all is a big deal as too many students never have a chance to learn CS.Teachers talked about how important it is that all school offer CS at least as an option. It is better as a requirement though as we can’t count on everyone to self select into CS. We talked about making CS relevant and interesting. While it is intrinsically interesting to many of us in the field students need to be shown its power, it’s options for creativity, and how it can make a big difference in the world.

We were asked about the importance of starting CS early. Was HS soon enough? Teachers pretty much all agreed that it was important to start CS earlier. Middle school at the latest. Students are making too many decisions about their academic paths too early to wait until HS to expose them to CS for the first time.

Teacher training is a big deal as well. One teacher pointed out that it takes less training to allow an elementary or middle school teacher to teach some basic CS than it does to prepare a HS teacher for a full blown CS course such as the Advanced Placement course. On the other hand getting students all excited about CS at a young age but not having more advanced options in HS can be a problem. So we really do need it throughout the system. We need a lot more professional development at all levels though.

I left feeling listened to and that the Department of Education, the Secretary, and the President really do want to support computer science education. Now if we can get Congress onboard we can see some real progress in bringing CS for All.

More pictures from the Computer Science Tea With Teachers can be found at the Department of Education Flickr page

Three Legs to a Successful Computer Science Curriculum

Summer is a great time to think. I’ve been fortunate enough to have several opportunities to talk to other computer science teachers this summer. And will have more next week at the Annual CSTA Conference. It seems to me that the best computer science programs have support from three areas:
  • · A good teacher (or teachers)
  • · A supportive school administration
  • · A supportive IT support person/organization
The teacher “leg” is pretty obvious. The teacher doesn’t have to be the most knowledgeable person if they can make up for that with courage to trust students and the willingness to always be learning. Enthusiasm for the subject is important as well.  There is no one way to describe the good CS teacher. There are many kinds of them.

Administration has to, at a minimum, stay out of the way. I’ve seen some great CS programs where the building principal appears not to have much of an idea of what is going on with CS. But they let the teacher run their program. Of course it is better still to have active support from administration. You really want a building principal and district level administrators who help to provide resources and encouragement for a computer science program.

The IT and network support seems to be the hardest “leg” to find. In a small school the CS teacher and the IT department may be the same person. That can work out fairly well but it really puts a strain on the teacher. It seems as though IT issues take a lot of time away from teaching for the teachers. That is why a separate IT person (or team) can make a huge difference. IT departments can put crippling restrictions on CS teachers or they can help them make the most of available resources.

A lot depends on how they (the IT people) see their mission. You really want IT people in a school who see their mission as enabling education to take place and not just to make their lives as easy as possible. I’ve seem IT departments who take weeks to fix problems with a student account and I have seen IT departments who will drop almost anything to get a student back online and in the program. You can imagine which schools have the better CS programs.

Administrators have a key role in ensuring that IT supports rather than hinders CS education. I’ve heard a lot of stories of principals and even superintendents say “my IT department will not let me do that.” You’d think the IT department ran the district rather than the IT people working for the administration. Fear is a big part of that. Far too many school administrators don’t know much about the technology they use so they defer in too many cases to an IT person who is looking for an easy way out. Administrators who have good CS teachers, especially those who spent time working in industry, have a second resource – the teacher – they can turn to for fact checking.

Ultimately teachers, administrators, and IT people have to work together with a single mission – providing the best CS curriculum possible for the students – for a CS program to really live up to its potential.






Wednesday, July 06, 2016

Must and Should Are Not The Same Thing

I came under some criticism for a comment I made on Facebook earlier today. I asked “I wonder how many high schools teach Calc AB to students who have not had math previously?” This is in response to discussion of AP CS students struggling when APCS was their first CS course.

This was called “troll bait” because “We teach intro compsci at most colleges to students with no prior experience” While it is true that intro to computer Science it taught with no prior experience I question if that is really a good thing.  It’s a necessity in many cases of course. But should it be? I think not. I really believe that most students would benefit from at least a one semester CS course before taking AP CS A. There is just too much material for most HS students to take cold.

Computer Science is moving very quickly and change is constant. When I took my first computer science course (in college) over 40 years ago high school CS was basically none existent. In fact college CS was still fairly rare. The things I learned in my first college course were probably very close to what I teach in a first semester HS CS course today. And that course is no where near what the current AP CS A course is.

If you look at the ACM/IEEE CS 2013 recommendations you will find that a university computer science program should offer far more than a student could possibly take in four years. Perhaps even in five. Logically, well in my opinion at least, university programs would be much better off if CS students came with some prior background in  CS. My critic on Facebook pointed out that they don’t accept students in the university without prior math background. True!

I doubt anyone would suggest making CS a requirement for admission to computer science in college or to college itself. Computer Science in high school is still far too rare for that. Making prior CS a requirement for admission to a university CS program would be far to restrictive today. Will it always be the case? That’s hard to say even with a lot of efforts going on to expand CS to all students.

As much as an Advanced Placement course is supposed to be similar to a college level course the fact remains that we don’t teach it exactly the same. We can’t because students are not ready for that. We may cover the same material and we do have high performance expectations. But we take a lot more time teaching it for one thing. And we probably coach a lot more. Requiring a prior course is a reasonable thing. After all we do have pre requisites for other AP courses don’t we?