Too much focus on programming?

Drop in for a chat and a cup of tea

47 posts   Page 1 of 2   1, 2
by bredman » Mon Jan 23, 2012 10:18 am
At the risk of getting on the wrong side of some people, I feel that there is too much discussion of how to teach programming languages.

I feel that Raspberry Pi is an opportunity to start a revolution in computer education. The current system pumps out barely adequate code monkeys, we need to do better. Is our ambition to train better code monkeys? I hope not, I hope we can create proper computer engineers.

If we want to create a computer revolution, we need to teach people about ALL aspects of computer engineering.

As an example, I sometimes teach kids about computers. One typical project is to give them a PicKit2 and tell them to build a toy for a 2-year-old child. This can be a real shock for the students, because they cannot build what they want themselves, they must really focus on satisfying the end-user.

In this exercise the students learn a lot of computer engineering concepts.

- Gathering requirements, what does a 2-year-old really want? What would parents buy?

- Integration, how to fit a board and battery pack into an existing toy.

- Presentation, should it be comforting or funny or loud?

- Industrialisation, it must deal with drool and sharp knocks.

- User interaction, it must be easy and obvious to use.

I think we need more of this end-to-end thinking in the Raspi educational projects.

No need to reduce the posts about learning to program. To even out the balance, we need lots more posts about the other aspects of computer design.

PS. Just failed my first addition test while attempting to post. How embarrassing!
Posts: 1413
Joined: Tue Jan 17, 2012 2:38 pm
by andyl » Mon Jan 23, 2012 10:38 am
To some extent you are right, there is a lot of focus on programming, but that is mainly due to the kind of people that are posting.

I wouldn't put a lot of what you suggest in computer engineering, although they are undoubtedly important.

Messing about with code is the fun bit of development (at least for me).  I want education to be fun, at least at the start.

