[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [school-discuss] OSI Incubator Project - FLOSS Desktops for Kids



Il 28/07/2017 22:06, Carpinello, Nicholas ha scritto:
> Hi, Damiano,
> 
> I think our idea is to equip under-privileged kids with computers, teach
> them "baby" computer science, and future iterations/expansions of FLOSS
> Desktops would be putting them on course to do something like Summer of
> Code when they get to college.

You mention both "baby computer science" and "summer of code". This sounds
to me like you're helping your kids acquiring "programming skills" and, as
such, building an algorithmic and scientific mindset.
I definitely agree with such an approach, as I really believe those skills
will results more and more "important" in upcoming years.


> As it stands, we're dealing with kids who are roughly 12 or 13 years old
> and the program doesn't go much beyond HTML/CSS coding.

This (HTML/CSS) sounds to me slightly mis-aligned with respect to the above.
I have quite a good overview of both HTML and CSS technologies, as well as
the incredible evolution that web-development registered during last 6/7
years (more or less).

Actually, I think that nowaday is _REALLY_ difficult to became a proficient
web-developer. Knowledge of HTML and CSS is definitely not enough.
Moreover, HTML and CSS are not exactly "programming" technologies.

Don't take me wrong: I'm not saying your approach is not correct. I'm only
saying that by "pushing" HTML and CSS you can achieve great commitment by
your students... but as soon as they start mastering such "languages", they
will quickly recognize that they need additional skills (Javascript and
related web-development frameworks). To acquire such new skills, basically,
they have to re-start from scratch (as they will need "learning programming").

Viceversa, I think that if those kids will be "exposed" towards
"programming technologies" since the beginning of their training, probably
they will have slightly more difficulties at the beginning, but the skills
they will acquire will act as a solid base to let them switch, afterwards,
between Javascript, Python, PHP, C, etc. etc.
With "basic computer programming" skills, they will have few problems in
searching for a (open-source) "web-development framework" (like AngularJS,
Vue.js, React, Symfony, Laravel, etc.) and use such framework to build a
web-site.

You might say: "Is it the right approach in building a website without any
significant knowledge of HTML and CSS?".

If you asked such question to me 10 years ago, I'd answered: "No!
Definitely! You need to know the underlying technologies!".

But now, in 2017, I answer this: "Yes! Definitely! Nowaday web-technologies
are so complex that is close to impossible to "master" them. It's close to
impossible even to master a _SINGLE_ technology, like CSS. So, probably,
the right approach is to have a clear idea of what is happening underneath,
but consciously ignore the gory-details."

Anyway, I understand that choosing a proper "curriculum" for young students
is not exactly an easy thing. I myself have _LOTS_ of problems with my
sons, BTW :-)


> [...] how we can get kids from knowing how
> to make a basic website to being able to participate in Summer of Code,
> which is relatively advanced. 

As far as I know, "Summer of Code" means "computer programming". So the
above considerations apply the same way: if you want to teach to "program",
than I doubt that HTML/CSS are the optimal approach. At a very minimun, you
should add Javascript.
Actually, I'd suggest to replace CSS with Javascript (so an HTML/Javascript
curriculum), where at a relatively early stage in the course you add
something like "bootstrap" [1] or even SASS [2], to introduce CSS
"concepts" and some "engineered approach" to them.

Again: it's a very complex decision to take.


> I was actually thinking something along the
> lines of Arduino/Raspberry Pi, making code for them to do various things.
> I'll freely admit that I'm a newbie when it comes to both of those.

As for Raspberry, things are very easy to understand: it's _EXACTLY_ a
_COMMON_ computer, where you can run whatever you want. You can push on it
a "normal" DEBIAN (or other linux distribution) and use it... normally.
Really normally.
The only things that you'll have problems with, are something like
3D-games, or high-performance computing.... But it's something that should
not be part of your curriculum :-)   ...so it's not a big problem.

The problem (as for your "mission") is that.... it might be much cheaper,
for you, to buy a brand-new RPi instead of fixing an old/broken PC. Also,
consider that lots of single-board-computer (like the Raspberry) exists...
and some of them can be acquired for around 10 USD!!! New!! with 1GB of RAM
and 32GB of flash... and wifi... and LAN... and USB [3].
They are so cheap... that you could even give them as "gift" to your
students :-)

So, to recap the RPi approach: they are common computer. Slightly less
powerful than normal one... but definitely more than enough to "learn"
programming, even with the aid of a basic graphical environment.

Now let's switch to Arduino. It's a _COMPLETELY_ different model. It does
NOT host an Operating System. It has _NO_ powerful CPU (it's common to have
a 8Mhz, _MEGA_ hertz, not Giga). It has _NO_ huge amount of RAM (it's in
the range of 128K. K. Not M or G). So it's incredibly _SMALL_. And as such
it requires really _LOW_ energy to run.
It does very _FEW_ things: read INPUTS coming from its PINs... and react
accordingly. Very easy.
You've a very limited instruction set and... with such a set you build your
"application logic" (eg.: when you PUSH the BUTTON-X, then PUT_POWER to PIN
Y, so that the BUZZER that is connected there, can emit a SOUND; or... when
you PUSH BUTTON-Y, start BLINKING the internal LED and STOP only when
BUTTON-Y is pressed again.). As soon as you goes ahead, you could even
start building a small robot (a base + 2 wheels + 2 motors) with three
infrared sensors being able to "follow a black line on a white panel".
Really not a difficult task [4]
Those are very _SIMPLE_ applications. PERFECT to learn "programming".
PERFECT also to learn that you can use a tiny solar panel (sized slightly
bigger that a coin) to power a LED. So to learn relationship about ENERGY
COSUMPTION (by equipments), GREEN ENERGY (solar panels; wind generators;
etc.), and ENERGY STORE (battery packs). In my opinion, those concepts can
be really understood only by practicing with _HARDWARE_ (and not with
software, unfortunately!).

Again, due to the even lower costs with respect to RaspBerry, you can
definitely give away for free some Arduino, maybe joined with a basic set
of sensors/accessories.
One thing to consider is that in order to program Arduino... you need a
computer. Actually even a raspberry would be OK :-) ...and, BTW,
interconnecting a RPi with an Arduino so, for them, to exchange datas... is
really an interesting exercise, from both a SOFTWARE and HARDWARE point of
view.

Let me stop here.

Again, once again... you've really a difficult time in choicing how to
proceed with your courses :-)

Bye,
DV


[1] http://getbootstrap.com
[2] http://sass-lang.com
[3] only as an example: http://www.orangepi.org/
[4] https://diyhacking.com/make-line-follower-robot/

-- 
Damiano Verzulli
e-mail: damiano@xxxxxxxxxxx
---
possible?ok:while(!possible){open_mindedness++}
---
"Technical people tend to fall into two categories: Specialists
and Generalists. The Specialist learns more and more about a
narrower and narrower field, until he eventually, in the limit,
knows everything about nothing. The Generalist learns less and
less about a wider and wider field, until eventually he knows
nothing about everything." - William Stucke - AfrISPA
  http://elists.isoc.org/mailman/private/pubsoft/2007-December/001935.html

Attachment: signature.asc
Description: OpenPGP digital signature