Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Bling Bling (or: Teaching Perl to Teenagers)

by Sprad (Hermit)
on Dec 27, 2010 at 05:42 UTC ( #879255=perlmeditation: print w/ replies, xml ) Need Help??

I'll be teaching an introductory programming course next year at the high school level. Most of my students will be tech-savvy and dreaming of becoming the next big game designer, but probably won't have any actual programming experience. I've found that with most students in this age group, their expectations don't quite line up with reality. They want to see things moving around on the screen pretty quickly, and when all they see is text, I lose their interest.

I'll be starting them out with Scratch (scratch.mit.edu, if you haven't seen it) to teach some of the basic concepts like variables and looping. For the inevitable move to a real language, I'd like to switch them to Perl, since that's where most of my experience is. I've worked several years doing automation and text processing tasks in Perl. But that brings me to my "text == yawn" dilemma.

What are some blingy things I can pull out to keep their attention? Something that they could write Pong or Pac-Man in would be great, but I know a lot of these graphic libraries have a ton of overhead. It'd be hard to drop total beginners into that sort of thing without a lot of frustration. I'm happy to sacrifice features, I just really want low overhead for simplicity's sake.

Any suggestions?

---
A fair fight is a sign of poor planning.

Comment on Bling Bling (or: Teaching Perl to Teenagers)
Re: Bling Bling (or: Teaching Perl to Teenagers)
by Anonymous Monk on Dec 27, 2010 at 07:28 UTC
Re: Bling Bling (or: Teaching Perl to Teenagers)
by ELISHEVA (Prior) on Dec 27, 2010 at 08:22 UTC

    Perl excels at web development. Perhaps have them plan, design, and write their own facebok application?

    Another possibility if the school has liability issues with anything related to social networking might be a google maps application. There are Perl API's for that as well and no limit to the coolness of things you can do with maps:

    Disclaimer: I haven't developed either sort of application (yet). These seemed like helpful links to me when I read through them, but I can't vouch for the up-to-date-ness or quality of these links and libraries beyond a look-see.

    Update: added link to geo coding modules.

Re: Bling Bling (or: Teaching Perl to Teenagers)
by BrowserUk (Pope) on Dec 27, 2010 at 09:20 UTC

    Sometimes Perl isn't the right tool.

    If your purpose is to enthuse the students with programming, starting them on Perl is a little like trying to excite them to music by having them play scales on a piano. It might be invaluable in the end, if they stick at it, but you'd be better off in the short term by sticking an electric guitar in their hands.

    To that end, something like Alice is more likely to grab their attention.

    (If you decide to download it, go here, the local download links run at about 15k/s only!)


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
      Wow, that actually looks really interesting!! Wish they made it easier to import 3D objects. ASE is okay but something more portable like the old Wavefront object format would be nicer (or Collada or FBX).

      Elda Taluta; Sarks Sark; Ark Arks

        I came across it whilst looking for a solution to my animated graphs problem.

        It's way too heavy for that purpose, but I was dead impressed with the tutorials. I haven't done anything more with it though.


        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.
      I've tried Alice twice before, but each time it's been met with rage and hostility. Scratch is very well-organized and intuitive, but Alice makes it hard to do even simple things. The first time a student asked about adding two numbers together, we had to resort to a Google search to find out how!

      It's very frustrating to know what you want to do, but not know how to express it.

      I was considering Java, C++, Python, and Perl. I dismissed Java and C++ for being too complex. And I know Perl better than Python, so that clinched it.

      Perl is huge, but you don't have to know all of it to do useful things. For the kind of projects we'll be doing, we probably won't even need regular expressions. So no need to cover those, for example.

      ---
      A fair fight is a sign of poor planning.

Re: Bling Bling (or: Teaching Perl to Teenagers)
by zentara (Archbishop) on Dec 27, 2010 at 13:35 UTC
Re: Bling Bling (or: Teaching Perl to Teenagers)
by eighty-one (Friar) on Dec 27, 2010 at 14:51 UTC

    As BrowserUK mentioned above, maybe Perl isn't the best tool for this particular job.

    I stated CS using C++. The next semester, in addition to the next intro class (taught in C++), I took a VB elective. The VB class was a TON of fun, and much easier to pay attention to and get engaged with.

    When I went to University, I decided to take the into classes again, as they were taught in Java and I thought it would be good to get exposed to that language. They had developed a simple graphics toolkit that had basic capabilities, designed to remove as much complexity as possible while still being useful in an Into to CS type class. This toolkit, as well as a bunch of assignments that require the use of graphics while still teaching CS fundamentals, are all on the University at Buffalo's CS website, under the class homepages of various professors.

    Although not Perl, this might meet your needs well - the graphical portion of the work is interesting and engaging (and the assignments are just plain fun), and it teaches good CS fundamentals. I think the licensing would allow you to use it for educational purposes - I haven't looked at it in quite a while but seem to remember that being the licensing terms. You should be able to find a copy and assignments if you look for the class homepages for CSE 115 and/or CSE 116 at the University at Buffalo's CSE site. Here's one professor's archive of class home pages to start with: http://www.cse.buffalo.edu/faculty/alphonce/MyWeb/Teaching/Courses/

Re: Bling Bling (or: Teaching Perl to Teenagers)
by Your Mother (Canon) on Dec 27, 2010 at 15:55 UTC

    Well, you actually can do some really cool graphics via Perl: http://sdl.perl.org/ and SDL. I have made furtive attempts to use it but it's difficult to get installed correctly and I didn't have a goal, just wanted to mess around. I do know the Perl bindings are supposed to be wicked fast and the kit can do amazing things.