Sure creating requirements documents and specifications (and understanding the difference between those two) are important.  Communication (as in talking to people, presenting one's ideas) is important.  As are various practices - test driven development, understanding the difference between unit and integration testing, knowing about agile methods, data modelling, and dealing with bugs over time in both your own and others code (probably hard to do in a school environment).  Working in teams is also important (maybe with one student acting as customer, one as PM etc).  However first you have to get people enthused - and for me (and I guess a lot of other people) writing programs (even simple ones) is what got us enthused.
Posts: 265
Joined: Tue Jan 10, 2012 11:05 am
by mgmt_idiot » Mon Jan 23, 2012 11:10 am
Bredman makes an excellent point.

The programming route is only about 1/8th of what’s needed to deliver IT into a large organisation. The BCS used to have a lovely “rosette” diagram showing this for their ISEB (Information Systems Examining Board) portfolio. Unfortunately, they seem to have updated their website without this wonderful diagram. I have a PDF of it in my own files, but not sure how to upload it to the forum.

However, just looking at their current certifications:

http://certifications.bcs.org/.....gory/15467

Also interestingly, the programming made up about 1/8th of the IT dept in a large public facing organisation that I worked for. The rest were distributed amongst the other functions that the BCS describes.

That being said, despite being management, learning Basic on the BBC Model B, and ARM assembler and C on the Acorn A5000, were vital underpinnings to my career.
Posts: 95
Joined: Sun Jan 22, 2012 5:46 pm
by jamesh » Mon Jan 23, 2012 11:40 am
Don't forget that the point of the Raspi device is to help teach programming.  Not management, agile, requirements capture, integration etc.

Even though programming might only be an 8th of a project, programming is still its raison d'etre. The rest of the stuff you don't actually need a Raspi for.....
Soon to be unemployed software engineer currently specialising in camera drivers and frameworks, but can put mind to most embedded tasks. Got a job in N.Cambridge or surroundings? I'm interested!
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 11559
Joined: Sat Jul 30, 2011 7:41 pm
by tufty » Mon Jan 23, 2012 11:41 am
bredman said:


At the risk of getting on the wrong side of some people, I feel that there is too much discussion of how to teach programming languages.


You're not on the wrong side of me, although I disagree almost totally with what you're saying.  What you're talking about is industrial design rather than computer science. For each of the concepts you outline, one could replace "pickkit2" or "Raspberry Pi SBC" with "clockwork mechanism", with little or no change to the end result.  The "computer" (not the program, which is taken to exist, but the computer itself in terms of physical form factor) is taken as being an available black box, an off-the-shelf product, which already carries out its intended purpose.


I feel that Raspberry Pi is an opportunity to start a revolution in computer education. The current system pumps out barely adequate code monkeys, we need to do better. Is our ambition to train better code monkeys? I hope not, I hope we can create proper computer engineers.


Not code monkeys.  Not computer engineers.  Computer scientists.

To take your "end to end" approach, it is extremely rare (outside of a one-man-shop or a home "hacker" setup) for the person doing embedded programming to have any say in the industrial design of a product, even to the point of having any say in what sensors (s)he has access to or the platform to be used.  The problem domain is totally abstracted away from the physical domain.  The same is true even when brought down to the level where everything is software – web systems are, when competently done, designed by designers and coded by coders, with very little "crossover" between the two.

None of which is to say that physical integration, drool-proofing, external product presentation and "interface", or even "hacking that bloody css so that ie renders acceptably" aren't important engineering and design exercises, but they are not computer science.  Including them in a computer science context might be interesting as an aside, but, if more than just being an aside, would make no more sense than ICT's approach of teaching Word, Excel and Dreamweaver usage – this a large part of what people like me would like to get away from.

Simon
Posts: 1363
Joined: Sun Sep 11, 2011 2:32 pm
by bredman » Mon Jan 23, 2012 2:16 pm
It all depends on what you think the purpose of the Raspi is.

As far as I know, the purpose is to give the give computer education a kick up the behind and encourage a new renaissance of the computer industry.

By focussing too much on programming, this will only create a new workforce. The real innovations in the industry will come from system engineers, graphical designers, usability experts, materials engineers, marketers, psychologists, etc.

Raspi is an opportunity to get students from very diverse interests to get involved. Yes, they must be taught to program, but something is needed to tempt them in the first place. The current method of teaching just attracts geeks. We need to attract non-geeks if we are to revolutionize the industry.

PS. Apologies to all geeks. I am one of you.
Posts: 1413
Joined: Tue Jan 17, 2012 2:38 pm
by johnbeetem » Mon Jan 23, 2012 3:21 pm
bredman said:


It all depends on what you think the purpose of the Raspi is.

As far as I know, the purpose is to give the give computer education a kick up the behind and encourage a new renaissance of the computer industry.


It's pretty easy to find out the purpose of RasPi: just click on "About Us" at the top of the page which takes you to http://www.raspberrypi.org/sample-page

My summary of that page is that Eben Upton and others found that while students are quite knowledgeable about using computers nowadays, their knowledge of programming them has degraded terribly since the 1990s.  So the focus is programming and the chosen mechanism is to provide a computer so cheap that you can feel free to program it without worrying about bricking a USD500 box.


By focussing too much on programming, this will only create a new workforce. The real innovations in the industry will come from system engineers, graphical designers, usability experts, materials engineers, marketers, psychologists, etc.


I disagree.  Even if you don't become a professional programmer, learning to program develops logical thinking skills that everyone needs to be a responsible member of society.  ("Logic!  Why don't they teach Logic in these schools?" asks the Old Professor in The Lion, the Witch, and the Wardrobe.)  Programming is also highly creative, so you're developing logical thinking and creativity at the same time.
User avatar
Posts: 942
Joined: Mon Oct 17, 2011 11:18 pm
Location: The Coast
by bredman » Mon Jan 23, 2012 3:54 pm
Have I misread the aims of the foundation? Apologies if I have. The last paragraph of "About Us" seems to have an ambition far beyond programming.

My original post was inspired by this article about Makerspace trying to "seize the moment to bring much needed change to education".

DARPA Mentor Award to Bring Making to Education

However, I am horrified that the Makerspace initiative is sponsored by the Defense Department. I hope that Raspi can do something similar without such a malevolent benefactor.
Posts: 1413
Joined: Tue Jan 17, 2012 2:38 pm
by Mark22 » Mon Jan 23, 2012 4:21 pm
Reading the aims of the project again, I think that its not "in school" that this is going to work but "at home". Whilst we need a lot of programmers, we need even more people who are familiar with, and competent at, Excel & Word. Schools therefore rightly spend their time focussed on Word and Excel to deal with the mass need. Success (or failure) of RPi will probably be measured by how many homes have one for kids to play with doing things like controlling lego with sophisticated programmes.
Posts: 2
Joined: Wed Dec 28, 2011 5:36 pm
by mgmt_idiot » Mon Jan 23, 2012 4:22 pm
You can't avoid the military industrial complex. Who do you think came up with t'internet?

http://en.wikipedia.org/wiki/ARPANET


Logic!  Why don't they teach Logic in these schools?" asks the Old Professor in The Lion, the Witch, and the Wardrobe


Very much agree. There's a lot of illogical people out there creating chaos. There wasn't a shortage of them before, but there's definitely more around now.

My reading of the About page is that the purpose of the project is to deal with the


distinct drop in the skills levels


So any use of the cheap RasPi device in pursuit of this is the aim. I hope many will use if for programming, but any use that teaches logic, critical thinking etc. will raise the skill levels.
Posts: 95
Joined: Sun Jan 22, 2012 5:46 pm
by jamesh » Mon Jan 23, 2012 4:23 pm
The ambition may be beyond programming, but the Raspi device itself is ALL about programming.
Soon to be unemployed software engineer currently specialising in camera drivers and frameworks, but can put mind to most embedded tasks. Got a job in N.Cambridge or surroundings? I'm interested!
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 11559
Joined: Sat Jul 30, 2011 7:41 pm
by bredman » Mon Jan 23, 2012 4:40 pm
JamesH said:


The ambition may be beyond programming, but the Raspi device itself is ALL about programming.


A definite answer from somebody in the inner circle.

So, I apologise for trying to stretch the project in a direction that was not intended. I understand that feature creep needs to be stopped as soon as possible.
Posts: 1413
Joined: Tue Jan 17, 2012 2:38 pm
by MattHawkinsUK » Mon Jan 23, 2012 5:11 pm
bredman, no need to apologise. You aren't wrong and it's always good to remind people that getting a decent set of requirements is more important than the programming. Many programmers just don't bother with this "boring" it.

... but the PI is just a piece of the whole design sequence. The good stuff you do with the PicKit2 is effectively the whole product design cycle. The foundation are just concentrating on the bit in the middle. It's early days. I'm sure once the ball is rolling other people will hightlight that the projects that succeed are the ones that have been designed and managed properly not always the ones that are coded the best.

I consider the programming aspect to be the bit most likely to spark an interest in young people. Once the fire is lit the other processes can come later ... just need to make sure they come before that person gets a job designing/coding a real product.
My Raspberry Pi blog and home of the BerryClip Add-on board : http://www.raspberrypi-spy.co.uk/
Follow me on Google+, Facebook and Twitter (@RPiSpy)
User avatar
Posts: 481
Joined: Tue Jan 10, 2012 8:48 pm
Location: UK
by croston » Mon Jan 23, 2012 5:17 pm
Knowing some programming is essential when designing larger systems where software is a part.  You need to know about different building blocks (programming languages, libraries and OS's) so that you don't come up with a stupid top-level design.  Also as the technology field moves at such a fast pace, you need to learn to look things up yourself (RTFM).  How many people just know about one thing and try to do everything with it (Birmingham screwdriver)?

If you are a project leader and contract out the programming work - how can you tell the difference between poor quality copy-and-paste code and well written code if you don't know anything about programming yourself?  How do you know what to ask for in the first place?

I don't think that you can teach Systems Engineering to children before they have played with the building blocks.  I did a degree in Systems Engineering where the course consisted of learning the basics of many diverse engineering disciplines - jack of all trades and master of none.  It was a four year (masters) course just to fit in such a lot of information.  There was no three year equivalent.

The Rpi is an excellent tool to learn programming before moving on to integrating it into bigger systems - e.g. media players, servers, GPIO gizmos.
User avatar
Posts: 443
Joined: Sat Nov 26, 2011 12:33 pm
Location: Blackpool
by jamesh » Mon Jan 23, 2012 5:50 pm
bredman said:


JamesH said:


The ambition may be beyond programming, but the Raspi device itself is ALL about programming.


A definite answer from somebody in the inner circle.

So, I apologise for trying to stretch the project in a direction that was not intended. I understand that feature creep needs to be stopped as soon as possible.


Actually, that's my personal opinion, but really, the Raspi could be used to teach the full product life cycle if required, but it's main thrust is to programming part. After all, it's a bit lightweight to run project tools. You don't use the embedded device going in to your product to run the project.
Soon to be unemployed software engineer currently specialising in camera drivers and frameworks, but can put mind to most embedded tasks. Got a job in N.Cambridge or surroundings? I'm interested!
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 11559
Joined: Sat Jul 30, 2011 7:41 pm
by Jongoleur » Mon Jan 23, 2012 5:58 pm
bredman said:


At the risk of getting on the wrong side of some people, I feel that there is too much discussion of how to teach programming languages.


I won't go into all the excellent reasons mentioned above as to WHY we need to emphasise "programming", but I will mention one pertinent acronym CDT.  Craft, Design and Technology is what used to be metalwork, woodwork, eng. drawing and home economics all bundled together to cut costs and make the subjects "relevant" (ha!) to modern chldren.  CDT is woefully underfunded and forever having its position in the school week and its facilities eroded in preference to the three Rs.  CDT deals intimately with:


  • Gathering requirements

  • Integration

  • Presentation

  • Industrialisation

  • User interaction



CDT projects revolve around these activities and perhaps there could be a linkage between the two disciplines to generate requirements for software to bring designs to life, but there's no point in a Computing syllabus dealing with these things to the detriment of programming, which is not just coding, but learning about algorithms and data structures too.  Discussion of systems analysis and lifecycle models is important, but as far as the programmer is concerned, an understanding of how to implement requirements, using the building blocks of a particular programming language is just as important.

You'll notice that I didn't mention ICT.  :-)

Perhaps it should be renamed "Office Skills" and put in its proper place in the curriculum....
I'm just a bouncer, splatterers do it with more force.....
User avatar
Posts: 1180
Joined: Thu Aug 11, 2011 12:47 pm
Location: O'erlooking the sea, and all those effin windfarms...
by tufty » Mon Jan 23, 2012 7:42 pm
bredman said:


So, I apologise for trying to stretch the project in a direction that was not intended. I understand that feature creep needs to be stopped as soon as possible.


Oh, don't take the responses you've had (even my own) as meaning you're necessarily wrong - the Pi could well have a useful place in a cross-curricular activity between CDT (as Jongoleur points out), which would cover at least most of the parts you mentioned, and CS for the actual computer program bits.  It's not, as I understand it, the way the foundation intends going with the Pi, but there's nothing to stop you using it for that yourself and / or evangelising the approach here or even at a political level.

It may even be the case that the hybrid approach is a viable way to get proper CS into the curriculum.

Jongoleur said:


You'll notice that I didn't mention ICT.  :-)

