Published by drbrown on 22 Jan 2012

Spring 2012 – CSIT1110 Student Blogs

I am teaching two sections of CSIT1110 this semester. This will be the sixth semester in which I have asked my CSIT1110 students to maintain weekly blog entries detailing their experiences in class. I look forward to another interesting semester. Here are my student’s blog pages:

Published by drbrown on 08 Nov 2011

Physical Computing with the Arduino Microcontroller

Physical computing concerns computer systems that interact with the physical world. In a more limited sense, physical computing systems are cybernetic in nature, sensing and responding to the physical environment. It is through the skillful manipulation and translation of sensed inputs that physical computing systems can appear to exhibit intelligence in their physical responses.

The availability of inexpensive, easily programmable microcontrollers provide the perfect medium for exploring physical computation and are stepping stones toward ubiquitous computing.

At the 2011 Google I/O, Google announced their intention to work with Arduino to create an open-source development environment for creating Android peripherals. Arduino manufactures open-source microcontroller boards that can be easily attached to physical devices and programmed using an open-source programming language (also called Arduino).

In this post, I introduce the Arduino board family and show how quickly and easily they can be wired and programmed for physical computing. It should be noted that Arduino is simply one of many microcontroller boards currently available.

The Arduino family of boards come in various shapes, sizes and capabilities and currently includes the Uno, Duemilanove, Diecimila, Nuova Generazione, Extreme, USB, Serial, Mega, Mini, Nano, and the LilyPad (a round microcontroller made to be sewn into clothing). Some of these are shown below (click here for more information on a particular board):

This summer, I created a small mobile robot and chose the Arduino Uno as its “brains.” I chose the Uno because it had a built-in USB port (some Arduino boards require a “shield” that provides a temporary USB port for downloading) and had enough ports and power for the project as I envisioned it. The Arduino Uno is a 20MIP ATmega328 running at 20MHz. A datasheet for the Uno is available here.

Notice the rows of pin sockets at the top and bottom right edges of the board. The upper row has 13 sockets that can be used to connect digital input or output along with a common ground socket. The bottom rows of sockets can be used for analog input or output along with power and ground connections.

The board can be powered by a 9V power supply plugged into the power jack located at the lower left corner of the board, or through a USB connection to the port at the upper left corner. Software is downloaded to the board via a USB connection directly from within the Arduino development environment.

Here is a screen shot of the Arduino programming environment:

The Arduino language is a modified version of the Processing language. The program shown above is one of the example programs provided with the Arduino software. It simply blinks an LED connected to the digital I/O pin 13. This program demonstrates the ease with which physical devices can be connected to the Arduino board. To wire the LED to the board you could simply stick the long lead (positive) of the LED into digital pin 13 and the short lead (negative) to ground.

After a program is downloaded to the board, it runs the setup() method once and then continues running the loop() method until the power is removed from the board or another program is downloaded. As stated previously, the board can be powered either through a battery pack or through the USB connection.

The robot I created this summer with the Arduino Uno board had the following connected to it:

  • Two servos to handle the left and right wheels.
  • Two servos to handle the pan/tilt functions of the robot’s neck.
  • Two infrared motion detectors mounted as ears on the robot’s head.
  • An ultrasonic distance sensor for eyes.
  • A miniature speaker for the mouth.

In addition to creating robots, microcontroller boards like the Arduino can be used to create mobile phone peripherals, sensor networks and other physical computing devices.

Mobile phone peripherals are in their infancy and represent a relatively untapped new market and turn smartphones into powerful handheld tools. One example is Square, a device/app combination that allows the iPhone or iPad to read credit cards. All manner of field test equipment could be connected to smartphones via microcontroller-based hardware (such as Arduino).

Arduino board capabilities can be enhanced through the use of shields. Shields either clip or are soldered onto an Arduino board to provide additional capabilities such as wired or wireless ethernet, cellular functionality, data logging, motor control, video display control, touch pad capabilities, audio capabilities, etc.