Re: Bling Bling (or: Teaching Perl to Teenagers)
by andal (Friar) on Dec 29, 2010 at 10:31 UTC
    I've found that with most students in this age group, their expectations don't quite line up with reality.

    Hm. Shouldn't then your goal be to line up them with the reality? With the simple truth, that to create something original one has to be excited about the text of the program :)

      Absolutely. I address that in the first lesson. I go into detail about what the class isn't. No, we're not going to play games all day and get a grade for it. No, we're not going to make the next World of Warcraft. And so on.

      You'd be surprised how many sign up thinking it's some sort of Game Appreciation class.

      ---
      A fair fight is a sign of poor planning.

        I understand this part. Really, I'm just "meditating" on the subject, so sorry if it goes out of the line :)

        Somehow, even when I studied in the school myself, I was viewing the process as an interaction between the teacher and the student/pupil. For this interaction really to work, the student should want to get the knowledge and the teacher should want to share it. If at some point the teacher finds him/herself searching for a way to attract attention of his students, then something is wrong. Either the students or the teacher don't fit. And I don't imply that the teacher may simply be boring. I just say, that the goal of the teacher should be to find the best way to give knowledge. At the same time this should be done only for students who want to obtain the knowledge.

        I guess, real life can never match the ideal. In real life one should pay and should be paid. So things like winning the attention of students, or students going to lessons not knowing why they take them, these things are quite common. But then, the developers that don't understand what they are doing are also common. Doesn't it look connected? Shouldn't we then try to react to this, or just let it be?

        Again, this is nothing else but meditation, not even directly related to perl :)

Re: Bling Bling (or: Teaching Perl to Teenagers)
by luis.roca (Deacon) on Dec 29, 2010 at 21:20 UTC

    Thank you for posting this question. ++

    This hits home for me since my wife and I are working on a way to integrate programming into classrooms for a variety of subjects (specifically art and current events). The age and environments are different (grammar to middle school with the first program running at an after school program and the second possibly at a regional grammar school in Nicaragua.) But we still have to do similar things like lesson plans with either one big class project or smaller group/individual projects. Most importantly we have the common challenge of connecting with the kids, designing a program that's relevant to them.

    The challenge of keeping their interest is tough but I do think there is value in saying "Hey, you guys like World of Warcraft, Facebook or have a favorite iPhone app? Well each are created using these languages and this is what they look like..." They wont learn them then and there but for the ones who will eventually choose this as a calling, lifting OZ's curtain can have a big impact.

    What I've found is that Etoys seems to be more appropriate for kids up to 12. Scratch (which looks like you've settled on), Processing or even Squeak I think are pretty right on for high school students IMO. I LOVE ELISHEVA's suggestions and don't see why you couldn't break the class into smaller group projects that give them an opportunity to experiment with each of these tools and methods.

    Best of luck and please keep us posted on your experience teaching the class.

    P.S. I second your desire to see something like Scratch or Processing written in Perl.


    "...the adversities born of well-placed thoughts should be considered mercies rather than misfortunes." Don Quixote
Re: Bling Bling (or: Teaching Perl to Teenagers)
by pemungkah (Priest) on Dec 30, 2010 at 22:48 UTC
    I would suggest that if you want to get all interactive and graphical that Processing is a good alternative. There are a lot of good example programs that do cool stuff as starting points. Needs a decent Java install.

    If you want a little less function, but more portability, there's Processing.js, a Javascript/HTML5 implementation of Processing.

    Perl SDL can let you do some nice stuff (Frozen Bubble as the canonical "see, you can program games in Perl"), but not as simply as you can with Processing.

    An additional encouragement: Here's what a bunch of design students with no experience in programming at all were able to do in six hours, given a game to start with. They produced some amazing stuff from a Breakout game (with the "lost ball" function turned off).

    As long as the point is "show them that you can do cool stuff with programs", any of these would do. The game mod experiment might be particularly fun for everyone.

Re: Bling Bling (or: Teaching Perl to Teenagers)
by tospo (Hermit) on Jan 07, 2011 at 14:52 UTC

    One thing that I remember getting me pretty excited back in school when we learned PASCAL (a few years ago...) was to write a simple AI for a very simple board game, Connect Four in our case. It's ideal because you only need text input/output and have the real game set-up next to the computer. Connect Four is great because you need some strategy but the moves are very simple. The AI part isn't difficult - you just need to come up with some sort of scoring scheme for the situation on the board at the end of the move and, if there is time to make it more complex, maybe all possible outcomes of the opponents next move.

    Another thing I would suggest is screen scraping web sites - maybe some script that gatehrs information about the next show of a TV series?

Re: Bling Bling (or: Teaching Perl to Teenagers)
by gnusosa (Initiate) on Jan 28, 2011 at 20:47 UTC
    On my early years in high school, our teachers taught us to code, and got us hook with programming development with robots and graphs. We started with Java, we hated that first semester, but the end of such was rewarding seeing all the skills we had gathered were used on robots. The Lego Mindstorms with Java handle were the deal in that last weeks of that course. In our second semester, we saw Perl mixed with graphics, and as we keep progressing the interest for strings/text handle became something to care for. In the middle of that semester our teacher introduces us to CPAN and Perl modules. Since the course was intended for an introduction to OOP, it was perfect. After that, most of the alumni went to other fields, I moved to web development and sysadmin, but I've read from some who even use Perl for their taxes.
Re: Bling Bling (or: Teaching Perl to Teenagers)
by blahblahblah (Priest) on Feb 18, 2011 at 16:39 UTC
    text == yawn??

    I think text(ing) is a major part of teens' lives. How about having them write apps that use an SMS interface?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlmeditation [id://879255]
Approved by ELISHEVA
Front-paged by Gavin
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (16)
As of 2014-10-20 11:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (75 votes), past polls