Perhaps it should be renamed "Office Skills" and put in its proper place in the curriculum....


I think you pissmelt "dustbin of embarrassingly bad policy choices"

Simon
Posts: 1363
Joined: Sun Sep 11, 2011 2:32 pm
by mightygoose » Mon Jan 23, 2012 7:58 pm
Sorry if i missed something, i thought Raspi was about computer science... I mean to program a sensing robot, you have to be able to build a sensing robot first?
Posts: 85
Joined: Mon Jan 02, 2012 1:53 pm
by mgmt_idiot » Mon Jan 23, 2012 9:42 pm
Jongoleur said:


Perhaps it should be renamed "Office Skills" and put in its proper place in the curriculum....


Seconded!
Posts: 95
Joined: Sun Jan 22, 2012 5:46 pm
by bredman » Tue Jan 24, 2012 9:39 am
The reason that I backed away is not that I think I am wrong (Heaven forbid!) but because I don't want to distract focus away from the core aims of the foundation.

This forum is full of excitement and great ideas, even before the first units are sold. But I worry that the main aims of the foundation are being lost in the babble.

With all the great ideas being discussed, it may be forgotten that we have to create a solid boot/development environment and a set of teaching aids.
Posts: 1413
Joined: Tue Jan 17, 2012 2:38 pm
by mgmt_idiot » Tue Jan 24, 2012 11:05 am
I agree with bredman. I'm sure I'm right, but getting into an argument with an admin about it isn't going to help. Indeed, we need them to keep doing what their doing to deliver the product, so I'll keep contributing but try to avoid joggling their elbow.
Posts: 95
Joined: Sun Jan 22, 2012 5:46 pm
by libreuniverse » Tue Jan 24, 2012 1:58 pm
I still think the reason no one understands computers is that they're so application-driven now, people can only use applications (and just barely.) Programming doesn't just teach you how to build programs, it makes you a much more proficient user. If you want to teach computers, skipping programming is essentially skipping the lesson: and now it's difficult to find an exception to this.

