Coders Needed: Uncle Bill Wants YOU!

education kidAccording to Microsoft co-founder Bill Gates…”the world of programming probably has to evolve if we’re going to accomplish some grander goals such as large, complex systems spanning entire industries. There are more programmers and they’re better than they were 10 or 20 years ago, but there is no objective metric by which someone could say the state of the art has significantly improved. Things have changed, Gates said, but there’s still serious work to do on knowledge representation and logic representation, among other things.”

Programmers are the architects and engineers of the digital age.  It is a commonly held belief that anyone in the so-called digital generation (in other words, anyone under 35) is comfortable using technology.  This could not be further from the truth.  Many members of the computer generation are as uncomfortable using a computer as most seniors.  (Many seniors, on the other hand, are very comfortable using technology.)  I, as a computer educator, see a broad spectrum of skill levels in today’s youth.  I teach Java and C coding to high school kids as well a basic hardware course.  Many of the kids I see are growing up digitally illiterate.  They are technology posers.  Most can manage a Facebook post or put pictures on Insta-gram but that is the limit of their skill.  They can’t build things.  What keeps the digital world turning is the production of new content.  New code, new information, or fresh material must be produced constantly.  New frameworks must be built.  New services must be discovered and provided.  Today’s young people are not being adequately prepared for their role in the rising “Information Economy.”

We need to place an emphasis on coding and code creation.  We need to teach algorithmic thinking as a method for problem solving.  We need to modify our system of education to meet the needs of a digital society.  If we fail to do so then we will find ourselves at the back of the social and economic pack, so to speak.  The first-world economic model is leaning more and more on information and information gathering as a means of generating wealth.  We predict market trends and society’s needs based on data gathered from the world around us.  Data mining and targeted marketing are the best methods for building a customer base.  If we don’t have people to build and maintain the databases, gather and collate the data, and format the reports, then the digital sales machine grinds to a halt.

Talented programmers are a valuable commodity.  As technology integrates itself more and more into everyday life, people who can create it will become even more valuable.  As things change, we need people who can adapt to change.  The world, and particularly the economy,  changes too quickly for reaction.  We must be able to predict and be preemptive in order to be successful.

“We have no idea, now, of who or what the inhabitants of our future might be. In that sense, we have no future. Not in the sense that our grandparents had a future, or thought they did. Fully imagined cultural futures were the luxury of another day, one in which ‘now’ was of some greater duration. For us, of course, things can change so abruptly, so violently, so profoundly, that futures like our grandparents’ have insufficient ‘now’ to stand on. We have no future because our present is too volatile. … We have only risk management. The spinning of the given moment’s scenarios. Pattern recognition”
William Gibson, Pattern Recognition    

Pattern recognition, on a global scale, in only possible through data gathering and manipulation on a global scale.  This is only possible through technology.  To manipulate data and technology, we need programmers.  We need to produce them or we will have to hire them from some other place and send our money there.

…and the World Knows the Turtle

How’s that for cryptic. I am evaluating a video tutorial created by Michael Kölling called the “Joy of Coding”.  He uses the IDE (integrated development environment) Greenfoot to teach Java coding with emphasis on game design and Object Oriented Coding techniques aimed at teenagers.  I plan to incorporate some of his material in my own class during the 2014 – 15 semester.  Every time he says, “The World knows the turtle” it just tickles me to death (or at least makes me grin – not sure why).  You really need to click on the link and hear it for yourself.  He has a rather strong German accent and it just sounds cool, like some Teutonic philosopher expounding on the meaning of life.  Also it might not hurt you to click on the link and follow along.  Everyone needs to be able to at least understand a bit of code, and the principles on which it is written.

Meanwhile, the other bits and pieces are coming together.  This blog is intended to be a journal of my struggle to get Computer Science off the ground in Whitesboro, TX.  As it stands now I will be able to offer Concepts of Information Technology, Principles of Engineering and Technology, Basic Coding in Java, Computer Repair, and Robotics next year as well as having a conference period and one period a day helping the tech. staff.  The Java class will utilize Greenfoot graduating to BlueJ at mid-term.  Robotics will use the same NXT we have been using.  The only change is that I will not be using the NXT language but coding strictly in C.  The Engineering class will emphasize electronic engineering and will use the open source Arduino platform.  I have about 15 old computers for the Principles of IT class to work on.  It should be a busy year.  This summer is going to be equally busy setting up the room and getting things ready.

I am flying blind basically.  I have the technical expertise to teach these materials but I am not so sure about the logistics.  I have never been good at evaluating budget constraints and planning from that perspective.  This plea is directed at anyone who has ever set up a computer science program in a high school before.  How did you do it and how much did it cost?  Where can I get grants?  How deep did you take them?  How did you handle evaluations and exams?  These are the questions I need to answer.  The Internet is being much less help than I expected.  I thought I would be able to hit Google for an afternoon and find everything ready built.  This has NOT been the case.  There are lots of people trying to sell things but very little about people trying to build something useful.

