Computer Science Tools Review

9ipArbkiEReviewing the live adaptation of Ghost in the Shell has put me in the mood to present some other reviews and so without further adieu I will be presenting my Top Ten for Computer Science Teaching Tools. These are presented in no particular order or ranking and I would be very happy to have someone add to the list in the comments section below if I miss one of your favorite tools or programs.

greenfootOne of my personal favorite programming tools will always be the Educational Java IDE Greenfoot.  I believe that this is one of the most comprehensive and useful combinations of curriculum and tools available for teaching Java and the basic concepts of Object Oriented Programming.  Notice I added both of those qualifiers.  There are certainly more effective programming interfaces and some tools that make learning the basics of programming simpler but to combine both of those things into a single application, Greenfoot can not be beaten.  The program creator, Michael Kölling, is first and foremost, an educator rather than simply a programmer, and this is apparent in the way that he designed the Greenfoot application to bring out the basic tenets of programming, and specifically Object Oriented design while hiding much of the complicated boiler-plate code that students will get to soon enough in Eclipse or Net Beans.  Rather than begin in a procedural mode teaching loops and variables and other constructs and then bringing class into it  (There I go…bringing class into it) Michael starts off with proper class design principles from the beginning and teaches constructs along with OOP design.  The best time to build a mind-set, in this case, for Object Oriented Programming, is in the beginning and that is exactly what Greenfoot does.

arduinoMy next favorite tool is the combination programming environment and hardware that make up the Arduino system. In order to get students interested in programming and code creation we need to get them engaged. Nothing creates interest and focuses attention better than creating something that works. Lights flash. servos turn. robots move. All of these things tie the attention of the young programmer onto the task in a manner that does not seem at all tedious or difficult. With the Arduino programming environment concepts like functions, methods, variables, loops, and program logic can be taught in bite-sized portions that don’t overwhelm the young programmer. Also Arduino provides an avenue to teach fundamentals of engineering, circuit design, and making in general. Considering the price of the hardware, this is an excellent investment for a part of your classroom budget each year.

With that, the first edition of my Top Ten Computer Science Teaching Tools comes to a close.  I will continue the list tomorrow and try to finish by the end of the week.  If you have suggestions or comments, please list them below.  Also, “likes” are appreciated.

Thanks.

TCEA 2016: Here We Go Again

tcea2016Here I come again now Babaaayy!  I never knew what In a gad da davita meant and I was afraid to Google it just in case it was something bad and I had to quit listening to Iron Butterfly.  Anyhow, TCEA is already posting the web site for TCEA2016.  I had an outstanding time at the expo this year, and with any luck we will be taking another group in February ’16.

My 2015 presentation was a great success.  A member of TCCA was in the audience and he invited me to apply to present at the TCCA conference in October.  With any luck I will be introducing those folks to the wonder of Greenfoot next year.  The TCEA 2016 presentation window should also be opening pretty soon.  This year I am proposing two half day presentations: Modding Minecraft Made Easy and Getting Green Again: Greenfoot Java. It would be nice to have two days of presenting for next year.

Why do I care about educational technology and Computer Science you may ask. I see the opportunities that kids today have and I think back to my own educational experience. The year I graduated college, our university put in the first computer lab for general student use. I took programming with Basic and was hooked. I suspect my life would have been quite different if the current level of technology had been available to me then.  Regardless, it is important that we do everything we can to encourage student interest in technology and development in particular. Not everyone has the knack for programming but for those who do, it is better that they start early. I look forward each year to introducing students to the satisfaction that comes with seeing something they build run and work as expected.

If you are a teacher, find a reason to introduce coding into your curriculum. HourOfCode.org is a great place to start.  If you are a student, get involved, learn,  buy in.  If you are an administrator, find a teacher that is willing to try this and support them.  Give them the latitude to work technology into the curriculum.  If you are a parent, give your kids the opportunity to learn something besides facebook and twitter and instagram.  Encourage them to learn, to explore, and grow on their own.  Sign them up for a camp, let them join a club,  buy them a computer and get involved.  You never know…You might learn something as well.

Top 10 Tech Skills Every Teacher Needs – Day 3

Tech560And now for our final installment of technology tools that every teacher needs.  Remember that these skills are in no particular order and if I missed your favorite, please comment and let me know so I can add it to my own list.

7.  Teachers should be App Smashers.  App smashing is defined as combing two or more apps or programs in inventive and useful ways.  I listed my own personal favorite several posts ago when I highlighted the combination of Greenfoot java IDE and the GIMP image manipulation program.  In short, teachers must be inventive and think quickly.  Mental agility can overcome budget constraints, administration conflicts, and just about any obstacle a teacher may face.  This is truly one of the most important qualities any teacher can possess.  It may or may not be technical but it IS important.  “Think outside the box” is a cliché but it is still meaningful.

8.  Teachers need to be cross-platform compatible.  A teacher must not be tied to any particular operating system, program, or other piece of technology.  It is OK to have favorites and GOTO pieces, but a teacher should be able to build lessons on a PC, in a Chrome Book, on a Mac, or even a Linux system.  You never know what will work.  If you can adapt and put different systems together and make them work then you will be ready when your favorite things decide to take the day off and not tell you.

