Thursday, May 21, 2015

Computer Science and ?

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

Expanding Computing Education–Are We Forgetting Rural Schools

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

Interesting Links 18 May 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.

If you go to this link:   and click on the YouTube tab, you will see a list of links to Alice 3 tutorial videos.

I could not help myself. IEmbedded image permalink 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 @ch9

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. 

Embedded image permalink

Sunday, May 17, 2015

Coming soon – 2015 Computer Science Teachers Association’s annual conference

DFS

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

Code, Compile, Test, Repeat

I came across this image on Facebook recently and it got me thinking. afraid to compile 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

Interesting Links 11 May 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.

Embedded image permalink

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!

Learning takes time, hype doesn't is a critical (and fair) look at summer and after school programs in in computing written by Mike @Zamansky Some of them are more hype than learning.

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?

I continue to enjoy and learn from CS Teaching Tips. I follow them on Facebook and Twitter. You can also see tips in a box on the right side of my blog if you are reading it on a web browser.

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. 

The Invent To Learn Guide to Block Programming is a good review by @garystager. He talks about many, though not all, of the examples at my post on Programming With Blocks

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.

Embedded image permalink

Wednesday, May 06, 2015

Red Green–A different Hello World

imageHello 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!