NETMF for education, a community effort

I’m torn on the “dumb” board that has everything built in that focuses on programming first vs one that slowly teaches electronics & programming in parallel. It sounds like you’re primarily interested in targeting high school and younger kids programming. So, in that case I think focusing on the programming and abstracting away the electronics is probably a good choice.

However, I think there’s an equally (if not more) important educational audience where this doesn’t make sense. That’s the college microcontroller courses. I’ve been tutoring students the past couple semesters in this course. To my initial horror, I found the courses (100, 200, & 300 level) are based on the Parallax BASIC Stamp. This is a course taught to Computer Engineering students at the largest university in Tennessee. The course is built around the BASIC Stamp “Education” board which is nothing more than a breakout board with a breadboard attached and a handful of components and sensors (sensor pack varies between courses).

The students that I’ve been tutoring usually have no problem with the electronics side of things but struggle with the programming. However, I think this parallel approach is appropriate at this level.

My point is I think there’s a need for two separate boards - one that teaches programming first and makes it interesting by adding on hardware and another used for teaching microcontrollers that teaches hardware & programming in parallel. Something as simple as the “Education” board would be very easy to design and equally cheap to make and sell. I would like to see a few sockets added to it, though. Having an add-on board to the board with everything built-in doesn’t suffice in the later case since all that effectively does is make the board more expensive to those that need to learn how the components are connected.

@ ianlee74 - I think the second board for the next level is something we already have and it is called gadgeteer :slight_smile:

You are correct, we are focusing on entry level, not even high school, middle school level perhaps.

[quote=“Gus”]
@ ianlee74 - I think the second board for the next level is something we already have and it is called gadgeteer :)[/quote]

I disagree. Gadgeteer is great for making things quickly because it abstracts away the electronics. If you’re goal is to teach electronics then you don’t want the part you’re teaching abstracted away. You want the students to build it. Now, one could argue that the Cerbuino or Panda boards with a breadboard shield could stand in for the “Education” type board quite nicely. My complaint there is that you would also be helping to spread the “duino” form factor of which I’m not a fan and is just added expense in this situation where a few extra dollars in the kit cost matters.

True, but only at the right part of a course series. In a software-first approach (which I strongly favor), you want the hardware to be a complete non-issue. In a second phase, you might want to add more complex hardware blocks and maybe basic circuits (led & motor/servo), but it’s not really until a hypothetical third level that you want to get into ‘real’ electronics - Why that resistor? Ohms law and such. After that, inductance, reluctance, and all that nasty analog stuff, and then your PhD.

Of course, at the level I think we are talking about, the progression probably ends right after that first led and button, or maybe pot and servo.

But you can do an awful lot with just that. Consider the snow-cone machine I am building for my course. It is as simple as an led to program, but fun as all get out with a real reward at the end. Each student develops the program using three led’s, and those represent the flavor pumps - then when they are done, they can run their code on the real hardware and get a snow-cone out of the deal. Robot dance-off is similarly simple (on-off and delay logic only).

In the end, it really comes down to what Gus mentioned earlier - it depends on what your teaching goals are. Is it a programming course; electronics course or a little of both? Is this a short-form seminar (summer program, boy/girl-scout event, etc); part of a middle school curriculum; or a standalone course? All of those are valid goals and each requires a quite different approach, but all could be handled by a sensible hardware-software roadmap that does allow you to selectively ignore non-goal elements.

1 Like

I don’t quite get it. If you guys across the pond usually don’t care much about prices, then why Gadgeteer is an issue? There’s no electronics in it, it’s only “be sure sockets have the same letter on both ends”…

@ Simon from Vilnius - It’s a fair question. My original ‘blocks’ suggestion boils down to putting Gadgeteer devices with just one connector type (I2C) into cases to hide the scary electronics-looking stuff.

Maybe the price could be lower than ‘real’ gadgeteer by eliminating other connector types and using purpose-built scaled-down electronics and down-level processors, but you could probably convince me that the new setup costs and cases would burn up any such cost gains.

My 7 and 9 year olds love this.

http://www.johnadams.co.uk/retail/action_science/Hot_Wires/

It’s easy for them to do on their own, and whilst no coding is needed, they’ve had hours of fun playing with LEDs, motors and even built a radio receiver and an alarm to ensure they keep out of each others rooms…

How close could we get to this but with some coding thrown in too?

@ Jason - circling back in the same point, it is about what you want to teach. My goal is to start with programming but use a simple hardware to do so. And then introduce more hardware in later years.

Most of the users on this forum started this way. They are software developers who learned hardware just hanging around here.

1 Like

[quote=“Jason”]
My 7 and 9 year olds love this.

http://www.johnadams.co.uk/retail/action_science/Hot_Wires/[/quote]

That’s funny. We have something identical called Snap Circuits.

1 Like

I would love to be involved, please do count me in :slight_smile:

[quote=“ianlee74”]

My 9 year old loves snap circuits.

1 Like

@ mtylerjr - I love them so much too!

I have been asked to assist with creating a STEM program at my kids private high school. I am very interested in what we can do with Gadgeteer and .netmf. Please put me on the list.

I wonder if we could do a modular approach with the Cerb 40 as the core. A very simple board with a few items could be used for beginners. The Cerb40 could be moved over to a more advanced board with gadgeteer sockets, ethernet, spi display, etc. Just a thought to keep the cost down.

1 Like

I have emailed everyone back with a document showing how we scan work together on this. If you are interested and haven’t sent me an email please do so :slight_smile: gusi@ ghielect…you know the rest.

Please keep the chat between us though direct emails/phone until we clean things a bit more then we can come to the public community for even further feedback.

Another quick update. I have showed the circuit and code samples to some non-programmers of different ages. They all understand what is going on easily. Meaning, we are on a good start :clap:

What surprised me the most was my 4 year old daughter. I didn’t even ask her but she was looking at the design and was pointing things out that I didn’t expect her to understand.

If you know some English, you will probably understand this code!


While (1 = 1)
            BrainPad.TrafficLight.RedLightOn()
            BrainPad.Wait.InSeconds(0.5)
            BrainPad.TrafficLight.RedLightOff()
            BrainPad.Wait.InSeconds(0.5)
End While

Very easy to understand indeed. I have some suggestions, though, that I think makes it even easier to understand and takes advantage of Intellisense to make it even easier to program.


While (1 = 1)
            BrainPad.TrafficLight.TurnOn(LightColor.Red)
            BrainPad.Wait(0.5, TimeUnits.Seconds)
            BrainPad.TrafficLight.TurnOff(LightColor.Red)
            BrainPad.Wait(0.5, TimeUnits.Seconds)
End While

I recall this one language that was supposed to be easy to code in English…


 IDENTIFICATION DIVISION.
 PROGRAM-ID.     HELLOWORLD.

 ENVIRONMENT DIVISION.
 CONFIGURATION SECTION.
 SOURCE-COMPUTER. RM-COBOL.
 OBJECT-COMPUTER. RM-COBOL.

 DATA DIVISION.
 FILE SECTION.

 PROCEDURE DIVISION USING BrainPad.

 MAIN-LOGIC SECTION.
 BEGIN.
     CALL "SetLight" USING "RED", 1.
     CALL WAIT-MODULE USING 0.5.
     CALL "SetLight" USING "RED", 0.
     STOP RUN.
 MAIN-LOGIC-EXIT.
     EXIT.

1 Like

@ ianlee74 - one the most difficult, yet simple, things is explaining how arguments work, so I was trying to get away from using arguments.

I like the LOOPING idea