Oh well…its late and I need to catch a nap.  Busy day tomorrow.

When ‘a you blink LEDs and a’ you write code in C that’s Arduino (Hey, it’s all I could come up with)

arduinoI plan to emphasize electronics engineering for the Intro. to Engineering and Technology class. Yes I know I have to teach mechanics, heat, and motion but I am really going to push electrical circuit design. To facilitate that I plan to use the Arduino microprocessor and it’s attendant programming environment. I can purchase the Arduino starter kits from Amazon for about $50 per group of two students. One can code and one can build and then swap out the next project. Does anyone out there use this equipment? I have found several tutorials that will port over into consecutive lessons but I am wondering if there is a packaged curriculum available. Any input would be appreciated.

So far I have Arduino for the Intro. to Engineering and Tech. class.  NXT Legos for robotics, Greenfoot for Basic Programming and BlueJ for Advanced Programming.  I hope these kids appreciate all this research I am doing.  At least I hope they find the material interesting.  My goal is to make sure that whatever class and whatever technology we are using, it involves writing some type of code.  We will be doing some batch files in the A+ class and even some HTML in the Introduction to Computer Science class.  Any other suggestions would be appreciated.

“Money….Its a gas; I’m allright Jack, keep yer hands off’a my stack”

Finally we have the schedule for next year’s computer science department in order. Now we just need to find money. As annoying as it is to contend with, education is expensive. I am doing all within my power to keep the cost down. We are doing Greenfoot and BlueJ and all things Java so the cost of programming software is nil. We are using Arduino in the engineering and technology principles class and so, outside of the hardware costs, the expense should be minimal. I have dozens of old computers in my garage from twenty years of people asking me to move their data to their new system and then telling me to keep the old one. I even have a fairly new rack and some rack mounted components that we can use in the Maintenance A+ course. I am assuming that we can get away with 1 toolkit per two students and a classroom set of cable testers or crimpers. The Arduino comes with breadboard and jumpers and components are cheap but we will need multimeters and basic tools. WHERE DOES A PERSON START TO FIGURE THIS BUDGET THING OUT!?!?

I would greatly appreciate any input from anyone who has initiated a high school computer science program. We are offering basic programming using Greenfoot and BlueJ. We offer an A+ certification as well as Principles of Engineering and Technology. We are planning on a minimum of 10 and a maximum of 15 kids in each class. I know the materials I want to include but I also know that I don’t know everything I will need. To all CS and Tech. Educators, please help. Respond via comments and I will send you more contact info. Any input will help. Thanks.

Well….Lets Just Jump Right In With Both Feet

GreenfootContacted our local Pearson rep yesterday in order to request an evaluation copy of the Introduction to Programming with Greenfoot Object-Oriented Programming in Java with Games and Simulations textbook. Disappointingly enough I have heard no word from them. I have received several good responses on the Greenfoot IDE and system of teaching java and I hope that the lack of action on the part of our sales rep is does not cause me to have to make an adjustment in my plans. Oddly enough, as a private individual buying one book at a time, I can get them $20 cheaper on Amazon than the advertised price at Pearson.

On the other hand, from what I have been able to glean, the methodology that the Greenfoot system uses is sound. It is a modified BlueJ IDE (if you know Java, you’ll know what that is) that, aside from being color coordinated, allows the teaching of not only Java but the concepts of Object Oriented Programming as well. In a nut shell you teach people to write small, self-contained units of code that solve small simple problems and then put them together like Legos to solve bigger problems. It’s all about code reuse and not reinventing the wheel. For example, if I have a requirement for a program that connects to a database and stores street address and contact information and exports it I can, instead of trying to write one large block of spaghetti code to do it all, find a routine that connects to databases, a chunk of code that exports data from a database, a class or two to move the information from the GUI to the database, and then put all those pieces together in a way that reflects the way things are organized in the real world. This methodology is currently in vogue in the programming industry and so it seems a good idea to teach students not only programming concepts like variables and loops and things that can be learned in any programming language, but also things like a useful syntax and the foundations of a relevant language. Besides…all my kids wanna mod Minecraft. If you can learn Java you can learn the “C” family of languages. If you can master both of those you can work anywhere.

On the other hand, I need to find a good solid curriculum to prepare high school students to take the A+ exam. Any suggestions would be greatly appreciated. I have a very good background in desktop support (over 20 years in the business with experience in Mac, Linux, and all flavors of Windows from 3.1 up) and I know, generally, what will be on the test, but I might need a starting point for teaching all this to kiddos. Suggestions for self-contained tool kits would not be amiss either. If you had to put together a toolkit for basic computer repair, what would you use? I am thinking a set of precision screw drivers and that’s about it. You don’t really do a lot of soldering, multimeters aren’t that necessary, and, outside of a static strap, I am not sure what hand tools to include.

Once again, it is time for bed. Tomorrow is another day (an easy one since it is a half day before spring break) so I am calling it a night. Any suggestions, contacts from Computer Science teachers, moral support, or grants to upgrade the technology I have available are greatly appreciated.