Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Alaskan high schools are looking to teach iPhone programming skills to their students.

Where would you start? More specifically:

  • What languages would you teach, first, second, third? Would you teach languages at all?
  • What programs would you teach with?
  • How would you start someone practicing programming skills?
  • Would you teach things like agile, scrum, or any work management system?

What critical skills would you start with?

Have you been trained by any teachers you really liked? Would you recommend any teachers or trainers?

share|improve this question

closed as not constructive by Mark Trapp Jan 24 '12 at 6:49

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
Hi Aron, welcome to Programmers! While this might make a great discussion topic, it's not a good fit for the Stack Exchange style of Q&A, which relies less on polling and more on specific expertise to solve specific problems to professional-level questions. –  user8 Jan 24 '12 at 6:51

1 Answer 1

Here's what I'd do:

What languages would you teach, first, second, third? Would you teach languages at all?

If you're going to be programming, obviously you're going to teach a language.

If you're looking to start a programming club, I'd consider something like Scratch or Alice, at least for a few weeks so you can teach some basic programming constructs (even things as simple as an if-statement or a loop can throw off real beginners, and these environments make it simpler).

After that, I'd start looking into languages like Python, Ruby, or Java. Following that, I'd try to mix in interesting languages like C, Erlang, Haskell, and maybe a dialect of Lisp. Of course, your other focus would be to learn important concepts in software engineering - not just the language.

Now, you mentioned iOS programming. If you're starting a club to develop apps for the iPhone, iPad, or otherwise iDevice, then the logical place to start is there - especially if that's what club members are expecting. You should visit the iOS Developer Center. I'll tell you now that the most popular language for developing applications is most likely Objective-C, and that developing applications to release in the app store is going to cost money (and potentially require the use of a Mac).

I would, for the reason I just mentioned, strongly urge you to choose another platform. Many kids are into game development, even if just for the computer. That's fun and it's probably significantly cheaper and easier to get started. Plus you probably have a much wider range of choice when it comes to language.

What programs would you teach with?

I would attempt to set up some sort of private online forum so people can communicate even when not meeting together. Beyond that, I'd stand in the front, and either on a whiteboard or a projected computer screen I'd type out some code. I might also have people purchase a book.

How would you start someone practicing programming skills?

You would start by writing applications! The best (or rather, only) way to get experience is to practice. You could challenge them and have them effectively write programs to a specification, or you could teach for a bit, then have them write their own programs.

Would you teach things like agile, scrum, or any work management system?

NO! That's boring office stuff that they can learn later. Maybe you can start to practice such concepts in a subtle manner, but I wouldn't spend any time teaching them.

The process flow should be a little bit like:

  1. Get them set up to start programming

  2. Teach them what they need to know about programming and whatever language they choose

  3. Have them start writing programs, help them with their first few (and even give them specifications or prompts of some sort) and then let them write their own (and consider letting them work in teams).

  4. Gradually introduce more concepts in software engineering and programming.

Eventually some will find they like it and will push themselves. Otherwise will find that they don't. The bottom line is you have to make it fun and you have to get them interested in programming, once you do that, all the other educational stuff will start falling in place.

I speak with experience, I started teaching myself from a BASIC game programming book, it didn't teach software engineering methodologies and sophisticated computer science concepts - it just taught me how to make games, and I think if my first experience with programming was with Sussman or Knuth back when I was in 9th grade (which was about when I started) I wouldn't have become a programmer.

Don't make it uneducational, but don't make it overly educational.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.