Sensor networks can be constructed by creating Arduino modules with sensors that communicate either wired or wirelessly with a central microcontroller or host computer. In effect, sensor networks are like a distributed robot whose body/senses are spread across a large area.

Inexpensive, easy to use microcontrollers represent a significant step toward spreading intelligence throughout the physical world. Considering Moore’s Law, the price and size of microcontrollers can be expected to halve every 18-24 months. How long before we can feasibly imbue almost everything we touch with intelligence?

Books:

Published by drbrown on 03 Sep 2011

Fall 2011 – CSIT1110 Student Blogs

I am teaching two sections of CSIT1110 this semester. This will be the fifth semester in which I have asked my CSIT1110 students to maintain weekly blog entries detailing their experiences in class. After meeting these students, I have very good reason to believe that this semester’s students will create some extremely interesting and insightful blog posts. Here they are:

Published by drbrown on 31 Aug 2011

Computer Theory

I’m teaching a class on Computer Theory at Maryville College this semester (Fall 2011). A student there sent me this cartoon that, unfortunately, does sum up the way that this course was delivered to me:

I created a (hopefully) more interesting introduction to this subject, that I posted on my site SacredRobot.com. Here is a link to my introductory course notes:

The Breath of God: Computation.

Published by drbrown on 06 Jul 2011

Robot Summer

I’ve been playing with three robots this summer:

Carnegie-Mellon’s Educational Robot – “The Finch” iRobot Roomba Pet Series 562 Vacuum Cleaning Robot “Moe” – Home-brewed Arduino-based Robot

Carnegie-Mellon announced “The Finch” on May 5th and I only waited a few days before deciding I had to have one. The Finch was developed as an educational tool and as a potential textbook replacement. At $99, it is an affordable personal robot that can also be used as a sophisticated input device. There is also a wealth of available material for programming The Finch and for using it in the classroom.

The Finch comes with a long USB cable and is meant to remain tethered thereby foregoing the need for batteries and comes equipped with the following hardware:

  • Three obstacle sensors
  • Two light sensors
  • Temperature sensor
  • Accelerometer
  • Two motors and attached wheels
  • Full color LED in “beak”
  • Internal buzzer

The Finch is fun and easy to program in a variety of languages, though its native language is Java. I hope that we can use The Finch in our programming classes here at PSCC. The Finch is a textbook that students will actually want to “read.” The curious among them will dissect it and make it do unbelievable tricks. The gifted will see it as a doorway to many other kinds of knowledge.

I had a great time playing with The Finch, but the housework (and everything else) suffered as a result. The floors looked terrible and cat hair seemed to be hanging off of everything, so I did the logical thing – I cleaned the floors.

LOL. I didn’t really do that of course. Instead, I finally broke down and bought a Roomba. (Click on the picture to the left to see Persephone’s first encounter with it.)

I’ve always been curious about the Roomba robot vacuum cleaner and its sibling the Scooba floor washing robot. Both are products of the iRobot Corporation, formed by Rodney Brooks, Colin Angle and Helen Greiner from MIT’s Artificial Intelligence Lab. I became a fan of Rodney Brooks after watching him in the movie “Fast, Cheap and Out of Control” and I also just read his book “Flesh and Machines: How Robots Will Change Us.”

Brooks has made a career out of challenging the existing techniques and underlying beliefs of the Artificial Intelligence community. He asserts that his mode of thinking about any problem is to first negate the prevailing belief that underlies the previous research and to ask what if this belief is not true? What if the supposed limitations were not limitations after all?

Brooks felt that the underlying belief of the AI community was that robots needed a top-down intelligence that mapped out the landscape and then instructed the various motors to navigate through. He wondered why “simple” creatures like insects were able to navigate an ever-changing real-world landscape with grace and dexterity, while robots required immense computing resources but still could not operate in changing real world situations, requiring instead artificial static environments.

