In our school we have a largely defunct ComSci club. I am planning to try and bring this club into having a presence at our school. To do this I will need to increase the amount of people in our club. This means making this club appealing to non programmers.
my ideas for doing this are:
-actually teaching how to program
-having fun activities related to programming
I need some tips on how to actually teach it effectively to new programmers. E.g. what langauge to use, methods, etc.
Also any tips on how to make the club fun, as well making it entertaining for more experienced programmers, or any other tips will be largely appreciated. xD
At least in my mind, catering to beginners and catering to experienced programmers is mutually exclusive. I've seen this time and time again back when I was involved in a near-by college. This might not work in your case, but I might suggest dividing the club into two sections: one for beginners, and one for non-beginners.
To begin, I have some points that cover both sections:
1) The tools that are used should be zero-configuration. This means that the chance of club members encountering problems regarding their tool-chains should be absolutely zero. Simply click compile and watch it build.
2) The tools should be cross-platform. You're sure to attract people that enjoy using Windows as well as the other operating systems available. The club leaders should be experts in all popular systems in respect to the tools that will be used in the club. Any and all problems should be addressed by the club leaders instantly and without fail. The biggest deal-breaker, especially with beginners, is a tool that doesn't work as expected, so make sure that it does!
Some suggestions for beginners and non-beginners.
Be sure to drive home the base concepts behind the idea of programming, then reinforce the concepts with practical application through the language of choice. As far as "fun" projects go, I don't have any ideas...perhaps you could ask the club members what they would like to work on after getting the basics down?
Be sure to probe the students in the club to see roughly how skilled that they are before setting up a course guideline. Again, it would probably be best to see what the club members are interested in.
For a language, I would have to recommend Java because of how easy it is to both set up and distribute applications. There is little that can go wrong when installing it, and the tools that interact with it are quite intuitive. If you are looking for a course guideline, consider searching the internet for college course guidelines and adapting them to meet your requirements.
i may suggest also that you collect a variety of programmers who knows different languages. then divide your club according to the "field of expertise :)". so if anyone approaches and needs your help, work will be divided according to their expertise. for leisure times, try to collect beginners on programming and create variety of games and real-life problems. so that those newbies will realize the practical approach of programming.
The only way I can fathom that you'll be able to attract non-programmer to a CS club would be to show how the computer can be used to solve problems, rather than focus on the computer as an object of study in itself. How this could be done at the pre-university level, I'm not sure, since most subjects are not explored to enough depth to posit problems solvable by computers.
I don't suppose you can assume knowledge of calculus, can you?
Overall, if you want to entice people to join your club, show them what they will be able to make and make sure that it's something that they'd want to make. I.e., for high-schoolers (I don't know if this is your demographic, but this may even apply to college students) I don't think that anyone is really going to be wanting to make their own MS Excel or data-sorting application. Stepping away from the command prompt window would probably be necessary for most (not all) projects that are meant to entice newcomers.
Show them that you can make something interesting that they want, and if they know that you can teach them how to do that themselves, you'll have a much easier time grabbing new people.
You motivated me to look into seeing if we can get one going at my school.
I don't see it that satisfying experienced members and inexperienced members is mutually exclusive.
Here is how I picture it:
People with the least technical experience can help with the graphic design portion of the clubs website. People with a little bit of HTML experience, but less technical experience, can work on the code for the web site. People with more experience can work open source projects hosted at the clubs website, or whatever else they think think of. Also lots of people are interested in the design aspect of game development. Even if they cannot help with the actual code, they could contribute ideas about aspects of the game: artwork/graphics, audio/sound effects/voice overs, plot, gameplay, etc.
If I had it my own way, we would each get arduinos to play with.
I'd definitely recommend Game Maker over Scratch. While it has a drag-and-drop system that newbies are immediately able to use, it also has a nice scripting language (like a loose version of C with less functionality and some faux-OOP) that has been used for things ranging from implementing the A* algorithm to ray-tracing programs.
Seems to weird to want to attract non CS majors to a CS club. I understand you want to raise the numbers, but why not just try to get more CS students in it? I can't imagine like a sports science major really getting very involved in a CS club.
Getting non programmers to develop an interest in programming eh? Well, call me if you figured out how, I'm totally gonna try that on my brother.
As for languages, that's a pretty tough choice. I remember from back when I learned programming that Ruby was probably the one that took me the least time to get into - I think its quite easy to program in even if you don't understand the details yet.
Either way, whatever language you choose, make sure you get your people to actually DO stuff as early as possible (and I mean, actually solve simple tasks rather than copying some text verbatim). If they have to listen to a 3 hours speech about the syntax of the language they're probably not going to recall a thing.
[quote[Also lots of people are interested in the design aspect of game development. Even if they cannot help with the actual code, they could contribute ideas about aspects of the game: artwork/graphics, audio/sound effects/voice overs, plot, gameplay, etc. [/quote[
I don't know how you suddenly went from website to video games, but the problem with giving people who don't know anything about the process of making video games the "come up with ideas" job...
Some ways in which this could go wrong
1) They will simply be ignored, because
1.1) Their ideas aren't implementable in a reasonable time span
1.2) Because the people actually doing the implementing have conflicting ideas
1.3) Because they can't elevate their ideas to actual concepts that convince anyone
2) The group decides that those should feel important, so they give them some idea-enforcing powers. Which basically makes them the clueless managers that nobody really wants to have
3) They actually play along but figure out that the "after ideas" part of development takes so long that they eventually get bored due to not actually having anything to do with the whole thing anymore.
Anyways, if you are about programming you might wanna call it a programming club. You don't call physics clubs "Rocket Science" clubs either, do you?