Showing posts with label hardware. Show all posts
Showing posts with label hardware. Show all posts

Tuesday, April 15, 2025

Hardware–Heat and Cold

Not all computer problems are caused by software. Sometimes the hardware is the problem. It’s not always easy to tell where the blame lies. One underappreciated factor is the environment. Both mechanical and electronic parts are impacted by heat and cold. There is a reason that computer companies specify operating temperatures.

I think most people understand about overheating but maybe not the problems of to cold.

One day I received a support call from a customer. They were a tomato distributor receiving tomatoes and sending them to supermarkets and grocery stores all over New York City. The problem was that their computer did not work on Monday moorings. Monday afternoon was fine as was the rest of the week. Sure, people have trouble getting started on Mondays but computers should not care about days of the week.

Their computer used floppy disks. Now floppy disks were not sealed in vacuum and the read/write heads had to be a specific distance from the disks. I’d visited the company and knew something about the office. Most of the building was unheated for the good of the tomatoes. I asked if they ran the heat in the office over the weekend. The answer was “no.” The office got pretty cold over a winter weekend. The cold caused the parts of the computer, especially the disk read/write heads to contract pulling away from the disks. As the office  warmed up the tolerances returned to normal and the computer worked just fine.

Electronic parts get hotter as current runs through them. This can cause expansion which can cause all sorts of problems. That’s why fans are installed in computers – to keep things from getting to hot.

Back some years ago, Microsoft donated  a bunch of computers to a school. The computers had been purchased as part of an investigation into counterfeit software. Once the court case was over there was no need to keep the computers. Now these computers had been sitting in a warehouse for quite some time and not all of them were in perfect running order. I was one of several volunteers who were tasked with diagnosing and, hopefully, fixing some of these computers.

One of the computers had a note on it that said it was crashing at a certain part of the installation of Windows. Software problem? Perhaps. So I started an installation and sure enough the computer crashed at the noted location. I tried again but this time the computer crashed almost immediately. So probably not software. I opened up the computer and it seemed a little hot to me. And the fan was not working.

Aha! It turns out that one of the wires connected to the fan was not actually connected. The fan was not getting power and so was not running when the computer got hot. Connecting the wire fixed the problem and everything went perfectly.

It pays to be aware of environmental conditions both inside and outside the computer.

Monday, December 18, 2023

How Much Hardware Knowledge Do CS Students Need

Back to the basics! Get students close to the hardware! Really? Just how much hardware knowledge to students need today? This post was prompted by a post getting some attention in Facebook this weekend. The Decline of Hardware Knowledge in the Era of Cloud Native Compute

Now I have been around for a while. I programmed using punch cards and paper tape. I spent some time in an operating system development group where I analyzed crash dumps, wrote code in assembly to traverse stacks and queues to understand what was going on. Great fun. In hindsight anyway. But do high school students need to get that close to the computer today? Probably not.

Would it hurt them? Also probably not. Most students don’t really need assembly language or detailed hardware knowledge. Once upon a time, for example, it was important o know exactly how data was stored on a disk with block sizes especially important. For solid state “disk” that is less important if it matters at all.

It’s a mistake to assume that the way we were taught and the things we were taught should still be taught in the same way.

Typical instruction about hardware today is about the parts of the computer – CPU, memory, maybe some talk about cache . In some schools students disassemble and reassemble computers but that is getting harder to do as parts get smaller and more tightly integrated. I don’t want to mess with my laptop at all if I can avoid it.

That is probably enough at the high school level. Now in university I would like students to have some knowledge of things like how micro code is used to code today’s CPU instructions, pipelining, caching, and yes, maybe a little assembly programming. The latter more as a unit than a full course. Let the students who want to take more advanced assembly or micro coding course work.

One big problem with expecting the sort of deep in the woods course work in high school is the lack of teachers who can really teach it. We have enough trouble finding teachers who know Java or Python. Finding teachers who can teach assembly language, explain the inner workings of an OS or the machine hardware? Good luck!

Be sure to read Mike Zamansky’ related post Low Level CS in HS - C'est la Z (cestlaz.GitHub.io)

Friday, January 27, 2023

Rhode Island Computer Museum

I spent some time looking at the Rhode Island Computer Museum web page today. A lot of interesting stuff. Some great information under the Education and Activities page. If you teach the history of computers this is a great resource with text and pictures.

The Collections gallery has a huge collection of images and descriptions of items they have as well. Check it out at Home (ricomputermuseum.org)

Monday, August 02, 2021

IoT, Python, and Raspberry Pi–Oh My