But there is one application I recommend to all computer users: a paint program. Any paint program. It teaches tons of computer skills at once, and can introduce computing before the student is even literate. So if you feel like applications are being "missed" by the RPi crowd, I don't think it's just coder bias. I think a large part of it is that nearly all of us are unable to run apps on the Pi yet. If that doesn't change when people actually have a Pi to use, Make the same protest again.
Posts: 15
Joined: Mon Jan 23, 2012 7:30 am
by DavidS » Tue Jan 24, 2012 6:45 pm
I would say that we need to focus more on programming, as well as more on architecture and the other important areas of CS.  Using applications is a way simpler skill than anything of CS (though there is a hand in hand to this).

I am viewing a series of "Graduate Level" university lectures on CS in preparation to go back to school and complete my formal education in this topic.   I am very disappointed to see that these lectures are covering topics that I completed in understanding by the time I was 11 years of age, the stuff I would consider as primary school topics, though it is necessary for me to view these lectures non the less, I am certain that there will be new information in them somewhere.

Please do not badger me on my very poor grammar and run on sentences (I am aware of my deficiency in this area).
ARM Assembly Language: For those that want: Simple, Powerful, Easy to learn, and Easy to debug.
User avatar
Posts: 1251
Joined: Thu Dec 15, 2011 6:39 am
Location: USA
by Jongoleur » Tue Jan 24, 2012 7:56 pm
libreuniverse said:


