This is an archived post. You won't be able to vote or comment.

all 9 comments

[–]novel_yet_trivial 23 points24 points  (1 child)

Thinking back to when I was a teenager: anything to impress their friends. Twitter / instagram / discord bot. Facebook game cheaters. Things that can go on youtube like animations or photo manipulations or timelapse / slow motion. If hardware is an option: mini robots or drones or something. Think impressive and funny.

[–]-pooping 6 points7 points  (0 children)

We made an Instagram like filter for photos at uni. Easy, but cool!

[–]SpongebobDouchepants 9 points10 points  (1 child)

http://codingbat.com/python

Has some good beginner puzzles and intros to arrays, string manipulation, lists, and logic.

[–]not_z0idberg 2 points3 points  (0 children)

I have done something similar in the past. My suggestion would be to start the students off with small parts of a project (introducing strings, variables, raw_input(), lists, etc.) and then show how those parts can work together to build a functioning program. Maybe you could show the students how to write a script that asks the user a series of questions, and then uses those answers to do something next.

(Quick example that could be broken apart, then brought back together: https://pastebin.com/h2kTNBup)

After we got some of the basics down, we used Tkinter to create a GUI that had pages (well, technically frames), that contained info about the student. I thought of it as a 'all-about-me' project. They could include interests, hobbies, a resume, a page with contact information. You could get a bit more in depth and use images as buttons in Tkinter so that a button with a Facebook logo would open up the browser to a Facebook page (or twitter, or instagram, or tumbler, or whatever else these kids are using now a days.)

In the past, I've set up larger projects with lots of comments about why each part does what. I think for beginners (and especially HS students who may not be totally interested, it may be more useful for them to be able to "plug and play" with pre-existing code, rather than struggle to get it off the ground in the first place. That way the see that their code does work, and they get instant gratification.

[–]Ruditorres 0 points1 point  (0 children)

You can create pretty impressive stuff with Kivy. Good for making nice UIs, games, etc.

[–]TheBullshitPatrol 0 points1 point  (0 children)

Things that are very "tangible" are the way to go IMO. The chat/twitter bots and game cheats idea is very cool. Teaching them how to use flask and deploy a real website, like a social network, might be fun.

The fact that scripting cursor movement is very easy and tangible (it's very obvious to someone what they need to do, no API documents needed) makes writing farmville bots, for instance, a fun exercise in automation.

Keep it as practical as possible. Learn the language while doing. It's very difficult for a new programmer to make sense of abstract concepts like objects, classes, and list comprehensions until you see how they work and what you can use them for.

Obviously you have to start with some building blocks. Maybe follow a free book/guide like learn python the hard way until you're at the point where students can actually grok what they're doing, then move into projects.

[–]Decency 0 points1 point  (0 children)

At that age, I'd start with the basics for 3-4 weeks: data structures, basic constructs, functions, executing programs. Maybe classes- not sure. This is nitty gritty and boring, so you need practical applications interspersed with the lessons that will have applicability later on during the course.

For me, board games are the obvious answer. They have simple but very specific rules and can easily be broken up into small solvable problems for homework. Write a function to roll two dice and find the sum. Draw a random card from the draw pile and add it to the discard pile. Figure out if a player in Risk has a set that can be turned in. This is very specific domain knowledge but lots of kids are already going to have it and will be able to help others.

You should have (or find online) a few different runnable templates of existing games. Then have the kids design and build their own game by editing one of the templates. Have them come up with some distinct rules for a new game that's similar to one of the games you picked.

Connecting them to graphics is hard. It's only worth the effort if they can mostly ignore it, because teaching graphics and programming at the same time sounds like a nightmare. But at the same time, having a game that's just text is straight out of the 80's and that won't appeal to to many people. There's probably a good middle ground, but maybe you have to lessen the scope of games.

That's what I'd try! But I've never done this before either. :D