The Roomba embodies Brooks‘ “New AI” ethos. Its excellent performance belies the fact that it lacks of an overall plan. It takes the Roomba much longer to vacuum an area than a human (unless the human is like me in which case the floors never get done), and it goes over the same places many times, but it eventually gets almost the entire floor cleaned. There is no algorithmic guarantee that all the space has been covered, but I have been very impressed with its performance (but to be honest, it’s been so long I’m not exactly sure what the floors are supposed to look like when clean).

iRobot also sells a development platform based on the Roomba, as well as a variety of ground-based and even maritime robotic platforms for developers to create their own robots.

I have been wanting for some time to create a robot from scratch. I’ve used two different small robot platforms in my “Introduction to Information Technology” class. We used the Parallax Boe-Bots a few years ago and more recently the Lego Mindstorm NXTs. After whetting my appetite with the The Finch and the Roomba, I decided to build a robot of my own design.

On May 10, 2011 at Google I/O, Google announced their intention to work with Arduino to create an open-source development environment for creating Android peripherals. Arduino makes open-source microcontroller boards than can be used to communicate with the Android, or to make robots. The Google announcement was a good incentive for me to learn something about the Arduino environment, so I decided to use an Arduino board for the brains of my home-brewed robot.

Here is what I’ve done so far:

  1. I decided to cannibalize one of the Parallax Boe-Bot platforms. I replaced the Boe-Bot’s BASIC Stamp microcontroller board with a small piece of Plexiglas onto which I mounted an Arduino Uno microcontroller board and a small breadboard for connecting sensors and servos to Uno pins.
  2. I bought and assembled a sub-micro pan-tilt kit with two servo motors to act as a neck.
  3. I made a head out of a cardboard box by cutting holes to mount the eyes (Ping Ultrasonic Range Finder), ears (Passive Infrared Motion Sensors), mouth (a micro-sized speaker) and antennae (an RGB LED).
  4. I mounted the pan-tilt kit on the front of the plexiglass mounting board.
  5. I wired the sensors and servos to the Arduino Uno through the breadboard.
  6. I wrote an initial program in the Arduino IDE to sense motion on either side and if motion is detected, to rotate the head in the direction of the motion and tilt the head up and down.

You can click on the image above (or here) to see a short video of the robot moving its head around.

My ultimate goal is to create a “social robot.” More on this in a later post. I’ll end with a list of some of the robot-related videos, books and papers that I’ve been looking at this summer:

I also found that there is a local robotics group – the Knoxville Area Robotics Club which is made up of a great group of people.

Published by drbrown on 16 Mar 2011

I Built a New Computer

I built the computer that I described in my previous blog post. I now have a six-core AMD processor running at 3.2Ghz with 8GB of RAM, a 120GB solid state drive and a 2TB external hard disk. I hooked the system to a 40″ 1080p LCD display on an a full-motion articulating wall mount.

The initial computer build took about two hours. The process was very easy and thoroughly described in the documentation accompanying my Asus motherboard. The only mistake I made was that my case has a display showing internal case and CPU temperature and I should have mounted a sensor between the heat sink and the CPU. I think I may try to attach it later with some thermal tape. Right now it is just loose in the box.

I initially installed Ubuntu 10.10 (Maverick Meerkat) on the machine, but discovered that if I wanted to also dual boot Windows 7, I needed to install Windows first, so I trashed the system and started over. The Windows 7 install went smoothly, though I couldn’t get it to recognize the wireless adapter on my motherboard. After installing Ubuntu again, it also wouldn’t recognize the wireless adapter, so after a few days of installing drivers, I gave up and ordered a 300Mbs high-gain wireless N USB adapter (you can see its “horns” standing on top of my computer).

Getting Ubuntu to play nicely with my existing devices took a little work. I connected my 2 TB Western Digital external drive, a micro USB Bluetooth adapter, a Podcast Studio M-Audio microphone, and a cheap headset/microphone combo with no problems. My Apple Keyboard works well except for the function keys and multimedia keys. My Magic Trackpad works, but with limited gestural recognition. I was able to connect my Wacom Intuos3 6×8 tablet , but so far I haven’t gotten pressure sensitivity functioning. I ended up buying a new camera (Logitech 1080p Webcam Pro C910) since the one I had wouldn’t work and as I said before, I bought a wireless adapter as well.

