Author Topic: How can I teach a bright person, with no programming experience, how to program?  (Read 873 times)

0 Members and 1 Guest are viewing this topic.

Offline geXXos

  • Royal Highness
  • ****
  • Posts: 646
  • Cookies: 178
    • View Profile
I found this answer at  programmers.stackexchange, i found it quite interesting so here it is.


How can I teach a bright person, with no programming experience, how to program?




Offline Xires

  • Noob Eater
  • Administrator
  • Knight
  • *
  • Posts: 379
  • Cookies: 149
    • View Profile
    • Feed The Trolls - Xires
Usually, I prefer to start with an overview explanation of the responsibilities of hardware vs the responsibilities of software.  Then, typically, I'll briefly go over the structure of the software environment and how services are provided.  Sometimes it's useful to make small notes about differences between different platforms & architectures.  To actually begin the programming lessons, I try to start with binary and move into conversions, bitwise operations, basic arithmetic, etc.  Moving forward, I cover basic CPU & memory structure and the execution process.  Next begins a quick overview of assembly, minus syntax.  The purpose is primarily to go over the important sections, e.g. .data, .code, .text, etc.  Afterward, I talk about the compilation process and provide a few interactive examples.  Finally, I begin teaching the C language.

I find this process & method works phenomenally well with the majority of people who are actually willing to learn.  Covering the early foundation information means that there are far fewer surprises when getting to specific sections like pointers, pointer arithmetic, structures & unions, etc.  As well, the more 'complete' foundation lets them move quickly onto any other language that they desire with ease.

Hope this helps.  Let me know if there are any other questions.
-Xires

Offline geXXos

  • Royal Highness
  • ****
  • Posts: 646
  • Cookies: 178
    • View Profile

Thanks for your input Xires.
Quote
people who are actually willing to learn.


Yes this is the most important trait that someone must have, i must admit i found a bit intimidating the answer from stackexchange, i will agree with this,
Quote
if three books is a "daunting list" than you might be underestimating what it is that programmers do
.

All though i am far away to be considered a apprentice programmer or student, and all though i fail to understand these methods, i like your approach, "start with an overview explanation of the responsibilities of hardware vs the responsibilities of software" i believe this is the best way. To build a strong basis on what is what and how it works, etc.

Thanks

Offline kenjoe41

  • Symphorophiliac Programmer
  • Administrator
  • Baron
  • *
  • Posts: 990
  • Cookies: 224
    • View Profile
Quote
I would ask him to read Edgser Dijkstra's |On the cruelty of really teaching computing science|, get him to learn about the reason for that article, so he can be wary about the possible brain damage that can be inflicted on him by the generally accepted ways of teaching programming
hahaha, this guy was pretty cruel. who scares a non-programmer like that and expects him to concetrate and learn?
 
If you can't explain it to a 6 year old, you don't understand it yourself.
http://upload.alpha.evilzone.org/index.php?page=img&img=GwkGGneGR7Pl222zVGmNTjerkhkYNGtBuiYXkpyNv4ScOAWQu0-Y8[<NgGw/hsq]>EvbQrOrousk[/img]

Offline vezzy

  • Royal Highness
  • ****
  • Posts: 771
  • Cookies: 172
    • View Profile
Actually it's fairly important to instill that kind of information simply to get them into the proper mentality.

It's what makes the difference between a programmer and a code monkey who has been mechanically instructed to churn out lines of Java, .NET or whatever without understanding what's going on behind the scenes or the culture behind their craft.

Sadly for many people programming has simply become a nauseating process of writing out abstracted mnemonics just to earn their bread, with no real passion or comprehension for it. People who want to get into programming pick up some half-assed "Java for Dummies" or "Teach Yourself Python in 24 Hours" book which teaches them nothing but how to operate a high-level intermediary, basically. They will likely never experience the profound thoughts of computer scientists or even have the joy to code in a programming language that uses a more obscure paradigm, just to name a couple of things.

Higher education only worsens this issue. Which is why books like Code by Charles Petzold should be mandatory reading for students pursuing computer science, and recommended much more frequently to newcomers.

That said, if you're just a hobbyist or a person who wants to hack together code for their personal use/satisfaction, or as a tool for research, then this may not be such a high priority. Depends on your aspirations. Personally I fall into the "hobbyist/personal use coder" category, but I've still taken some time to read a bit on how things go deeper.
Quote from: Dippy hippy
Just brushing though. I will be semi active mainly came to find a HQ botnet, like THOR or just any p2p botnet

Offline geXXos

  • Royal Highness
  • ****
  • Posts: 646
  • Cookies: 178
    • View Profile
Nice write up vezzy, i don't like this characterization " code monkey " but i get your point.

Offline namespace7

  • Sir
  • ***
  • Posts: 561
  • Cookies: 115
  • My Brother's Keeper
    • View Profile
I totally agree with Xires' mentality about teaching programming.
I think starting with the fundamentals is the best way, at least for serious people who want to get into this stuff for longer term and are willing to invest time and effort.
"A programmer’s greatest enemy isn’t the tools or the boss or the artists or the design or the legacy code or the third party code or the API or the OS. A programmer’s greatest enemy is getting stuck.
Therefore a crucial step to becoming a better programmer is learning how to avoid getting stuck, to recognize when you’re stuck, and to get unstuck." -Jeff Wofford