But there is one application I recommend to all computer users: a paint program. Any paint program. It teaches tons of computer skills at once, and can introduce computing before the student is even literate. So if you feel like applications are being "missed" by the RPi crowd, I don't think it's just coder bias. I think a large part of it is that nearly all of us are unable to run apps on the Pi yet. If that doesn't change when people actually have a Pi to use, Make the same protest again.


Many years ago, I did a post-grad cert in software engineering with an emphasis on Unix, with modules on C and C++, Formal Spec languages (eg Z), shell scripting, X Window programming and so on.  To put things in context, one of the modules concerned exploring the Internet using tools like Gopher, Veronica, FTP and ... ummmm it was a long time ago :-) .  We were also shown the latest thing, an early Mosaic web browser which ran slowly on the best HP workstation that the CompSci dept had to offer.

Anyhow, the assessment for the X Window module was to create a paint program.  It turned out to be not that difficult, though I wouldn't have let a novice loose on any of our creations.....

But yes, Paint is a super way to develop hand/eye co-ordination, introduce the basics of menu navigation and how to save and recall work.  And its fun too!
I'm just a bouncer, splatterers do it with more force.....
User avatar
Posts: 1180
Joined: Thu Aug 11, 2011 12:47 pm
Location: O'erlooking the sea, and all those effin windfarms...
by jamesh » Tue Jan 24, 2012 10:33 pm
DavidS said:



Please do not badger me on my very poor grammar and run on sentences (I am aware of my deficiency in this area).


I'd add modesty to to that list.
Soon to be unemployed software engineer currently specialising in camera drivers and frameworks, but can put mind to most embedded tasks. Got a job in N.Cambridge or surroundings? I'm interested!
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 11559
Joined: Sat Jul 30, 2011 7:41 pm