9.  And finally, a teacher must never forget that the ultimate goal is to educate students.  I know I said top 10, but hey…it’s my blog, not yours.  Ten does not divide into 3 evenly and I am not dragging this out another day.  This might be the most important (if I were putting them in order).  Too many teachers get caught up in the process, either of their own making, or a process that is imposed upon them from above.  A teacher must never forget that the purpose for all the toys and tech and turmoil is the student.  A teacher must do whatever that particular student needs done in order to learn.  We must be adaptable and open to different learning styles because no two kids are created equal (The founding fathers never intended that idea to be taken out of context anyhow.  People are only equal in the church house and the court house).  All the technology in the world won’t replace a single teacher that cares about students and is genuinely interested in their development.  Remember, they don’t care what you know until they know you care.

And with that thought in mind, gentle reader, I bid you goodnight.

App Smashing: Working with Combinations

Thus far I have been concerned with reporting on programs for teachers and students to use in the education process.  Now I gimpfootam going to mention a pair of programs that work together with an energy much greater than the sum of their parts.  The hardest part of game development is creating the assets to use in the game.  The code syntax is fairly easy to master but creating the sprites or images to be used in the game as well as backgrounds and character design is tough.  This package provides all the tools you need to completely design and build games that can be shared online or compiled into a desktop application.  I’m talking Greenfoot and GIMP.  Introducing GIMPFOOT.  Both of these applications are portable.  It is possible to create a game or simulation from start to finish with these applications installed on a flash drive.  This is very convenient when one is unable to install applications on a PC or when using a public computer that is incapable of having software added.

Both of these applications are open source.  They may be downloaded and distributed for free.  This is a huge plus when starting up a development class because it is possible to put professional quality tools in the hands of students at no charge.  In fact, given the cost of a flash drive, it is possible to provide students with multiple copies of the software, one for school and one to take home.  The programs will run on just about any flavor of Windows and it is possible to build flash drives for Linux and Mac as well.  All in all, this is a great way to get kids started developing for almost no investment.

This is not a perfect solution.  While Greenfoot is easy and intuitive to learn, GIMP requires a bit of practice.  It will, given appropriate training and effort, rival Photoshop in its capabilities.  There are plenty of tutorials and training material available on the Internet to bring anyone, teacher or student, up to speed.  Greenfoot may be downloaded from http://www.greenfoot.org  While GIMP is available in portable format from Major Geeks.  Both may be downloaded and install on any flashdrive and both take up no more than about 400 M of space.  They will seem a bit slow to run the first time they are activated from the flash drive but will speed up considerably after that.

Getting Your Feet Green in Java

Tonight’s entry into the Teacher Tech. Tools series is also a personal cause of mine.  Greenfoot is an entry-level Java IDE (integrated greenfootdevelopment environment) that is tailor-made for education.  This software package allows a complete beginner to begin creating interesting and engaging games and simulations almost from the moment lessons are begun.  Given the rapid growth of the IT and Software Development industries, anything you can do to stimulate interest in computer programming is going to be beneficial to your students.  Greenfoot teaches legitimate Java syntax and “real world” object oriented programming theory while hiding the more complex operations “under the hood” so to speak.

I teach basic programming to high school sophomores at for a rural school district in North Texas and I can vouch for the interest and engagement value this software and it’s curriculum provide. We began class with Michael Kölling’s book “Introduction to Java Programming with Greenfoot” and by the end of the first lesson, the class was hooked.  We have since moved on to Eclipse and more advanced topics but my class constantly requests that we go back and visit one of the Greenfoot projects.  As I am presenting a coding boot-camp at the TCEA state conference in Austin, TX (also over Greenfoot) during the first week of February, my programming class will be running a Greeps competition in my absence.  Those who are initiated into the Greenfoot world will understand and rest assured, my kids are ecstatic at the prospect.

“But I don’t know anything about Java, or coding, or computers, or greeps for that matter.  I DON’T teach computers, How can I possibly make use of this tool?”  Believe me, teaching with this program is every bit as easy as learning with it.  There is a wonderful community of users, most of whom are also educators, who are happy to help get a newbie up and running.  Lessons and projects abound on the forum and Michael Kölling has an excellent text book available to provide inspiration and support.  His blog site, The Joy of Code, is a step-by-step tutorial on how to teach java, object oriented programming, and introductory computer science to anyone at almost any age.  This curriculum would be useful as it is in a middle school or high school, and, with minor modification, could be easily ported to an even younger group.

I have tried other “educational” software development products (Scratch, Alice, Lego NXT) and all have merit.  They do NOT, however, as a rule teach legitimate code technique and syntax.  Most are a “drag and drop” interface that has very little connection with the real world.  Greenfoot teaches Java.  It explains the concepts of class, objects, inheritance, constructors, methods, and other ideas that the neophyte programmer will still be using long after college and landing a job in the field.

Each year a programming event called The Hour of Code occurs in schools and other educational venues around the world. The idea is to get young people interested in technology and particularly, software development.  First, visit the link above and find out why you need to be teaching an hour of code, and then check out the Greenfoot link to see if it is not the perfect tool for teaching programming.  When the lesson is over, you might hear something from your class that you are not used to…applause.

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.