Trying learn too many things can be a risky proposition. But sometimes it feels like the way to go. Regular readers of this blog know that I have been trying to learn Python and that I have been experimenting with the Internet of Things with Phidget devices. Mixing the two is a pretty obvious step but since I really want to set up some autonomous systems without tying down my laptop, it seems like the Raspberry Pis I have accumulated would be the way to go. So mixing a new programming language (Python), with a new development domain (IoT) with a new operating system (the Raspberry Pi OS is built on Linux) seemed like something I should give a try.

Fortunately for me, the Raspberry Pi OS installation comes with the Thonny, Python IDE for beginners and the Phidgets software has downloads and installation instructions for the Pi and Thonny. I had a little trouble getting the Phidgets library to install at first but the Thonny IDE had the ability to get the library and install it for me which was a big help.

Thonny feels like a very nice IDE for beginners BTW. I am surprised I hadn’t already known about it. It installs in Windows, Mac OS, and Linux. And it is free which is also nice. Visual Studio Code also installs on Raspberry Pi so if you are using that on other platforms it could be an easy move on the Pi.

My experiment involved using the Phidget Plant Kit because water and electronics go so well together. Seriously though I like the idea of having a computer controlled watering system for plants. That’s something I have wanted to do for a while. Plus it is something that lends itself to cross curricula work in schools.

Initially I plugged in a monitor, mouse, and keyboard. Not a bad desktop if a little slower than I am used to but fine for what I am needing. Next step was connecting over the network with VNC (Virtual Network Computing). This is the step I need for setting the Pi up without tying up my monitor, keyboard, and mouse.

Well, I have some more experimenting to do. More posts when I have some projects fully completed.  I’d love to hear what other people are doing with Raspberry Pi and IoT as well as where you like to go for connectable hardware.

Monday, June 28, 2021

Phun with Phidgets

Recently I requested a free (for educators) starter kit from Phidgets. Phidgets are small controllers and sensors that are easy to use and with a helpful API. The starter kit includes a bunch of things to introduce the platform.

The Getting Started Kit provides an introduction to students and teachers. We offer a self-guided, online curriculum with challenges and projects for students.

• Programming languages: Python, Java, C#, Swift
• Device compatibility: Windows, macOS, Linux, iOS, Android
• What's in the box: VINT Hub, Push Buttons (2), LEDs (2), Humidity Phidget and all required cables
• Suitable for school grades: 9 – 12

I spent some time with the starter kit today. What I was looking for was pieces that were easy to assemble and sample code that was reliable and easy to use. That’s what I found.

The first thing I did was assemble a sort of control box with two push buttons and two LEDs. I plugged the controller in to my laptop with a USB cable and fired up Visual Studio.  There are samples and tutorials in Python, Java, Swift, and C#. The systems work with Windows, Mac OCS, and Raspberry Pi. Projects are available in a wide variety of IDES including Processing, Eclipse, NetBeans, and Visual Studio among others. That;s a lot of options. IT looks like more languages are supported less directly.

So anyway, I followed the starter tutorials to get a feel for both the type of tutorials supported and to get a feel for using the Phidgets themselves. They were very easy to follow with a lot of code you can copy and paste to get started. In a classroom I would spend some additional time explaining the code in more detail. Students could use this on their own but would really benefit from the sort of deeper explanation a teacher can provide. I do like that there are suggestions of next steps without sample code for the student. That should encourage students to experiment a bit. Solutions are available to educators on request though.

Besides the buttons and lights I ran though the sample code for the temperature and humidity device as well. Equally easy to use. I was gifted a couple of other devices – a Power Plug Phidget and a Distance Phidget. I have some Raspberry Pis around here somewhere so my plan is to try these Phidget devices with one of them. That will give me a chance to learn something about the Pi devices as well. I can see a lot of potential for interesting projects combining Raspberry Pi and Phidget devices.

These feel like the sort of devices I have been looking for to do a variety of hardware and software mixes. In other words, physical computing. There are classroom sets available that while not cheap are in range for a lot of schools. You can’t give hardware away for free and these devices are high quality and well worth the prices. IMHO.

Note that I got the kit and devices for free but without any expectations of quid quo pro. I really like this stuff.

Friday, June 01, 2018

Micro:Bits and Teaching Networking

This year i taught advanced Placement Computer Science Principles with a mix of high school juniors and seniors. Because of the schedule I had the juniors for several days after the seniors were done. The challenge was to come up with something useful and interesting to keep them busy and learning.  I looked at the classroom set of BBC Micro:bits and thought – networking! Obvious right? OK maybe not but I had been thinking about the ability of these little devices to communicate using radio signs and this seemed like a good opportunity for some experimentation.

