Friday, May 29, 2015
I understand that Microsoft and Google are talking about both short and long term solutions and I am cautiously optimistic that something will work out. The whole thing highlights a lot of problems with software though.
First off companies who compete do not have a lot of incentive to make life easier for each other so using tools from competing companies and expecting them to work well together can be risky. Many people pick a platform and limit themselves to that one company as much as possible. I admit that is one reason I stick with Microsoft products when I can. I prefer them to Apple or Google and they, Microsoft products, work well together. Other people prefer Apple or Google and I think it is great that they have to options.
This also highlights one of the risks of using proprietary products rather than open source products. If either Blogger or Windows Live Writer were open source other people could make fixes. This advantage of open source is often more theoretical than actual though. I could probably modify WLW to work with the new API if I had access to the source code. Millions of other users probably could not do the same thing because they don’t have the technical background. They would have to wait for someone who does have the background to make the fix and share it. That is not much different from waiting for a company to do the same thing.
Another issue is using free products. Free as in “free lunch.” Both Google’s Blogger and Microsoft’s Windows Live Writer are free to use. There is little incentive to spend money to fix problems. Arguably Google has more incentive here because they make some advertizing money for Blogger (I think). Microsoft really gets nothing but some good will from Windows Live Writer. It can be hard to justify spending lots of money on free products. As a user it is also hard to complain about something you didn’t pay for in the first place.
I’m thinking about the long term for my blog these days. Maybe I would be better off on a paid site. I don’t mind paying for good things that come with good support. I don’t expect people to give away valuable resources like software or services for free. People need to make a living and people deserved to be compensated for their work. If I want free software maybe I should just write it myself?
Monday, May 25, 2015
Memorial Day in the US today. We remember those who died in battle fighting for our country. A somber day in some ways. In other, it makes the unofficial start of summer, it is a bit of a celebration day. I’ll be spending the day with family. I’ll be remembering my father who fought in WW II but lived beyond it. On the upbeat side, I found some interesting things to share with you.
What should a K – 12 CS teacher know? by Garth Flint who updates his thinking on preparation to teach computer science. Visit his blog and see what he has to say. Let him know if you agree or disagree.
Applications for travel grants to the 2015 Grace Hopper Celebration of Women in Computing are now open! From Google “University students and industry professionals in the US and Canada who excel in computer science and are passionate about supporting women in tech are welcome to apply.”
Back in the day this would have been called a flatbed printer. We used to use similar devices with different types of pens. Water Color Bot is a flatbed plotter that uses water colors. Interesting idea for sure.
BBC reveals more details about its free MicroBit micro computer. I’m still both curious and skeptical. Not being in the UK I don’t expect to be able to get my hands on one. When they are out if anyone has one they don’t want you know who to send it to though. :-)
Cool Excel tricks I may fit some of these into my curriculum next year. Always more interesting things to do with spreadsheet software.
Free summer workshop on App Inventor for San Francisco Bay Area teachers: Plus a $1k stipend if you teach it next year!
Thursday, May 21, 2015
Several conversations lately have me thinking about combining computer science with other subjects in school. My thinking regularly comes back to that for a number of reasons. One is that it reflects the real world today. Computer science does not live in isolation but has become an important part of almost every area of work and study. Teaching it in isolation does students something of a disservice. A second major reason is that fitting computer science into an already packed curriculum is a challenge that many schools do not seem interested in taking on. And yet I believe that today’s students need to know something about computer science.
I think the most common reaction to this suggestion is similar to what my good friend Garth Flint said in a recent comment “in order to integrate programming into say a math course something in that math course has to go” This is a valid concern but the answer is that we need to use computer science to allow more learning in the other discipline in less time. Let me give an example. We teach graphs to young students by having them draw graphs by hand. That takes a lot of time. It’s also inaccurate. If we were to use a spreadsheet program to graph the data we could have them graph more data in more ways in less time. This way we could easily make up the time teaching them the spreadsheet based on reducing the time they spend drawing graphs by hand. We need to find more examples like that of course. Curriculum development and teacher training, an other issue wisely Garth pointed out, are other big issues.
My key thought here is not just teaching some CS with other subjects but changing the way we teach those other subjects in ways that make them more interactive, more interesting and (I hope) more educationally valuable. We can’t just add material but we have to improve the way we teach. This is not something computer science teachers can do alone. We need people with multi-domain expertise, probably in small teams, working together to design new ways of teaching. Computers and CS give us the chance to make learning more project based than they have been before. I believe that would make learning more interesting and effective. The key though is teaching in new ways and not old ways with new material cobbled on to the old.
This also requires a change in attitude. Far too many teachers are happy teaching the same thing the same way year after year. They learned that why so it must be the right way for everyone now and in the future. Things have to change in schools of education both for pre service teachers and professional development for in service teachers. Another hurtle to overcome. I think this is the only way we’ll really get CS into all schools though. I see it as win/win though. A win for CS education of course but perhaps even more importantly a win in using technology to improve the way we teach and to help students learn. At least that is my theory. What do you think?
Tuesday, May 19, 2015
One big announcement last week was College Board and Code.org announc[ing] an alliance to improve diversity in computer science. The plan is to partner with the 35 largest school districts in the US. Now to some 35 school districts may not sound like a lot but these districts are HUGE. New York City along has something like 490 high schools. The public schools (at all levels) serve 1.1 million students. So what will happen?
- The College Board and Code.org will identify and help schools to adopt two specific computer science courses at the high school level: the introductory Exploring Computer Science and AP Computer Science Principles.
- The College Board and Code.org will co-fund Code.org’s professional development of new computer science teachers, and recommend Code.org’s computer science pathway;
- The College Board and Code.org will encourage schools to offer the new PSAT™ 8/9 assessment as a way of identifying more students, particularly those from traditionally under-represented groups, for enrollment in these new courses.
Since these large school districts have a lot of minority students the hope is that this effort will bring in a lot more minority students to computer science. Investing in efforts to increase minority participation was one of the reasons given for dropping the AP CS AB course a few years ago. This partnership seems in-line with that promise. All those extra PSAT test takers as well as additional AP CS test takers will be good for the CollegeBoard I’m sure.
There are other efforts at broadening participation as well. The new Computer Science Principles AP course is one of those. Efforts to promote that include the Beauty and Joy of Computing from the University of California at Berkley and the Mobile CSP curriculum that uses Android devices and App Inventor.
The Exploring Computer Science program, developed originally for the LA School District, is also widely used and growing. Not tied in with AP CS Principals there is also Expanding Computing Education Pathways (ECEP) Alliance, an NSF Broadening Participation in Computing Alliance. And there are many more.
It all sounds so great. Why am I still worried? I know many of the people behind most of these programs and they are great people. They know their stuff and they know how to teach. But, and there always seem to be a but, I’m still worried.
Two things worry me. One is lack of teacher preparation and the other is complacency. Let me start with the second one. Over that last several years a healthy number of states have passed legislation allowing computer science to count for graduation credits. Sounds great. But there are misunderstandings about those laws.
I have read several reports that say all these states require computer science for graduation. That is not the case. Allowing a course to count for graduation is far from being the same thing as requiring them for graduation. Many schools are still not offering computer science courses that could count for graduation. We’re a long way from requiring CS for graduation. Or even from requiring that schools offer the option. This is not a time to rest on our laurels. There is still a long way to go.
Mike Zamansky covers some of the professional development issues or perhaps I should say assumptions on his blog at What's Expedient vs what's good - curriculum vs teachers. Many people seem to think that training computer science teachers is easy or fast or both. It is neither. Worse still it must be continuous because the technology is constantly changing. Snap! is not the same as FORTRAN. PROCESSING is not the same as COBOL. Programming for a mobile device is not the same as programming a batch job in a mainframe.
I think that it is great that Code.Org is doing teacher training. I am sure they are doing a great job. I believe they plan for some on-going support which is absolutely necessary. What are we going to do for schools and students not in the top 35 largest school districts?
I live in New Hampshire and we have a lot of rural, often poor, school districts. Those kids need more options as much as they city kids do. And don’t get me started about schools on native American reservations who lack resources for the bare bones of education at times. Technology and computer science open the potential for
jobs careers that they don’t even know about.
The task ahead is still large and victory (how ever we might define it) is a long way away. Please though can we not forget the small districts and the rural schools?
Monday, May 18, 2015
Last week I made my travel arrangements for the Annual CSTA Conference. Less than two months away and I’m really looking forward to it. I’ll also be at ISTE this June. Not as much CS stuff there but a lot of edtech stuff that I find interesting as well as a lot of great educators to talk to. But big as ISTE is, the CSTA conference is the one I would go to if I could only go to one conference a year. Hope to see a lot of people there.
http://Code.org targets high school computer science via
@usatoday Great news for the districts involved. I have some thoughts on what about the rest of us to share soon. In the mean time you will want to read Mike Zamansky’s blog post - What's Expedient vs what's good - curriculum vs teachers
The new partnership will encourage high schools in 35 of the nation's largest districts, including New York City, Chicago and Los Angeles, to offer Code.org's computer science course this fall.
Code.org will provide curriculum, tools, training and funding to school districts that qualify, said Code.org CEO and co-founder Hadi Partovi.
Dawn DuPriest @DuPriestMath had a couple of good posts on teaching loops last week.
I could not help myself. I backed another educational Kickstarter last week. The banana piano was just the beginning. Makey Makey GO, the portable invention kit, is here! How I’ll use it I have no idea. It may go to my wife for use in the MakerSpace in her middle school program.
Microsoft Band SDK Release and Band Studio Introduction (Channel 9) via
A Speech Library Helper for Cortana – may make for some interesting projects.
9 Anti-Patterns Every Programmer Should Be Aware Of – what do you think of these?
Amazing how fast memory is getting bigger on the inside without getting bigger in the outside.
Sunday, May 17, 2015
With the Computer Science Teachers Association’s annual conference coming up in July there are a few things we thought you should know now that we’ve sprung into spring and we’re less than two months away:
– Several workshops are at, or nearing capacity
– There will be NO onsite registration for workshops, so if you are interested you must sign up online in advance
– Housing reservations close on: June 17
– The online registration deadline is drawing near: June 26
– We will be providing workshop and conference certificates for CEU’s (check with your state board for regulations/requirements)
The bottom line is, we don’t want you to put off registering any longer. This year is sure to be amazingly, wonderful, and memorable. Please come join us at DFW Lakes Executive Conference Center in Grapevine, Texas, July 12-14.http://www.cstaconference.org
Tuesday, May 12, 2015
I came across this image on Facebook recently and it got me thinking. My first old guy “get off my lawn” thought was that when I started coding one was lucky if they had a chance to compile more than once a day. But of course timesharing and interactive coding and development came soon after and we started compiling all the time. Today’s developers can pretty much compile anytime they want even if some systems are put together and built less frequently.
Back in the day a simple typo could result in hundreds of errors and it it was a tedious and often difficult task to determine which errors were real and which ones would be fixed by correcting a typo. Today’s IDEs are a big help in this area and warn of all sorts of errors from uninitialized variables to “Possible mistaken empty statement[s].” Syntax errors are easier to spot and generally development is a lot easier than it was in the punch card and paper tape era.
Students, and even more advanced developers, can still get into trouble by not letting the compiler (or interpreter) do what it does early and often though. What I see students do is to try and write the whole program at one sitting before trying things out. At this point it can become very difficult, especially for beginners, to determine where in the code a logic error may be found.
I encourage students to break a problem down into simple steps and test as they go along. I try to model this in my demonstrations with sample runs so that students can see partial results, find errors or missing steps, and then move on to making the program handle what ever is next.
For some students I think a problem is that their programs/problems are too small. By that I mean they can (or think they can) get their heads around it and complete it in a single step. They think if it as a simple paragraph writing assignment. In fact most are at least more akin to a 3 to 5 paragraph paper. That requires a bit more thought, a bit more organization, and even a bit more editing. A larger project such as a semester or year end project is more like a research paper. A longer paper is not (usually) written in one go. It usually starts with an outline that plans out the steps and organization of the paper. A larger program is much the same. Development works better if there is an outline – perhaps using calls to method stubs with descriptive names.
Once outlined a program can be filled in and the individual methods tested and refined (or at least debugged) before moving on to the next one. Students don’t always think that way though. It’s something we’ll talk about before they start their semester end projects in the near future though. I hope it sticks.
Monday, May 11, 2015
Last week was special. Teacher Appreciation week at many schools. International Star Wars Day (May the Fourth). And of course the Advanced Placement Computer Science exam was taken by thousands of students around the US. I hear it was a hard one. Even having taught APCS in the past and been programming for decades I’m glad I don’t have to take it myself. Tests are scary.
Other than that I picked up some links and even backed a couple of Kickstarters.
I backed CHIP - The World's First Nine Dollar Computer for example. It has plenty of funding so it will happen. I’m not sure just how useful it will really be and I feel like I am jumping on a bandwagon of hype to some extent. But I want to see what it can do so I’m in.
I also backed Linkitz: Wearable, Code-able Toys for Girls This one is in the early stages and still needs a lot of money but I really like the ideas behind it. This one may be more useful in the long run than the $9 computer.
Linkitz is a new way for girls to explore technology and coding. It's a set of electronic components, or links, that snap together in different combinations to make unique, fun, wearable toys. With a set of links, girls can create and customize their own wearables!
High school students don’t use email like adults to. In fact they seldom use it at all. Once they get into the world of business that will change for many of them. Jeff Utecht asks Where do we teach email? I think that is a good question and we have to have an answer.
Computer industry companies are interested in doing more to support CS education. Microsoft started the TEALS program to put engineers in classrooms. Google is going a step in this direction as Google embeds engineers as professors This article suggests educators ask themselves questions about what and how they teach. I’m still thinking about this one.
A new product I read about this week was Bitsbox - Monthly Code Projects for Kids. It looks like they send, via subscription, information about various coding projects that students can then create online. Probably not a thing for in-school but maybe for home schoolers? Anyone out there have any experience with Bitsbox?
One recent tip was “Teach while loops before for loops so that for loops can be explained as a specific case of a while loop.“ I actually changed how I do things after reading this one a while back.
On the CSTA Blog recently -- Public-Private Partnerships in Computer Science Education A guest post by Lorilyn Owens, Director, Oracle Academy North America
Lastly an interesting quote from the late Steve Jobs.
Wednesday, May 06, 2015
Hello World is more or less the ubiquitous first program for most development environments. I hate it. It’s boring. It made a lot of sense in a command line environment but for a more graphical development especially with event driven programming it seems like a dull start.
The purpose of “Hello World” is really just to get students familiar with the development environment. One wants them to create a project, do something simple with it and run the resulting program. It’s about familiarity and early success as much as anything else.
For the last several years, when introducing Visual Basic we’ve been using a program I call Red Green. It consists of a pair of buttons – one labeled “Red” and the other labeled “Green.” Clicking on a button changes the background color of the form to the named color. The code is obviously, and deliberately, simple. A simple assignment statement is all it takes for each button. Once we do the first two buttons as a class I ask the students to copy the buttons and add other colors to the mix.
What I like about it is that I get to explain some basic things like how to maneuver around Visual Studio. They create a project (and I can make sure it is saved on the class’ network drive), they add a few objects and we get an early start talking about object properties. There are assignment statements but nothing more complicated that they have to understand. After this we can start with real programming concepts and move along. But students start with something fun that gives them a little taste of success.
Many students start to explore more options right away though. They load pictures into the buttons for example. Or play with other properties (fonts and foreground colors for example). Students learn that they can in fact learn on their own and that it is ok to do so. I want them to try things!
Tuesday, May 05, 2015
While looking for other things (you know how that goes) I found a series of Office Mixes that teach how to program using TouchDevelop. They are mixed in as part of what looks like a more involved (though still basic) course. You can find the complete set in the Mixes loaded by Rane Johnson of Microsoft Research. This is the list of Mixes that specifically address TouchDevelop features though. I hope you find them useful.
TouchDevelop Programming This mix introduces you to the power of TouchDevelop, a versatile programming environment where you can make games, programs, and mobile apps in a simplified fashion.
Programming with Parameters In this stint of programming exercises, learn how parameters can be used to make functions reusable.
Variables, Conditions, & Loops This lesson gives an introduction to variables, loops, and conditional statements. Practice implementing them with TouchDevelop
Function+Abstraction Learn more about functions and how they are used to improve efficiency, organization, and happiness of code. Practice in TouchDevelop
If you are interested in Turtle graphics (and who isn’t) I have an introduction to Turtle graphics in TouchDevelop as well. I hope to have more TouchDevelop Office Mixes in the near future.
Monday, May 04, 2015
Last week was school vacation week and I had a lot of plans. I threw them all away and decided to spend a couple of days getting over a nasty stomach bug. I think a lot of teachers get sick on school breaks. As one of my teacher friends pointed out at least I didn’t have to prepare plans for a substitute. And just between us I also got some extra relaxation reading in. As the week went on I started doing more and more and most of the links below were collected later in the week. I’m glad I found them.
Last week I mentioned Break Into Code, a Microsoft Imagine Cup competition using TouchDevelop. According to this blog post there are some additional resources available for people who want to help students get involved.
There is a thought provoking post at the Blog @ ACM Meet A.I. Joe It’s about the combination of artificial intelligence and weapons of war. Some serious technical and ethical questions. Questions well worth discussing with students.
Microsoft is sponsoring an opportunity for High School Computer Science Teachers: be a part of MIT’s
@cs50 with a CS50 for Educators BootCamp at their Redmond headquarters. Looks interesting. Wrong coast for me though. :-(
Rob Miles writes about using Windows 10 on Raspberry Pi Rob is always getting involved with the latest in hardware and software.
Whoah, Visual Studio Code for Mac and for Linux! A multiplatform code editor from Microsoft? That was a bit of a surprise. I can use regular Visual Studio at school and home but I may have to look at this for student use. More and more students are getting Macs these days.
FizzBuzz In Too Much Detail FizzBuzz is one of my favorite little projects but this post shows what happens when something is analyzed and refactored (perhaps) a bit too far. Worth the read.
1 retweet0 favorites
View Tweet activity
Friday, May 01, 2015
Over the last few months I have recorded a few Office Mixes for use in my C# class. I’ve also built up a nice collection of PowerPoint presentations which I have used and updated as I have presented to various sections of my Honors Programming class. I had intended to record mixes for the complete set of PowerPoints (about 15 in all) this past week but alas circumstances conspired to make that hard to do. It will probably have to wait until summer now unless I can sneak in some time to do them one by one.
I decided today to at least see what I had done so far and to see if there were other Mixes on C# that I could share and use. I found a couple – fewer than I expected. But here is the list so far. I intend to update it as a) I make more Mixes and b) I find more by other people.
Let me know if you use any of these and if you find them helpful or if you find errors in them. Thanks.
C# Mixes by Alfred Thompson
Simple Arithmetical Operations - A fast review of operators in C# followed by a number of simple Code Hunt Code Duels for practice.
A Brief Introduction to Operators in C# - What are the mathematical and relational operators in C# programming? This is a brief introduction.
If Statements and Boolean Expressions - A short (7 minutes or so) review of if statements and Boolean expressions followed by three Code Hunt code duels to try out how well you know the material.
For Loops - This is intended as a brief review of how a for loop works in C#. There are a few easy review questions at the end.
While Loops - This short review of while loops, with a start on loops in general, is intended as a review aid for students. There are several easy review questions at the end.
Working with Files in C# - A brief and simple explanation of opening, closing, reading, and writing to text files in C#. A few very simple quiz questions at the end.
Introduction to Classes and Objects - A ten minute or so introduction to creating classes in C#. A few review questions at the end to see if you were paying attention.
Dynamic Adding of Objects to a Windows Form Project - This short video introduces the dynamic creation and loading of an array of objects in a C# Windows Form. It includes placing the objects, create an event handler and adding the object to the form.