On the software side, the Ubuntu Software Center application allows you to easily install or update a wide range of supported open source software. A System Update utility manages drivers and keeps installed software up-to-date. Open Office has worked well for me so far in opening, modifying and saving files in Microsoft Office formats. Chromium is a great open-source version of Google Chrome. WINE (Wine Is Not an Emulator) is great for running Windows .exe files, although it wouldn’t run Warcraft for me (hence my Windows 7 dual boot setup). I can honestly say that I am extremely happy with the open source applications.

Ubuntu has been interesting to work with. It has been a while since I’ve looked at open source OS’s and things have really changed for the better. An Ubuntu system still isn’t as easy to maintain as Windows or OS X and it does still require some computer savvy to even get a system going (or at least mine did) but it is getting closer to the ease of use of proprietary systems. Perhaps some day soon, the “best” OS will be free.

I had planned to replace my iMac with the new computer that I built, but I enjoyed Ubuntu so much that I decided to also get rid of my MacBook. I bought the ASUS Eee PC Seashell 1215N 12.1-Inch Netbook which came installed with a 32-bit version of Windows 7 (although the dual-core AMD processor is a 64-bit CPU). I installed the 64-bit version of Ubuntu and made it a dual-boot system and am loving it.

At one time, I would have labeled myself an “Apple Fanboy,” but no more. I still appreciate Apple’s emphasis on aesthetics and ease of use, but their somewhat draconian policies concerning software development tools, restrictions on developers and their sometimes iron-fisted control over the iTunes Store has soured me on them somewhat.

The wild frontier of open source software is calling to me and in it I see not only hope for the future of computing, but perhaps, as metaphorical of a societal move away from pure competition and toward more cooperative endeavors. In this respect, the open source movement may represent the best hope for a positive step in the evolution of human society.

Check out “The Open Source Society” for an introduction to the idea of open-source as a new paradigm for economics, politics, science, education, and culture. (OSE – Open Source Everything)

Published by drbrown on 04 Feb 2011

I’m Building a Computer

In the third week of my CSIT1110 “Introduction to Information Technology” class, I ask my students to try to make a workable plan for building their own computer. They end up posting blog entries containing detailed plans for cheap computers, incredibly fast gaming computers, quirky computers with case modifications and sometimes even supercomputers.

This semester (Spring 2011), while explaining the process and trying to make it as interesting as possible to my students, I went too far and got myself excited about building a computer. I’ve built two computers before, the last being about 10 years ago. I had great fun building them and learned many things about computers in the process.

I intend to run the open-source operating system Ubuntu on the system. Here are the components:

I already have a 40-inch TCL 1080p HDMI TV/Monitor mounted on a dual-arm articulating wall mount along with a Logitech gaming keyboard and Apple’s Magic Trackpad (although I’ll need to add a bluetooth adapter to my system to make the trackpad work). The total system cost is $804.94 (plus tax and shipping).

The following are detailed descriptions of the components along with my reasons for purchasing each item:

APEVIA Black Aluminum MicroATX Computer Case with 420W Power Supply ($79.99)

I recently purchased a Mac Mini as my home entertainment system controller and have gotten accustomed to the small desktop footprint. I decided to try to build a small but extremely powerful computer.

I started by selecting this MicroATX case which has a sleek look in stylish black. The reviews say that the case looks and performs well, but is somewhat flimsy. I think that it will work for my purposes.

I already know that the built-in 420W power supply only has one SATA connector, but my assumption is that I can just use an adapter on my internal Blue-ray player.

AMD Phenom II X6 1090T Black Edition Thuban 3.2GHz Six-Core Processor ($199.99)

I chose the AMD just because I’ve never had a computer with an AMD processor and wanted to try this one out. This was the fastest processor in my price range. Six cores running at 3.2GHz should give me plenty of power to render video files (or just to play WoW).

ASUS M4A88TD-M/USB3 HDMI Micro ATX AMD Motherboard ($104.99)

