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 2017

arduinoOnce again I am off to Austin, TX (not my favorite place to travel to but I seem to go there a lot) to present my way of teaching technology to the attendees of the Texas Computer Educator’s Association.  I have done this for the past 5 years and it just keeps getting better each year.  I am presenting on the topic of using incorporating the Arduino microprocessor and the Internet of Things into the curriculum of a technology classroom at the secondary level.  I have been using Arduino for also about five years and find it to be an incredible tool for creating engagement with the students.  Everyone likes to be in control and make things happen.  Something about typing code into a screen and seeing a motor turn or watching an LED blink on and off in response to a sensor is satisfying beyond what it should be.  Compared to Raspberry Pi (which I also use) or other small computers/processors, the Arduino is inexpensive and easy to incorporate into all sorts of projects.  The basic theories of electronics (Ohm’s Law, Kirchhoff’s Law, etc) are easy to teach and building circuits that actually do something really helps focus the student’s attention on the task at hand.  In short, it is an excellent way to spend some grant money if you happen to have it available.

So off I go.  Wish me luck.  I will do my best to blog while I am away but no promises.  It is, after all, a very busy time.  I hope to see you there and I REALLY hope that you can drop by at 8:00 am on Monday and sit in for my demonstration.  I think you will find it interesting and useful – at least, that is my goal.  Safe journey if you are traveling this week.

TCEA 2017 is a GO!!

I just got my acceptance letter to present a premiere session at TCEA 2017 in Austin, TX tbusyhis year.  I will be presenting Arduino and the Internet of Things on Monday, Feb. 6 at 8:00 am.  You will need a premiere admission to attend as this is a half-day “hands-on” session.  I would LOVE to see someone there who is also a blog reader.  Speaking of which, I know I have been remiss in posting but this year has been incredibly busy.  I have nine (NINE!!) preps this year.  Seven classes, two of which run two classes concurrently.  Needless to say I am very overloaded.  Also, my fledgling music career is moving forward.  Fifth Sparrow completed their summer tour of West Texas and also played the Whitesboro Peanut Festival.  So before you chide me for inattentiveness, please be aware that I am not just being lazy.

Weather or Not….

wundergroundI have an unusual spin on technology in the classroom tonight.  This is something that might not be expected in a Computer Science class and yet it is one of the most useful tools I can think of.  I am talking about an automated weather station like those available at Accurite.com  While weather stations provide an education experience and foster interest in technology and science in general, most CTE educators would be hard pressed to justify having one in the computer science room.  That is a shame.

Weather stations, aside from providing an interesting conversation piece, are an excellent source of retrievable, sortable, and useful data.  Weather stations, for the most part, will connect to a PC and provide a great way to learn about collating and manipulating scientific data  and making predictions.  This is one of the most important uses of computer technology.  Computers are wonderful tools for statistics.  Weather data is tailor made for this kind of work.  Weather data is one of the best sources of data for practice with data bases, SQL language, and spreadsheet construction and analysis.  At a cost of $150, the data generated and lesson possibilities make a weather station a great investment.  For the STEM instructors among us, building an Arduino based weather station to upload data to a classroom website or service is a great project.

A few caveats are in order.  Make sure that your weather station will store and upload data.  It is also a plus if the station can upload to a service like http://www.wunderground.com but it definitely needs to be able to store data and upload it to a spreadsheet or some other data container.  The Accurite 1036 is a great example.  If a weather station is outside of your classroom budget, many sites like wunderground and weather.com offer a data stream that can be accessed via the Internet.  Whatever the source, weather data can make teaching data analysis and storage much easier on the instructor and must more interesting for the student.

Introduzione Arduino

Saluti amici.  Benvenuti nel mondo della tecnologia.  Tonight TechnologyNEducation is featuring a software/hardware combination that is sure to be a hit in any Physics, Engineering, or Technology classroom; the Arduino microprocessor and its accompanying IDE software.  Arduino is one of the best Italian exports since the Ferrari.  With a few electronic components and a little imagination you can literally do ANYTHING.  Built robots, weather stations, web servers, plant waterers, garage door openers.  spider dresphotoses with legs that move like the real thing when people get close to the wearer…ANYTHING.

