Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie
Hi there,
There is an issue with role permissions that is being worked on at the moment.
If you are having trouble with access or permissions on regional forums please post here to get access: https://www.boards.ie/discussion/2058365403/you-do-not-have-permission-for-that#latest

Teaching programming

  • 12-07-2012 7:34pm
    #1
    Registered Users, Registered Users 2 Posts: 4,475 ✭✭✭


    My nephew (going into TY) has expressed an interest in learning some stuff about "programming", but I'm not really sure what to do with him. I think he needs to learn the basics of OOP, maybe get into dot net and frameworks, none of which can really be taught in my mind, it's a case of trail and error most of the time, right?

    I can't even recommend him a good book, as I've been using PHP pretty much exclusively for the last 10 years (I could teach him that, but I don't think it's the best language to be starting out with) and all PHP documentation is out there in the wild.

    Any tips on how to approach this without turning him off development completely?


Comments

  • Registered Users, Registered Users 2 Posts: 1,931 ✭✭✭PrzemoF


    If he's starting from level _zero_ I'd start with LOGO and the turtle. It'll give him an idea how commands work, hot to get from a single command to function/procedure, what is a loop. If can be also visually attractive while staying very simple.

    http://www.sonic.net/~nbs/webturtle/
    http://www.mathplayground.com/mathprogramming.html

    Push him towards open source (linux) to avoid question: "how does it work?" and answer "It's part of a dll library, so we can't look inside, because there is no source code" ;)


    What's TY?


  • Registered Users, Registered Users 2 Posts: 5,246 ✭✭✭conor.hogan.2


    Transition year I imagine.

    I agree with the above would recommend a language like C or Python, but LOGO looks interesting. Udacity and Coursera offer good structured learning for free online.


  • Registered Users, Registered Users 2 Posts: 4,475 ✭✭✭corblimey


    PrzemoF wrote: »
    What's TY?
    Transition Year.

    Tks for the links, that's exactly the sort of thing I need to explain to him - I hope he doesn't think he'll be able to go from Logo to developing the next Halo, though :D (well I guess technically, he may, but it's a long reach)


  • Registered Users, Registered Users 2 Posts: 16,414 ✭✭✭✭Trojan


    I'd start him at a very high level where he can get stuff done quickly, and then introduce him to lower level stuff when he wants to tweak things. Gets a quick win which is encouraging, and keeps the motivation up.


  • Registered Users, Registered Users 2 Posts: 2,040 ✭✭✭Colonel Panic


    Always Python, never PHP. I would skirt around OOP too.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 22,584 ✭✭✭✭Steve


    Download and install the free version of MS visual studio. There are some great beginners tutorials on the web and it's all .net based. Working through them is a great way to pick up the basics.

    Only question is whether to start in VB.net or C#.

    For an absolute newbie, I'd say VB is easier to start with - there is practically no advantage to learning one over the other nowadays in terms of what can be done with the language or execution speed as they both compile to the same intermediate runtime.


  • Registered Users, Registered Users 2 Posts: 8,229 ✭✭✭LeinsterDub


    To be honest I would avoid the open source stuff like c and pyton. You want something that doesn't get to hung up on adding libraries or doesn't have much in the way of a easy to create front end or is not OO. Dot net is a simple install and it's all there


  • Registered Users, Registered Users 2 Posts: 68 ✭✭Raladic


    If you want him to start with the basics - I'd suggest to give him Kodu and let him play around.
    It's a visual programming language to create games which can run on the PC and Xbox and it's easy to get started, so he can learn the basics about loops, if's and so on.
    That way he can get a feel for how programming works in a fun and interactive way and once he has the basics from that, you can let him have a go at a normal IDE.

    http://fuse.microsoft.com/page/kodu


  • Registered Users, Registered Users 2 Posts: 7,468 ✭✭✭Evil Phil


    What about Alice: http://www.alice.org/

    Seems ideal.


  • Moderators, Technology & Internet Moderators Posts: 1,336 Mod ✭✭✭✭croo


    Scratch was developed to help teach the skills needed for software development. http://info.scratch.mit.edu/About_Scratch

    It doesn't specifically teach you a programming language but rather the conceptual thing that is required by programmers.

    It never mentions it (or other technical terms) but it is OO and when it becomes too easy the pupil can move into the smalltalk it was developed in. Long ago I worked for AT&T and when they were introducing c++ to their development teams they sent us all on smalltalk courses - because you cannot code smalltalk without using objects & messaging!


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 1,931 ✭✭✭PrzemoF


    To be honest I would avoid the open source stuff like c and pyton. You want something that doesn't get to hung up on adding libraries or doesn't have much in the way of a easy to create front end or is not OO. Dot net is a simple install and it's all there
    It's a shocking opinion and I strongly disagree.


  • Registered Users, Registered Users 2 Posts: 4,475 ✭✭✭corblimey


    Tks everyone, looks like I've got more choices there than I know what to do with. I'd forgotten about the free version of VS, but Alice and Scratch look interesting too. Looks like I've got some learnin' to do myself first :)


  • Registered Users, Registered Users 2 Posts: 1,144 ✭✭✭Ballyv24


    Very basic I know, but I think HTML tutorials are a great introduction into programming.. write some html, save it, view it.. if I make this change.. save it, refresh..

    While I would not consider writing HTML as programming, it is a quick way to see if someone enjoys sitting down at a computer "coding".

    If they enjoy creating sites with HTML, then I think they would be more inclined to take on some proper programming language..

    Of course it all depends on the person


  • Registered Users, Registered Users 2 Posts: 22,584 ✭✭✭✭Steve


    Ballyv24 wrote: »
    Very basic I know, but I think HTML tutorials are a great introduction into programming.. write some html, save it, view it.. if I make this change.. save it, refresh..

    While I would not consider writing HTML as programming, it is a quick way to see if someone enjoys sitting down at a computer "coding".

    If they enjoy creating sites with HTML, then I think they would be more inclined to take on some proper programming language..

    Of course it all depends on the person
    Coming from the point of view of writing .net apps, and knowing that once you get the code right they do exactly what you tell them to do, html can be a pure bitch.

    I've often tried to explain the difference between coding an app and coding a webpage as this:

    An app looks the same and does the same thing no matter who is using it.

    A web page might look great in Chrome but not in FF. Some features may not work in safari or IE. What tradeoff to you make when considering a really cool feature that works in all modern browsers but doesn't in IE7? (which unfortunately is still a significant enough userbase).

    html & css is more of a "suggest what the browser should do" language more than than a pure programming language which, while it seems oh so simple to code, it's actually infinitely more complex to get right for every end user.


  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    If cost wasn't an issue, I'd say get a lego mindstorms kit.

    We can argue the pros and cons of various methodologies and languages and environments and pedagogies here for months without any kind of progress whatsoever; but if learning isn't fun, learning doesn't occur, at least not in the beginning. And there's so much room to expand the mindstorms controllers that you can start off "programming" by connecting flowchart blocks in a graphical environment and finish off doing assembly and C with cross-compilers. (Hint; this is why we used them in TCD to teach robotics and low-level coding in various courses).

    They're cheap (relatively - you're buying a computer here, not duplo bricks, so it is going to be a three-figure sum); they're widely available; they work right out of the box on day one; are lots of fun to play with; are incredibly expandable in terms of how you program them; and they're lego. Granted, you could do this with arduinos or a dozen other platforms, but lego should be a bit easier if neither of you know programming.


  • Registered Users, Registered Users 2 Posts: 8,229 ✭✭✭LeinsterDub


    PrzemoF wrote: »
    It's a shocking opinion and I strongly disagree.
    I've no problem with the above mentioned in the real world. My only issue with them at least in my opinion is the set up is a pain and the lack of a quick and easy gui I found off putting when I was just starting out.


  • Registered Users, Registered Users 2 Posts: 1,082 ✭✭✭Feathers


    Processing hands-down for me. It's a language specifically designed to get non-devs involved in programming — originally graphic artists who wanted to do computational stuff.

    It's essentially Java under the hood, but has simplified it to two functions — setup (run once on initialisation) and loop (run continuously for the programme duration). Comes with it's own light-weight IDE, but you can also use it in Eclipse, etc once you're comfortable with it.

    Lots of libraries, support and example programmes — image manipulation, audio, text, webcam/video, 3D, flocking algorithms — you name it.

    Can export programmes as Java programmes, Android or HTML/JS/WebGL.


  • Registered Users, Registered Users 2 Posts: 851 ✭✭✭TonyStark


    corblimey wrote: »
    My nephew (going into TY) has expressed an interest in learning some stuff about "programming", but I'm not really sure what to do with him. I think he needs to learn the basics of OOP, maybe get into dot net and frameworks, none of which can really be taught in my mind, it's a case of trail and error most of the time, right?

    I can't even recommend him a good book, as I've been using PHP pretty much exclusively for the last 10 years (I could teach him that, but I don't think it's the best language to be starting out with) and all PHP documentation is out there in the wild.

    Any tips on how to approach this without turning him off development completely?

    A raspberrypi sounds like a good starter machine for your nephew. It's sorta hip and cool at the moment. He can mess around with linux, learn a little python etc. Would be a good start until he finds his feet.


  • Registered Users, Registered Users 2 Posts: 1,686 ✭✭✭RealistSpy


    From my own experience. I started coding in Transition year before I knew what branch of programming I wanted as a career.

    In order
    I started with html using dreamweaver ---> Couldn't get into it
    Python ----> It was very new and I didn't know oop, got bored of it
    VB6
    > This got me into programming for the fact that I can just design the UI, double click and code

    So I would recommend any .Net language (c#) but I think you need to find out what branch the person want. Web or Desktop.


  • Registered Users, Registered Users 2 Posts: 1,023 ✭✭✭[CrimsonGhost]


    See if there is a coderdojo (http://coderdojo.com) near him and have him head along to that. I was mentoring at the D15 one before the summer break and would highly recommend it for any kids interested in computers/programming.

    Surprised it hasn't already been mentioned in the thread, or if it has I've missed it.


  • Advertisement
  • Closed Accounts Posts: 27,857 ✭✭✭✭Dave!


    +1 for CoderDojo, mentored one myself and it's a good way to learn, if the mentors know what they're talking about! :o


  • Registered Users, Registered Users 2 Posts: 4,475 ✭✭✭corblimey


    Continues to be a good read, tks all. That CoderDojo thing looks interesting, but they state it's mostly for 8-14 year olds. Would a 15 year old (16 in 3 months) be bored, what sort of stuff do they do? If it's any good, I'd nearly offer myself as a mentor...

    Mindstorms looks great, and is only a bit expensive, but it's very hard to buy, either online or in b+m. I'd have to go the eBay route which I just wouldn't trust with something like this - you'd build the whole naffing thing and then find that some little bit was missing or burned out or broken.

    I've downloaded some of the other dev apps, so at least he'll have a selection

    However, the more I think about it, the more I need him to tell me what sort of 'programming' he wants to get into. In my mind, there's proper applications, web stuff and then iPhone and Android apps and whatnot. If I keep it to those 3 simple options, I can then explore the various selections within those areas. There's no point in teaching him HTML if he wants to create the next Angry Birds.


  • Registered Users, Registered Users 2 Posts: 1,082 ✭✭✭Feathers


    corblimey wrote: »
    In my mind, there's proper applications, web stuff and then iPhone and Android apps and whatnot. If I keep it to those 3 simple options, I can then explore the various selections within those areas. There's no point in teaching him HTML if he wants to create the next Angry Birds.

    *ahem* http://chrome.angrybirds.com ;)

    I would say that these 3 areas are, if not converging, crossing over a lot more than they used. Especially if you're talking about by the time a 15 year-old would be in the profession.


  • Registered Users, Registered Users 2 Posts: 3,323 ✭✭✭padraig_f


    corblimey wrote: »
    However, the more I think about it, the more I need him to tell me what sort of 'programming' he wants to get into. In my mind, there's proper applications, web stuff and then iPhone and Android apps and whatnot. If I keep it to those 3 simple options, I can then explore the various selections within those areas. There's no point in teaching him HTML if he wants to create the next Angry Birds.

    Yes, this is the most important thing, what does he want to make? Necessity is the mother of invention and all that. A lot of people initially answer this question with 'a game', but I think games are not usually a great place to start, because even a simple game is a big project. Also there's a lot of non-programming work associated with games: graphics, game design, level design. So I would discourage games to start off, apps are much easier to complete than games.

    When learning, you're much better with small projects that you can reasonably complete. There are other benefits with deciding first what you want to make:
    - You'll be motivated to complete it because you want to use it.
    - When it's built you'll have something useful!

    So start with that question: what do you want to make?


  • Closed Accounts Posts: 3,981 ✭✭✭[-0-]


    LISP. If he starts out with that, he'll be an amazing coder.


  • Registered Users, Registered Users 2 Posts: 92 ✭✭jgh_


    I've no problem with the above mentioned in the real world. My only issue with them at least in my opinion is the set up is a pain and the lack of a quick and easy gui I found off putting when I was just starting out.

    I hate to be an old man about it, but when I got into programming as a kid I had no one to hold my hand through the process and I learned a great deal by doing things the hard way without a quick and easy gui.



    To the OP: The fact of the matter is if the kid has the drive to do it, he will do it one way or another. Just put a computer, any computer, in front of his face and let him sit there for hours and hours and hours and tinker.


  • Registered Users, Registered Users 2 Posts: 9,560 ✭✭✭DublinWriter


    This discussion is like someone looking for advice on how to become a mechanic and people advising him what particular car he should learn on without first learning the basic principles of the internal combustion engine.

    In my day formal programming training started off by introducing the two essential skills of 'pseudocoding' and 'truth tables' before ever tackling a specific language.

    ...and whoever recommended HTML should go wash their mouth out with soap.


  • Registered Users, Registered Users 2 Posts: 40,038 ✭✭✭✭Sparks


    In my day, formal programming training started in college on a degree course; but I started programming a few years before that poking about with stuff for fun. And if I hadn't done that, I'd probably be some other kind of engineer today, because it's the poking about for fun that lets you know this is something you could do as a profession.

    Hence the recommendation with the lego...


  • Registered Users, Registered Users 2 Posts: 22,584 ✭✭✭✭Steve


    Sparks wrote: »
    In my day, formal programming training started .....

    This has the makings of of a monty Python sketch..:D

    Lego!!?? you were lucky.. In MY day we didn't even have computers to program.. was all done with relays and bits of wire...



  • Advertisement
  • Registered Users, Registered Users 2 Posts: 1,082 ✭✭✭Feathers


    jgh_ wrote: »
    I hate to be an old man about it, but when I got into programming as a kid I had no one to hold my hand through the process and I learned a great deal by doing things the hard way without a quick and easy gui.

    To the OP: The fact of the matter is if the kid has the drive to do it, he will do it one way or another. Just put a computer, any computer, in front of his face and let him sit there for hours and hours and hours and tinker.

    Disagree with this to be honest. Someone said something similar to me in work recently — they got into programming because they wanted their computer to do XYZ in a programme that it didn't currently & because they'd access to the source, they tinkered with it themselves.

    I don't know if anyone will go into programming from cold that way anymore (you might do this stuff when already a programmer to make something better, but not going from scratch). If you want to do anything on a computer nowadays, I doubt you'll need to learn to programme to get it done.

    If the kid isn't sure if he wants to get into programming or not, I think you're better off showing him something that he can get 'quick wins' on to hook him in.

    Again, like Processing that I linked to above — comes with loads of examples that can be hacked. There's one that will render a video feed from your webcam as streamed ascii art. Straight off, it's cool to play around with & then you can start tinkering — reducing the character set used, font-size; messing with opacity; see can you make that interactive via the keyboard; don't know what this line does, what happens if I delete it?

    If someone has no coding background, they're more likely to get interested through something higher level that they can see results in earlier, than learning C from scratch, IMO.


  • Registered Users, Registered Users 2 Posts: 22,584 ✭✭✭✭Steve


    Feathers wrote: »
    Disagree with this to be honest. Someone said something similar to me in work recently — they got into programming because they wanted their computer to do XYZ in a programme that it didn't currently & because they'd access to the source, they tinkered with it themselves.

    I don't know if anyone will go into programming from cold that way anymore (you might do this stuff when already a programmer to make something better, but not going from scratch). If you want to do anything on a computer nowadays, I doubt you'll need to learn to programme to get it done.

    If the kid isn't sure if he wants to get into programming or not, I think you're better off showing him something that he can get 'quick wins' on to hook him in.

    Again, like Processing that I linked to above — comes with loads of examples that can be hacked. There's one that will render a video feed from your webcam as streamed ascii art. Straight off, it's cool to play around with & then you can start tinkering — reducing the character set used, font-size; messing with opacity; see can you make that interactive via the keyboard; don't know what this line does, what happens if I delete it?

    If someone has no coding background, they're more likely to get interested through something higher level that they can see results in earlier, than learning C from scratch, IMO.
    Whilst that's a good way to foster interest in programming, it's an extremely bad way to learn IMO.
    I'm sure everyone here is guilty of using Google to write code at some point, however, unless you understand the basic fundamentals behind it then tinkering blindly to see what breaks only leads to the dark side.
    I speak from experience there where clients insisted on full source code as part of the contract and then expect me to be able to diagnose /fix bugs (caused by over-enthusiastic yet well intentioned tinkering) without telling me that they changed something.

    Point is, if you really want to learn then the only way to do so is start from scratch. Yes, use the internet for assistance but make sure you understand what it is you are copy pasta - otherwise it's of no use. :)


  • Moderators, Society & Culture Moderators Posts: 9,689 Mod ✭✭✭✭stevenmu


    Small Basic is a pretty cool learning tool. There's a bunch of tutorials, it supports simple Logo turtle style stuff and more advanced graphical stuff (while still being simple to do), it comes with a light IDE that's easy to use but useful too, and you can "publish" the programs to run on a website to share them.


  • Registered Users, Registered Users 2 Posts: 2,055 ✭✭✭Zipppy


    BASIC or C will get anyone off to a START in programming CONCEPTS....no need for visual programming at the outset .. concepts are required if one is to move on ....


  • Registered Users, Registered Users 2 Posts: 42 Marina-anseo


    I recommend the Head First books, they don't go into huge detail but they keep your attention and he will have a working program at the end. He can then use internet sources to understand how to tweak things.


  • Registered Users, Registered Users 2 Posts: 1,082 ✭✭✭Feathers


    Steve wrote: »
    Whilst that's a good way to foster interest in programming, it's an extremely bad way to learn IMO.
    I'm sure everyone here is guilty of using Google to write code at some point, however, unless you understand the basic fundamentals behind it then tinkering blindly to see what breaks only leads to the dark side.
    I speak from experience there where clients insisted on full source code as part of the contract and then expect me to be able to diagnose /fix bugs (caused by over-enthusiastic yet well intentioned tinkering) without telling me that they changed something.

    Point is, if you really want to learn then the only way to do so is start from scratch. Yes, use the internet for assistance but make sure you understand what it is you are copy pasta - otherwise it's of no use. :)

    Definitely agree with the above 100% & rereading the thread, the OP does say he wants to teach the kid programming. (Not sure why, just read it as talking about getting someone interested to see if they want to take it further, rather than properly teaching :) )


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 2,021 ✭✭✭ChRoMe


    Zipppy wrote: »
    BASIC or C will get anyone off to a START in programming CONCEPTS....no need for visual programming at the outset .. concepts are required if one is to move on ....

    You would really have to hate the person to start them off in C!


Advertisement