I’ve used ASUS motherboards in the past with varying success, but I liked the look of this board and it seems to be one of the best (for my purposes) in the Micro ATX form factor. It supports a maximum of 16GB of dual-channel DDR3 RAM running at up to 1333Mhz (up to 2000Mhz with overclocking). It has an onboard ATI Radeon HD 4250 video chipset which I’m not sure will be enough graphics power, but I’ll give it a shot before purchasing a separate video card.  The board was advertised as “Six-Core Ready,” has 2 USB3 ports, 4 USB2 ports and supports up to 6 SATA devices at 6Gb/s.

This motherboard is different from the one I originally planned to purchase. After looking over my build plans, a  student in my Blount County CSIT1110 class suggested I get a mother board that supports USB3.

G.SKILL Ripjaws Series 8GB (2 x 4GB) 240-Pin DDR3 1333 SDRAM ($109.99)

8GB of superfast 1333Mhz dual-channel DDR3 RAM with a CAS (column address strobe) latency of only 7 clock cycles! I actually ordered slower set of RAM and plan to send it back. When I changed my mind about the motherboard, I didn’t notice that the new board I ordered supported faster memory, so I ordered this set, too. NewEgg said they would let me send the other set back unopened for a full refund.

Crucial RealSSD C300 2.5″ 128GB SATA III MLC Internal Solid State Drive ($239.99)

This is my first solid state drive and is one of the components that I am most excited to check out. I plan to put the OS (Ubuntu) and applications on the SSD and connect traditional external drives for additional storage and backups.

SAMSUNG Black Blu-ray Drive SATA ($69.99)

This is also my first Blu-ray player. I don’t yet own any Blu-ray disks, but I suppose that once I get this drive installed, I’ll have to buy some. As I mentioned before, I’ll need an adapter to get power to this unit since the power supply that comes with the case only has one SATA power connector and I need that for the SSD.

I should have all of this equipment in some time next week and plan to post entries on the build. I am very excited to see just how fast this machine is going to be!

Published by drbrown on 26 Jan 2011

Spring 2011 – CSIT1110 Student Blogs

I am teaching two sections of CSIT this semester. This will be the fourth semester in which I have asked my CSIT1110 students to maintain weekly blog entries detailing their experiences in class. These entries always make fascinating reading. Thanks to everyone who joins us this semester in learning about life (while talking about technology):

Published by drbrown on 17 Nov 2010

2010 Mid-Southeastern ACM Conference

I attended the Mid-Southeastern Regional ACM Conference in Gatlinburg on 11/12/2010. The following are notes on the sessions I found most interesting along with a summary of the best ideas I heard:

An Investigation of the CS0 Boot Camp Technique on CS1 Student Performance
H. Erin Rickard, Coastal Carolina University

Erin Rickland described an experiment at Coastal Carolina University involving their CS0 (Introduction to Information Technology) course. Their CS0 course is open to all majors, but CS majors also enrolled in a “boot camp” lab that involved intensive, repetitive programming exercises in Python. The boot camp was composed of 20 75-minute labs in which students were required to complete 350 short programming “drill exercises.”

The results of this experiment were mixed as boot camp students entering CS1 (first programming class using C) did only marginally better than those that did not attend the boot camp. The boot camp did seem to help with retention and grades in the CS0 course, however.

Coastal Carolina has also moved from Java back to C during Fall 2009. They found that students were having problems using Java and that going back to C helped their success rates. They plan to continue to experiment with the “boot camp” idea, perhaps trying placement exams or allowing students to test out of some of the modules.

An Applet Package for CS0
William H. Hooper and Joyce Blair Crowell, Belmont University

Joyce Crowell and William Hooper discussed the use of a custom applet development package (called CHApplet) that they developed for use in the CS0 course at Belmont University. They described the CS0 course at Belmont (as with most schools) as serving the following functions:

  • A “hook” to draw students to the CS major.
  • To help prepare CS students for the CS1 (programming) course.
  • A “filter” to help determine the aptitude of students for CS material.
  • At Belmont, CS0 also counts as a Gen Ed Math requirement.