I broke the students in to groups of two and three and asked them to create an app that used communication between two of the devices. Other than pointing them to the MakeCode for Micro:bit app for Windows (in beta - requires Windows 10 though there are also iOS and Android versions) and the MakeCode web site I didn’t give them more instructions. Hey, it’s an AP course!

A few students decided to use the Python editor from the Micro:bit web site but most used MakeCode. The MakeCode students used a mix of the block editing and the JavaScript editing. I think having options was a plus as students worked with what they were most comfortable using.

On one hand the students didn’t quite get to the level of application I had hoped for. I wasn’t any help there so I think I need to dig deeper into this myself over the summer. Time was an issue as well since the end of the year brings a lot of interruptions.

On the other hand, they did learn a lot. Several students told me they learned more sending between actual devices than using a software simulator. The Code.org APCS P resources I used have an outstanding simulator which the students did use. The devices made it more real, dare I say solid, to the students. One student suggested starting with the simulator and moving on to the devices for deeper learning.

As I listened to them talk about their projects under development they discussed things like throughput and bandwidth as well as how to encode information. These are all topics we had discussed during the year of course. Here though was a practical application and visuals that really brought things home. There is something about pressing buttons and seeing lights on another device light up that brings extra meaning.

My thinking now is that I will be bringing these little devices out earlier next year. We’ll do some networking with them for sure. Maybe some other projects as well. They seem motivating and interesting. Finding thinks that students want to use, want to learn more about, and which reinforce concepts is a wonderful thing.

Wednesday, July 26, 2017

Time to Include More Hardware Devices in Teaching Computer Science?

Lately I have been thinking hard about including small programmable devices in my programming courses. Talking about his on Twitter brought me both encouragement and some discouragement. The discouragement challenged me to think harder about why I wanted to use these devices. Pat of that challenge was a link to a paper by Monica M. McGill called "Learning to Program with Personal Robots: Influences on Student Motivation" IF you don't have access to the ACM Library and really want to read it let me know.

That research work focused on the use of robots as a motivational tool. The results were not that encouraging. A lot of the complexities of using robots, fickle hardware, batteries running out, software that is not quite there yet, and other logistical items probably apply to small programmable devices of other sorts. The robots didn't seem to be as motivating as the authors, and many supporters, would have hoped. Students didn't see the robots as relevant to their lives and interests. SO are the robots worth it? It's a fair question. Are my little devices going to be different? If so, different in what way? So many questions.

My thinking is that I need to look at more things to determine how or if I should proceed. Addressing some of the logistical issues is of course important. The "why" of going through that is the bigger question. Here I look to relevancy. This is were I see some potential differences from robots. The challenge becomes more than creating projects that are meaningful and motivating for the students. I have to have and communicate a reason why students should be learning g about these devices. Something beyond the project of the hour.

We're really moving, some would say have moved already, into an era with we are seeing smart devices everywhere. Many of these devices are tied in with "the cloud." Are we preparing students to deal with that reality with software only computer science education? I'm concerned that we are not.

I asked the questions "Wondering if it is time to more software people to learn more hardware? Do we need to be teaching more of this stuff as well?"and received  a lot of positive responses from both educators and industry friends. The support did not come without more questions (I have smart friends) such as where in the K-16 CS curriculum should it come and what sort of things should be included? We are really still figuring out this whole CS for All thing. (BTW Mark Guzdial's CS Curricula, Standards, and Frameworks will Need to Change for more on this.) In a way, this needing to figure things out makes me want to try more. Someone has to do it. Trying things on a small scale seems to me to be worth the effort. I want students to think about hardware and how it is part of a complete system. I want them to see that they can combine hardware and software in new ways to create new things.

Will this be more motivating? I don't know. Will it help them learn programming faster or better? Again I don't know and the research suggests not in a big way. On the other hand it seems likely to teach themselves some things they would not learn at all without the involvement of hardware.

I haven't yet seen much research out of the UK on the impact of the BBC Micro:bit. They didn't really have a full year to work with it though so it is early. People using it still seem enthusiastic  about it. People are starting to develop more software and curriculum around the Micro:bit, Arduino , Raspberry Pi, AdaFruit Circuit Playground and other similar devices so I don't feel alone. Well not completely at least. And I am going into it with modest expectations.

I'd like to hear from others who are asking these questions as well. Do you use these small devices? If so, why? If not, why not?