The Arduino consists of an ATmega328 processor embedded into a printed circuit board with various inputs and outputs.  One has access to digital and analog inputs and outputs, PWM (pulse with modulation), an on-board oscillator, and many other features to make prototyping your next great invention a snap.  One communicates with the Arduino from a PC via a standard USB connection and the unit will run off USB power or by way of a separate power jack.  It uses a processor platform called Wiring which is essentially a C/C++ library modified and geared to input/output.  In order to have a viable Arduino program (or sketch as they are called) one must simply create two functions; a setup() function in which any instantiation or initialization can occur, and a loop() function that, as it’s name indicates, continue to operate once the program in initiated.

As I am a serious proponent of teaching code in the classroom at every opportunity, this device immediately intrigued me.   Since I have begun using it in my “Concepts of Engineering” classroom, I have not ceased to find new applications for lessons.  Outside of the very useful coding and programming applications, Arduino teaches problem solving via algorithims, basic engineering skills, electronics and circuit design, and it is a wonderful introduction to the Internet of Things.  If you don’t already know what the IoT is, you need to stop reading this and head over to Google.  It is the fastest growing facet of the Internet today.  The Arduino and its supporting cast of breadboards, resistors, capicitors, and switches is a great way to get engagement and interest in topics that would ordinarily receive a groan of dismay when announced.  The product is fairly inexpensive and requires no great training commitment on the part of the instructor.  Besides…They are FUN!

An Intriguing Project…

I recently received a second hand Dell all in one PC that refused to boot.  After a cursory examination of the motherboard I discovered that nearly all of the capacitors were either greatly swollen or already burst.  Without a great deal of solder surgery this system will never boot again.  I currently have a re-cap project in the works and the value of the system is such that it is not really worth the work required to replace all the different caps on this board.  While I was carrying the corpse to the dumpster a thought struck.  Here I have a perfectly functional PC case/monitor combo with no motherboard.  On the other hand, I have a perfectly serviceable Raspberry Pi and I have no clue what to do with it.  Why not combine the two into a (not very) portable PC monitor combo and break out the Pi’s various inputs and outputs and run them through the various ports on the computer case.

Step 1:  I started with a defunct Dell 745 OptiPlex “All in One”

dell745

Step 2:  I removed the unit from the monitor and completely emptied the case.  Motherboard, fans, hard drive, and all other hardware connected with the original system was removed.

0104150036

Step 3:  I used one of the original motherboard risers to mount a Raspberry Pi (running Raspian) in the center of the case.  It is currently booting from an 8 GB SD card.  I investigated the possibility of actually using the SATA disk drive that came with the original system but discovered that there is no SATA controller available on the Pi and no way to connect one to boot.  I will have to continue to boot from the SD card and then mount a USB hard drive for file storage, etc.

0104150037

This is as far as I have gotten tonight.  I have a 7 port powered USB hub that I will remove from its case and wire into a circuit with the existing power switch.  I can connect the hub to the existing ports in the back and front of the case to make them operational again.  I have also purchased an HDMI to VGA converter that I can attach to the original VGA port on the back of the case and plug the HDMI into the PI.  I know I could just use the HDMI straight out of the case and connect to an HDMI monitor but the built-in monitor only has a VGA input so it would violate the build idea of keeping everything as original as possible.  Instead of a built-in power supply, this case uses an adapter transformer similar to a laptop charger cable.  It uses an eight port plug to connect to the case.  I can build a Molex connector and break out the power to run the Pi, the USB hub, and any other components we may need.  I can also run a network cable from the Pi to the wired network connection port on the back of the case to make it operational.  Now I need to figure out how to get a “breakout” cable to allow the various input/output ports on the Pi to be used without opening the case.  As the build progresses I will update the blog.  Meanwhile, school starts back up on Monday and our robotics contest is Jan. 24th.  Wish us luck.

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.