Belmont’s CS0 course consists of 15 tutorials on applets along with readings that attempt to convey the breadth of the computer science field. Initial exercises teach concepts by allowing students to complete partially written applets. Later exercises allow the students to create applets of their own design using the concepts that they have learned in the tutorials.

William Hooper pointed out that students enjoy creating applets since they allow students to do graphics and to easily share their work over the web for others to see. Their custom CHApplet package provides front end methods to facilitate the use of Java Swing along with helper apps for using various types of media. Belmont uses BlueJ for both their CS0 and CS1 courses.

Real-time Community Building with the Twitter API
Semmy Purewal, Georgia Gwinnett College

Semmy Purewal described several experiments he has conducted involving interactive social media along with a social media toolkit he has developed.

The first experiment involved the use of interactive social media at a “Pecha Kucha Night.” Pecha Kucha is a Japanese presentation methodology in which presenters are allowed to show 20 slides but are restricted to spending only 20 seconds on each slide. Semmy organized a Pecha Kucha Night at which he also projected a live feed beside the presenter of email messages being sent from the audience about the presentation using a Macintosh RSS feed screen saver.

Semmy described this first attempt as something of a disappointment, but he repeated the experiment using Twitter (and hash tags) and had a huge success. He said that it created a very interesting dynamic between the audience and the presenter.

Next, Semmy allowed students to use Twitter and Flicker to update a display that was used by the CS department to tell students about events on campus. He felt that this experiment helped to build community between faculty and staff as both were working together to keep everyone informed and entertained with text and pictures.

Semmy also organized an interactive social media event at “Accepted Students Day” at the College of Charleston. This is a day in which students who have been accepted to college, but haven’t decided if they are going to go to school there or not, come to campus to check out the place and talk to faculty to help them to make up there minds. Semmy connected a live Twitter feed to the JumboTron in the stadium. He said that this event was wildly popular.

Semmy is currently working to connect a Twitter/Flicker feed to the monitors around the campus at Georgia Gwinnett College. Students will have to register to allow them to participate so that messages appearing on the screens can be tied back to the person sending them.

To facilitate this project and to help others do similar experiments, Semmy developed a JavaScript-based toolkit (called Spotter). Spotter makes it easy to incorporate live feeds from Twitter, Facebook and Flicker (and others) on a web page.

From LEGO Robotics Summer Camp Projects to CS1 KAREL Assignments
Cen Li, Middle Tennessee State University

Cen Li organized a week-long summer Lego Robotics Camp for grades 9-12 using an NSF Partnerships for Innovation grant for recruiting of area high-school students and to improve CS retention. The Robotics Camp was one of three summer camps, the others being Alice Programming and Multimedia Programming using Python.

The Robot Camp used the Mindstorm and RobotC curriculums in conjunction with the “Robotics Explorations” book. Cen described several of the exercises and also discussed ways that she would likelychange the camp when they host it again. These changes included better pairing of hardware and software team members and the encouragement of early finishing students to assist the other students. She also mentioned the use of KAREL, a robot simulation environment.

Cen felt that  the camp would help students to grasp object-oriented concepts that they will encounter in MTSUs C++-based CS1 course.

Interesting Ideas from the conference:

  • Semmy Purewal’s use of interactive social media for college community building.
  • Coastal Carolina moving back from Java to C to improve retention and student success.
  • The use of the Mindstorms and RobotC curriculums for teaching robotics and the KAREL environment as a potential for robot-based distance learning.
  • Belmont University counting CS0 for Gen Ed Math credit.

Published by drbrown on 06 Sep 2010

Fall 2010 – CSIT1110 Student Blogs

I am teaching 3 sections of CSIT1110 Introduction to Information Technology this semester. As we have done for the last two semesters now, class participants will be maintaining class blogs with weekly entries detailing their experiences in the class. Below are links to CSIT1110 student blogs for Fall 2010:

Next »