35

I have teens in my classroom who want elite hacker status but complain about doing programming exercises outside of class. >.<

I explain to them that learning to code takes a lot of practice and can be frustrating at first. Some still went to the dean complaining that my class is tough. I work at a private school where open communication is encouraged and social justice is a thing.

So, I'm over here like "How do I reach these kids?"

I'm optimistic and I try different approaches to teaching and learning. Some stuff has worked. A lot haven't.

I figure I'd ask here: Does anyone have a suggestion for any creative programming exercises/projects that are beginner-friendly, legal, and hacker-ish? (I teach intro to Java.)

Comments
  • 8
    Teach sql and sql injection and then how to protect from it I java.

    If they want to be "hackers" teach them how to. That kinda worked for some in my class.
  • 5
    Take a look at "+Ma's reversing", see if it's something that you could maybe use:

    http://3564020356.org

    I haven't gotten far, but it's been years since I tried.

    Good fun either way.

    (Please don't try to kill that server, as that's never been the point)
  • 4
    @sleepyDevHead: not to be that cranky old guy (I'm only 27) but I don't think the problem is that they are unmotivated but are undisciplined.

    I'd suggest the solution to a lack of discipline is to assign very small, manageable assignments every night. This will ensure they actually get into the **habit** of programming and out of the mindset that programming is something they can do every few weeks right before a project is due.

    As an analogy, I'd suggest I never met a good music teacher who didn't make their kids practice their scales. Good luck!!
  • 2
    Rereading your post, I'd suggest also *showing* them things in addition to actually assigning them... A) there's less liability b) in an intro course almost nothing is going to capture their imagination, but it might help for them to see what they can accomplish in a year or two
  • 0
    @legobrainiac that sounds like fun! I'd definitely try that with advance students. SQL is out of the scope of this class though. Right now, they're still trying to wrap their heads around loops.
  • 2
    @ReturnVoid I do encourage practicing regularly outside of class. Unfortunately, I think it IS a lack of motivation and discipline but I'm trying to shake things up and grab their attention with demos, bigger picture stuff, etc. I'm running out of material and ideas. I feel more like a cheerleader and I'm kinda okay with that for now, since it fits the philosophy of the school.
  • 2
    Maybe they could crash the computer with a loop?
  • 1
    @sleepyDevHead Intro Java is always going to put people to sleep tbh... I would try bringing in some guest speakers, if possible, to help reiterate what you're telling them in class (it's sort of hard to see intuitively what the benefit of polymorphism is, per she, but perhaps having a programmer come in from the outside might lend you some extra credibility... I recall thinking that most of my teachers were out of touch with the 'real world', but looking back, I don't think that was true)
  • 5
    Maybe mention that Minecraft is a Java program initially written by one guy and now it's the best selling pc game ever.

    You can also do logic gates and stuff like that in the game; maybe go meta with the course a little.
  • 0
  • 1
    Well in my opinion Make their sheets more practical and story based on a hacker, it will me make them think on the problems that hackers face in real world .
  • 4
    They are doing loops and getting cocky, or they don't see the practicality of what they are doing? Tell them to solve the Towers of Hanoi with loops.

    Then blow their minds with the recursive solution.

    Or run through the Google tensor flow tutorials. That should prove inspirational.
  • 0
    @nickhh TBH, I think it's not understanding the practicality of hard work but I'd like to somehow leverage the interesting nature of programming to encourage work. I'd teach them python but AP CS is in Java. I have much compassion and hope to convince them that their interest in learning to code is awesome. I'll definitely consider your suggestions. :)
  • 0
    @Lisanna lol I've seen this! Soo funny! :D
  • 0
    Well, in my opinion. Don't push at first. Teach them how to code basic stuff. Than recall what real programmers have fun with? I suggest hackathon and open-sourcing their projects. Collaboration is real hacking...
  • 0
    You can make a topic like loops a physical/practical task. I just randomly came up with this on the train. Get two students to come to the front. Get one student who is called the iterator who counts within a given range you set. Then get the other student to do something I thought of them doing push-ups. Mention how the teen doing the push ups is doing the same set of instructions as the other person counts. This is a basic for loop. Another issue is that they may just be afraid of the syntax, maybe write the loop in structured English and then move to Java and mention how it's doing the same thing. It's funny because I teach kids this 6-17 and they get it but then again I'm sitting next to them and asking their questions as I teach.
  • 0
    How about taking a more... Zen approach to it? In order to be the best hackers they need to be laser focused. Yeah the exercises could be made more engaging but the underlying problem is to have them do them.

    Hacking browsers for bug bounties can be quite a reasonably paid job but those doing it often have to write code to demonstrate how they did it etc, perhaps a lesson on how this part of the industry and the importance of knowing how to code?

    So a gentle myth that hackers are super focused Zen masters that are only good because they know how to code in many languages and a lesson on the latest chrome exploits and how a particular (trivial) exploit was found might tie the whole thing together?
  • 2
    A few thoughts.
    1. The Stanford intro to Java course I saw (CS106A) used a game situation called Karel where most of the functionality was abstracted, and students just had to use the methods to make this game character move and stuff. It was pretty cool, so maybe you could give them "fun" assignments where something cool is entirely implemented, and they use that to learn the basics of loops and all that

    2. A college seminar I was organizing once found great success in giving students a chocolate bar when they do well. Bribery, basically. I've seen online courses also handing out pillows and candy, maybe you could find some economic bribe
  • 2
    Additional thought, if your class is like most classes I know, then there are a few select students who are either extremely good at programming already or are super quick to grasp concepts. Maybe you can take these students' help to create the abstracted thing I spoke of, or modify something like Karel. Not sure how well this will go over with the other students, but it'll make these ones feel less bored or like "gods among mortals" (which is a situation I see a lot)
  • 0
    Yes I have I a suggestion, wonder if you ever looked at havard cs50 program it's awesome they have AP claases designed for teachers as well.
    The level of study material is higher but obviously you would get to know the approach hingy.
    I myself enjoyed those lectures the professor is named 'David j malan'. He's a live wire.
  • 1
    They sound like the students in my computer eng course (in high school, 16) . They're the type to change the HTML code on a webpage using the inspect element and call themselves hackers. I also hate how they belittle people who ask questions. I've been programming for 3 years meanwhile these students don't know what str stands for and when we do networking and I ask about attacks, they act like experts by yelling out things like "DDOS!"
  • 1
    My advice: teach them that there are days, as a programmer, when you'll ask urself "what the actual hell am I doing" because its not fun or exciting all the time. As with math, art or anything that you have a passion for.

    Also teach them more about networking. Its really easy for them to pick up how to exploit networks once you start explaining it. (I found this to be the case with me and my classmate) plus its more useful than code injections because they're more likely to be able to do something really great (injections are protected against in like 99% of websites.
Add Comment