Ask Slashdot: How Can I Make a Computer Science Club Interesting?
plutoclacks writes "I will run a computer science club at my high school next semester with two other friends. The club was newly introduced this school year, and initially saw a massive success (40+ members showed up at the first meeting). Unfortunately, participation has decreased a lot since then, down to four active members. I feel that the main reason for this decline was the inability to maintain the students' interest at the beginning of the year, as well as general disorganization, which we hope to change next semester. The leaders of the club all have fairly strong Java backgrounds, in addition to enthusiasm about computer science and programming. We have a computer lab with ~30 computers, which, though old, are still functional and available for use. What are some ways we can make the club have an impacting interest to newcomers?"
pron...lots of pron
should do the trick.
Life takes interesting turns, but the most interest is when you're off the beaten path.
First, reduce your expectations.
From your initial 40 'applicants' only 20% will stay, that's everywhere the case, from Pilates to Yoga, from Knitting to Pottery.
So in the best case, you'll get 4 additional members.
(Re)Design your website.
Create a course-management tool.
Try to use Moodle.
In general, a year-long project that will have a lasting effect on your high school.
As and educator for 20+ years (University level) I can attest that I too have had the same problems. The way to stop the declining numbers it to make it more fun. Have everyone War Drive on the way to the meeting and hand out a $5 gas card to the one who fins the most open AP's. Have a contest to find the most expensive computer on ebay. Have a hackathon over a 12 hour period where they get to try their hand at protecting and attacking computers in a safe environment.
none of these methods would help for them, sorry,..
Ask them what they want and adapt accordingly. They probably won't ask for pron because they can get that elsewhere and aren't dumb enough to think you can offer that at school. But if you get them to choose from a list of things that you know you are capable of offering them, you will give them some ownership in the club. They often find that easier than starting from scratch. In my experience, high school kids rarely get asked their opinions about anything that matters directly to them . . . and if you ask their opinions your club will start to matter to them.
Covertly install video games on the schools network drive, and then have lots of gaming sessions. That's what my friends and I did in high school.
Pizza
Computer Calisthenics
Build an autonomous Ardurover. That will raise lots of interest.
First of all, congratulations for starting the club. Too many students sit passively by in high school.
A couple of things that could help. Do you have a dynamic teacher in your building that might be willing to sponsor the club? They can help you with recruitment and ways to keep people interested.
Also, try to have some really clear goals. Can you build an app for students in the building? Can you collect scraps from your IT person, and build some extra computers for the cafeteria for students to use or to give to underprivileged students? Can you find some local places to visit on a field trip or two? As much as I wish as a teacher that students would readily join clubs for their own edification, typically you need to find a "hook" to get them in the door. Once they've built something or seen the glory that is coding, they are going to be more likely to stay in the club. Try to find something they can SEE at the end of the year. Nothing beats seeing the fruits of your labor.
Good luck! If you need more advice or ideas, I could introduce you to some great AP computer science teachers.
An important change for education.
Heavy languages like Java/C++ are tedious for kids/adolescents. Program in something fun and lite like Python/Ruby/Perl.
Programming contests/competitions are fun. If you are not aware of how they work, you have teams of programmers. They are given a set of problems, for which no one could complete all of them within the time limit. If you have teams of four, usually one two members at a time can be at the computer. At the end of the time limit the judges rate who completed the most tasks. It has been a while since I was in one, but we did a few in college using C programming. An example of a task is a program that is run while two parameters (month and year) and the output is the month calendar. No one got 100% on that because of a special leap in in year 10,000 or something. Usually you are given 5 to 10 "projects" and 2 to 4 hours to work. You can tackle the ones you are best at. I think they scores were weighted so the easier tasks were worth less. I imagine there are lots of write ups on how to set these up.
Step #2: understand that Computer Science isn't the same as Computers.
Step #3: decide what the current club members want to do.
Redesign the school web site? Robotics? Arduino/RasPi hacking? Learning new languages? Etc etc.
Installing FreeDOS and writing graphics programs in C that directly write to the VGA memory while controlling the sound "card" is an interesting first project. You learn a lot about the h/w, too. Then there's manipulating the FAT in assembly, banging bits out of the serial and parallel ports, etc, etc.
"I don't know, therefore Aliens" Wafflebox1
Butterscotch. Network cables. Nipple clips. Chestcutters. A whole lot of fondue. Lots of rum. Fire.
Let there be beer.
Look into things that groups like LUG (http://en.wikipedia.org/wiki/Linux_user_group) and 2600 meetup groups do. (Not the illegal or questionable things, obviously.) Try to arrange for guest speakers or have weekend hackathons (http://en.wikipedia.org/wiki/Hackathon). Maybe try to participate in something like 7DRL (http://roguebasin.roguelikedevelopment.org/index.php?title=7DRL_Challenge_2013)
Take the time to visit non-profit organization Computing At School.
Their own description of themselves is:
The Computing At School Working Group (CAS) is a grass roots organisation that aims to promote the teaching of Computing at school. CAS is a collaborative partner with the BCS through the BCS Academy of Computing, and has formal support from other industry partners.
They are dedicated to finding and sharing the best ways to teach IT to the young(er) generations, and they have a proven track-record with great results.
I am not affiliated with them; but I use their website and material for my own children, because nothing better is available to me locally.
You can join their online Educators Community here:
http://community.computingatschool.org.uk/door
- Jesper
My security clearance is so high I have to kill myself if I remember I have it...
If you've managed to retain 10% of applicants that's not too bad. Quality rather than quantity is the best way to go in this area. Just because something isn't popular doesn't mean it isn't good. Once you go off to college you will realize very quickly that after your introductory computer science course the class size gets significantly smaller. Think of it as filtering the riff raff...
You might actually want to make it harder for people to join (exclusivity) makes things like this more appealing (night clubs and facebook did this). Best of luck!
Code game, modify some OS game, make mod.
That way, "testers" and "idea guys" will also stick.
Make something cool; something you can show off to people outside the club, that will impress them and make them want to join in.
Something involving robotics or sensing devices, perhaps -- that seems to engage young imaginations somehow. It's 20 times cooler to make a turtle robot draw a picture, than to draw the same picture on a screen. What about a Raspberry Pi powered school weather station that tweets the current wind speed and temperature, and serves visualisations of historical data on the web?
See if you can come up with a project that can scale -- so your 4 core members can make a start on it, but other people could be brought in whenever they show an interest?
Ask them what their expectations are and work from there. Everyone's ideas on what computing is or should be are different.
But I would suggest that if coding is going to be part of what this club is that you get a group consensus on what kind of project they'd like to do and start something on SourceForge or the like. It'll get some public recognition even if it's not too great and people will see their name on the web. People like that kind of thing.
I do a public astronomy outreach with my local amateur astronomy group. It's nice to work with the public and get some recognition even though I'm not great at it. It's one of the few reasons I still set up my equipment on public nights. I'm more comfortable working within the group but it's still nice to be part of a bigger community through public participation.
MIT's scratch is pretty fun:
http://scratch.mit.edu/
You have to think about what peoples' motivation will be to be part of a "computer club". Despite being generally interested in coding, most folks don't want to sit around and talk about it all the time. Some ideas:
1. Serve others. For instance, offer to tutor kids in lower-level programming classes. This won't be well received if you just end up doing their work for them.
2. Prepare, as a group, to enter local programming contests. Where I grew up, there were one or two schools in the area that had "invitational" team programming contests. See if you can get a staff sponsor to drive you to these events so you can compete.
3. Try to build something functional, and invite club members to help in the effort. Maybe a website that allows students at your school to plan out their course schedules based on your areas degree requirements. Maybe something that lets them sign up for automatic SMS updates containing news about your school. Etc.
4. If you have any sort of budget then provide food at your meetings. Cheap pizza usually does the trick. People flock to free food.
5. Invite speakers people might want to hear speak. If you live near a research university, see if some of their CS faculty might consider speaking to your group. If you live near any companies that do software development (and most people do), see if you can get some "real developers" to come talk about how things are in the "real world" and impart wisdom. (Caveat: many professional developers are not, in fact, very wise.)
One thing you'll realize in high school, and college for that matter, is that about half the people in most "clubs" are there just so they can put it on their resume. I say that not to criticize, necessarily; it is what it is.
Programming competitions. Sounds boring, I know, but I've seen such events bring out some very creative, lore-worthy, er, um, "logic" to win.
You need to find a project that is interesting and doable. How about some sort of activity where people can drop off old and/or "broken" computers for the comp. sci club to fix up and donate to charitable institutions? Guarantee that data will be wiped with DBAN or some other utility before disposal/redeployment. Idea here is to build up and inventory of hardware to play with, or redeploy.
You can then set up a process for dropping images on machines by usb stick, or something like clonezilla. Go with something free like Linux Mint.
Maybe some sort of project where you are setting up a classroom environment for an elementary school? Use something like edubuntu. Obviously this would need approval and supervision of the local IT dept of that school.
Or some kind of virtual server project? Again going with free, something like ESXi or proxmox and any linux server flavor.
Right, simplest way to maximise the number of people who stay.
give them something immediate which they can do and see a result.
Get them thinking about other things they'd like to do.
It could be as simple as getting people to design some 3d objects then dropping them into garrys mod and letting people play with them.
Immediate small success is more important than technical significance
some basic scripting perhaps, the sort people can build on later without any setup like bash for linux/mac and vbscript for windows (even if VBscript is a horrible language)
(Only Geeks and Nerds Need Apply !! NO JOCKS ADMITTED)
What have you got to lose ?? Four ?? And ditch Java !! Too hard !! Go BASIC !! Interpreted BASIC !! Instant gratification !!
The sign on the club door should be:
This is a GOOGLE GLASS site. All personnel are required to wear GOOGLE GLASS at all times.
although I guess the effect would be similar.
I remember the CS club in my school back in the day and as I recall, it was a room full of very bright students but they all pretty much kept to themselves, not because they were mean or bad or anything, it was just a room full of introverts - if my experience is any indication I would recommend any activity that gets the group working together to meet a goal and or have them share what they are tinkering with and offer to help others and receive help. the club in my school got a lot better when it was taken over by a teacher who really forced engagement.
Find some interesting guys in your neighborhood who are doing interesting things.
Try the local businesses, colleges, IEEE chapter, etc.
That's a "speaker" who comes in to describe his work, but then you spend an hour just hanging out with him or her.
They are like nerd bacon.
You all are mostly familiar with Java. So create some sort of large project that is based in Java. Minecraft mods come to mind as an easy one, but there is still the possibility of some sort of web app/game that you all could participate in creating.
sudo make me a sandwich
Get used to the thought that the target audience is not hackers, but rather the opposite. Non-hackers with maybe a little interest in how a computer works. :)
The "strong Java Background" is a moot point - you are not about to discuss the pros and cons of multiple inheritance, but rater why you have to put a ";" at the end of al line.
Lower your expectations.
Make sure you present yourselves well (I'm thinking of a Website / Facebook Group mostly here). Have this Paged audited by somebody who's absolutely not interested in computers, peferrably a girl. Only when she finds it interesting, it's good enought. Don't go about geeky stuff on the official pages. If you really have the urge to do so, make an "inside group" or a Password-protected part of you site where you can geek about your geeky stuff
You could find some competitions to enter as a club, hackethons, game contests, things like that. That would give you a cohesive goal to shoot for and something to do as a team. If all else fails make sure every meeting has donuts and pizza. That always got me out.
And get it on kickstarter.
My philosophy is simple: Hello World is stupid. When I started programming in C at university, it bugged the hell out of me how long we took struggling with the language before being allowed to actually do something. The real way to start C is to start teaching the *n*x command prompt, and start making simple programs for shell extension commands (square, square root etc). That's the quickest way to get to something conceptually useful, because you're starting with divide-and-conquer and effectively teaching procedural programming by stealth -- the barrier between the command line and the program is less abstract than between calling procedure and called procedure.
Things are obviously a bit different for Java, but the point is that you should be looking for the real core design goal of the language and starting there. C was designed for Unix, in the days when everything happened in a shell, and getting it to do anything else takes a few steps longer.
Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
A modern version of CoreWars. There's nothing better than competing against each other!
http://en.wikipedia.org/wiki/Robocode
Anything you can do to create buzz is going to have a gravitating effect. Keep in mind you're talking about a bunch of teenagers. Make something explode (safely), fly something around the cafeteria, do a community service engagement project (stolen from above). Also... to get the parents to endorse... put some structure behind it and guarantee some publication. Anything to help a college application look better will also bolster support from the parents. Finally - to the 4 kids you have who are proficient in JS - remind them they need to act as leaders, mentors and teachers to the other kids. Perhaps a little difficult for kids who are trying to break out of their nerd shells but it'll be a good crash course in human interaction for them!
Robots and video games.
At that age they are ready to begin a serious investigation into CS, but the majority of students lack discipline/motivation/focus to really dig deep and learn their ADT's and foundational algorithms, etc. So, you dress it up with something cool. I taught in similar circumstances, and used robotics and video game programming as an excuse to teach kids math/computer science/physics.
We made a 2 degree of freedom, planar robot arm (oriented against gravity) that would read commands from a text file, and faithfully carry them out. This involved me teaching them about trigonometry, the PID control algorithm (and thus the integral and derivative), Taylor series approximation (and then, table look-up and first order Newtonian approximation), parsing text files, and most importantly, how to break a complicated problem into approachable subproblems.
You can do lots of similar stuff with video game programming. Teach them how to make a Monte Carlo tree search based AI (it is a heck of a lot simpler than it sounds!), and have a tournament to decide who wrote the best AI for some board game. If you want to teach a particular abstract data type or algorithm, find a way simple way it is used and introduce them to that. The rest will follow.
The Unity game engine is pretty awesome. Nothing drives concepts home like immediate, tangible, visual results. It has something of a learning curve for absolute beginners, but more people will try harder to climb that mountain.
The point is, make is keep it (small) project oriented. There is more than enough meat in even unambitious projects to keep the club interesting and active for years. You don't have to worry about the 'purity' of keeping it *only* computer science. Show them some interesting ways in which CS is used, and then show them what is going on behind the scenes how to reach in and fix/break it. Remember it is not a primary education environment: there are no grades in a club, no compulsion for them to be involved, just cool stuff that they want to be around to explore and other people similar interests.
If you want you can introduce the real nerds to the nerd-lore. (Is the jargon file safe for kids? Been a while since I've read it; regardless there are a lot of hacker koans you could print out and decorate the walls with.) Show them Duff's device (and spend a good long while explaining WTH it does), the "0x5f3759df algorithm", teach them about Babbage's analytic engine, introduce them to a variety of famous algorithms, teach them about who Knuth, Shannon, Turing, etc are and why they should care. Bring in a guest speaker, if you know someone who would like to. Less people will go for that sort of stuff, but it'll have a larger impact on the ones who do. Point them to the very large number of online resources for learning how to code. Udacity has a very approachable class on AI (from the guy who made the first self driving car).
As someone heavily involved in clubs in high school and college, let me first say that it is entirely common to have the numbers thin out quickly. Everything I've ever been involved in has mostly been done by a "core" group of say 3-6 people, everyone else is only helpful here and there on temp basis. Do not let that discourage you as it did me in the beginning. You don't need or even want too many people that actively involved or it will be a nightmare to manage. Instead, I would say get your core group together and vote more or less on an interesting project to work on. Build a robot, set up new computer labs in the school (with linux? ;-) ), contribute to an open source project mutually agreed on, or whatever makes your boat float. Cool things happening will get interest from others, who will then start to participate.
The other thing I can say about attracting newbies is that you have to be sure you don't make things *too* technical up front. Some people have an interest but do not know where to begin, and will get scared off if the first meeting is too focused on the cool advanced projects everyone has. Make sure you include some plain "social" events to make people feel comfortable. Maybe with a computers theme. Maybe participate in a Distro Release Party (openSUSE I think encourages everyone to plan a pizza party and play with the new release every time it comes out, maybe try that? social but gives new people a chance to learn something new in a non-threatening environment). Remember: there are probably more people with interest in programming, but did not learn it yet, and so you have to be sensitive to their emotions. Not everyone teaches themselves programming at age 8 (for any number of reasons), so just remember your first priority is fun with friends with an interest, and then from that build a core that does cool stuff (maybe the core has extra meetings in addition to the monthly social meetings that attract new members). Contests are often a good way to get interest because it gets people involved. Maybe have some fun computer related contest (jeopardy! type game, whatever) and have some cheesy prize for the winner.
Do you have a faculty sponsor? Having a teacher at bat for you can help you get resources: computers, software, pizza, or maybe even just get permission for use of a certain room as the club hangout and lab. An area to call your own is always good at getting people comfortable and happy to join.
In any case, do not worry *too* much about planning to attract help. Just be involved in the school, have a lot of enthusiasm and do cool things, above all be casual and friendly, and people will naturally start showing up and helping out. Have a lot of fun and good luck!
If the participants don't find it interesting, they will leave. Which is fine, because they probably don't belong there in the first place.
If your dealing with grade school kids, keep the topics fresh and relevant to their world. Try giving them weekly coding challenges consistent with the technologies they currently deal with, like Android, Twitter, Facebook, etc. Have people from the industry come in and speak every so often. Not just from pure coding perspective, but also from some of the more fun areas of Computer Science like Game Development, research, medical, engineering just to give them an understanding of the world and it's implications to CS. For a year challenge, have them poll the students and see what they would want most from a new mobile app, and work through creating it. Have a prize or even submit it to ITunes or Google Store for download. That would give them real experience is developing against actual user/customer need, a skill that I feel becomes jaded as we spend years in corporate IT.
Oolite is a free open-source cross-platform space trading and combat game inspired by Elite. It is infinitely mod-able and is written in objective-C.
The OXPs (expansion packs) use javascript and open-step plists and graphics can be produced with Gimp etc.
There is also a big community behind it so there's plenty of support available.
The game is great fun, and it is easy to make expansions - your kids will be able to produce good results quickly.
Smivs on the intertubes!
Get rid of the 4 regulars because they are driving everyone else off.
Your thin skin doesn't make me a troll
Anything that moves in response to commands is going to be more interesting that stuff that just sits there. Start a robotics curriculum that can be expanded as you find more resources and sponsors.
Throw in a 3D printer and there will be all sorts of interest.
All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
Three suggestions:
1. Ask the some of the kids that left why they did so
2. Be sure the kids are in charge, picking the ideas they work on, organizing the teams and so on. Guide them.
3. Do some android development. The kids can build apps quickly they can use themselves on their own devices. It could be something used school wide. That provides immediate feedback and should not be a lot of work.
If they say program games, get them the tools, make it a place to show off what you have learned. A true geek session
Make stuff. Pyrophoric reactions, ferrofluid toys, hovercrafts from shop vac s. Make your club project based, and try to made it competitive somehow.
I believe in karma, which is why, when I do something bad to people, I assume they deserve it.
I'm not sure if this is as relevant as it was when I was in a computer explorers club in the late seventies, but the coolest thing we did was go on field trips after school to see what sort of equipment and jobs were out there. Someone's parent or friend of their parent would usually take us into the "computer room" and explain the equipment and what they were doing. It was pretty cool.
Of course, I did grow up near the Johnson Space Center and most of our field trips were NASA contractors and NASA itself, so that probably helped. And it was the late 70's, so paper tape, 9-track, punch cards, disk packs, etc. were the norm. And a fairly knowledgeable high-school student named Richard Garriott was our club leader, and he was pretty enthusiastic about this computer stuff.
But it DID get me interested in these here computer things.
Getting kids into coding is like getting them interested in meat packing or textiles -- industries which are career dead ends. No business hires domestic programmers anywhere, especially when a call to Tata can get guaranteed results for a fraction of what a full time employee would cost, not to mention the other benefits (smaller payroll tax, less building space needed, one less employee that you have to worry about suing at a drop of a hat.)
Instead, get them interested in what matters: Debate, accounting, business, finance. It would be nice to even have a class that discusses critical court cases and encourages legal research. These are majors that once they are in college, they might have a hope of feeding themselves and paying back student loans.
Last college job fair I went to, the only people recruiting CS majors in the US, was the Army for enlistees, and you don't even get a choice of MOS, unless 11X is your choice.
BEER
... that should do the trick. But seriously, find something cool to work on. Maybe a competition like robot soccer.
From the Pragmatic Programmers, so it's likely to be very good (NOTE: Haven't read the whole thing yet, but the intro looks good):
http://pragprog.com/book/csjava/3d-game-programming-for-kids
10% of people staying on for a year does not sound to bad (especially for a disorganized group). I would say that making the group accessible to people during the year (certainley the first term) will help boost numbers.I highley doubt you will achieve more than 25% of people to stay. I would say that 20% is really the best you can hope for. If you want more people your probably better off trying to get more people though the door (although this will drive down your %)
Have goals, - what do you want to achieve? Come up with a few ideas yourself for projects, then in the first few meatings get suggestions from members, do whatever you can to keep then involved and take ownership of the project. The decsion of which projects to follow needs to decided by the group. Don't run to many projects in parralel (not a problem if you only have 4 people) but have everyone working towards a common goal.
Don't be autocratic, members are putting time into it they don't want someone pushing them around, do be prepared to take on the role of arbiter in disagreements.
Don't assume everyone is at the same level, some people will have experiance, others will want to learn. Come up with an itroduction corse that is not mandatory, even if the course is just go away and read this documentaion/work though theese examples at home. Be prepaired to help. Agree on a group language, make it appropriate for the type of project you want to do, for application stuff I would recomend python.
I asuming that this will be be coding based - thats not a requirment but I would definatley go for somthing where you make/design somthing.
Most Damage is done by people who are AWAKE
I'm not kidding. Make it a social gathering for people who are in CS, not a place to discuss more CS concepts (that's what your classes are for).
I currently run a club with about 230 members about 100 active on a weekly basis. Here is the principles I use to run the club.
Basic principles:
1. Challenging
We try and target classes and projects just slightly above the students current level.
2. Fun
Let's face it if it's not fun people don't come.
3. Sense of achievement
People do not want to feel like they wasted their time. We give certificates for specific achievements.
4. Do what you promise
This is a way to make sure your club does not die. If you say you have meeting you have to have a meeting regardless if 1 person pitches or 100.
This is the only way I know how to do it. And it seems to be working.
I was the president of mine in high school and we turned it into the gaming club. We kept the title for funding reasons but really we just threw LAN parties. Membership was pretty high. We also held a dance dance revolution tournament with the finals in the lunchroom.
I've heard from other places though that the biggest success is always building some sort of overclocked, ultra-high storage, superocomputer but sort of an ironic one number-wise since nobody ever has the budget for a brand new one. Basically, throw together a ton of spare parts in a gigantic 1995 era-case with other computers' hard drive cages glued in for like 10 used drives with PCI IDE controllers (like $10 on ebay) and dual power supplies. You can get cages, fans, drives, and all that donated from people who just want to get rid of their junk computers laying around at home. Then run through how to run a proper chkdsk on them all and other technical stuff and definitely paint it and anyone into computers at all will love the project.
I'd try something which is interesting and varying overtime: Designing a computer game. :-) )
If you want to stick to Javascript, I'd say have a look at Unity. At the moment you can freely release your projects on mobile devices, PC and Mac with their Free/Indie version. Besides Javascript, it also allows C++ and Boo for coding languages. There's a huge community, great toolset, and a lot of free usable assets. Hell, it kept a class I'm running in the UK interested (70% retainment after running it for a year; and we recently published our free game
I suggest you develop some sort of "story arc" or pathway or series of activities that build on each other, but where each step is fun on its own. Then new members can see how things will evolve over time, and not just be a purposeless hangout time that's easy to replace with Final Fantasy XX when that hits the shelves.
As an example, they probably already know about Minecraft. For a minimal cost, you can get two Raspberry Pi units, then expand as kids start acquiring their own. Get them interested in the simplest Linux environment, then install Minecraft for Pi, then a tiny bit of Python will let them construct various Minecraft structures or mob AIs using Python coding. Mix it up but stay in the theme by setting up a Minecraft/Bukkit server on your full PCs, and learn to write plugins there, using the Java that your seniors already know.
[
Expand your club reach; change to being technologists vs being "computer science."
By opening up to other technology fields you will get to meet, socialize, and hang out with other people interested in pretty much the same thing as you.
....
where is the blackjack?
An important part of comp sci is how it connects to other subjects. Team up with some artist types and those who want to play with electronics. Look up arduino, makey make and go visit your local hackerspace for some ideas.
Games programming. Seems to get and retain a good level of interest -- look how much stickability http://scratch.mit.edu/ has got. Of course, it's a whole new ballgame and a learning curve for you too if your background is enterprise Java.
"In the quest for truth we must train ourselves to view our favourite ideas just as critically as those we oppose"
What about Plunker?
You can point people directly at their online editor, ready to write and run Javascript applications:
http://plnkr.co/edit/
On the left, select "script.js", type something like alert("hello") then click the Run button at the top. Template projects using jQuery, Angular and Bootstrap are available in the green "New" button dropdown; they are not limited to basic Javascript.
If they want to download their creation, use the button at the top right (next to the blue GitHub button): "Download your Plunk as a zip file"
You could use that to show newcomers to the club that they can write and run programs with just a browser and internet access, then organize other activities based on their feedback.
So when these 40 members showed up did you take a poll to figure out what people were interested in?
Do people want to build video games? If so, show them pygame. Show them scratch.
Do people want to do robotics? There are only a bazillion cheap robotics kits that use Arduino's, raspberry pi, etc.
You need to figure out what direction you want to take the club and go in that direction.
Just my two cents. I've been actively involved in running a LUG (http://www.wlug.org) for more than a decade. This formula has worked to keep our group active.
Yes Francis, the world has gone crazy.
At my former employer's, a colleague and I once gave a course with the help of OWASP Webgoat. It was in the evening, so on employees' own time. But lots of people came, and when time was up, we had to almost drag them out of the building. Including the secretaries, who had had great fun "stealing" credit card numbers.
Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
Just get raided by some law enforcement agency. Your membership will triple overnight!
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
People like to see stuff happen rather than just moving some numbers about in a computer memory.
IMHO, Java is the Visual Basic of the programming world. Try playing around with Raspberry Pi.
First find the basic youtube explaining MIT Scratch. Then open it on a browser. Then start an discussion where you try getting ideas of things people can try.
Like JPC (http://jpc.sourceforge.net)
My experience in getting people interested in code; and computing in general, is about providing as much immediate feedback as possible. The trick is to get people hooked on the empowerment that having control over a computer can bring. One way this is made most obvious is through the visual results their actions can bring about. For some it is true that a cool script here or a discovery there are interesting but for most it will be about creating something that looks impressive.
I am in school currently, half the people in my class are all sitting here with a "we should do something awesome", but don't really dare to propose it. Hell, even with my best friend we often have this "We should do something" feeling, but we don't really dare to ask the other person, although we both know either side would agree with pretty much anything.
A great start, which we did with some peopel of the class (from europe btw, so our schooling system is different), is to get raspberry pi's. Fucking awesome. So far we have set up our own IRC, own music stream (although the legality of doing so may not be the same everywhere), we host lots of small things. Especially the IRC is a success due to us loving to make bots and so on, testing out lots of new things.
Further on great ideas are organising a lan party, once again, police may not be fond of it everywhere. But our lanparty is now reaching a good 230 people and is simply great. Its a load of fun for both crew and non crew.
Do note, being from europe, more specifically belgium, some of our schools are smaller than big universities. When I say a 230 people lan party, I mean its pretty much the biggest we can go if we want to keep it in one room.
Further more I am currently thinking about some defcon like talks, defcon is pretty awesome, and I am sure that with some teachers, we could get it going.
I lead a Java Developers meeting at my workplace (so I realize this won't be one to one with your group), but the thing they all love is when I pull out a puzzler from http://www.amazon.com/JavaTM-Puzzlers-Pitfalls-Corner-ebook/dp/B001U5VJVS/ref=sr_1_1?ie=UTF8&qid=1370007933&sr=8-1&keywords=java+puzzlers (it's about corner cases in the java programming language that have interesting results or unintended side effects).
I put one up and ask them what they think the result of the code snippet is. Then after they get the answer wrong, I show them what actually happens and they puzzle about why it happens the way it does. Normally this involves rewriting the code snippet or passing in different input and trying to figure out why the snippet behaves the way it does. Finally, I'll read the explanation that's in the book and we'll talk about what's really happening and how to avoid the problem in code. It's definitely the high point of the meeting for us.
I think something that would be interesting for you maybe to talk about, or have a speaker talk about, is social skills for people who are interested in CS as a career. I'm an extrovert so I don't have issues talking with users and colleagues, but so many people in CS do nowadays. I happen to have some modicum of IT skill, but I see lots of folks hired into IT nowadays that aren't really great at IT, but great with people. Especially user support fields. And before y'all say it, yes I know those aren't ideal, but we all gotta start somewhere right?
I would also think maybe have a couple speakers with some real world XP would be nice. Not just coders, but maybe a tech support person or a network admin. Perhaps someone in a field that is growing. I work in Healthcare Informatics and that is a booming field.
Just kind of look outside the box and I think you will get a large group than just your core that way.
StarCraft II has an editor and many of these moddable games have a scripting language for events.
Blender allows you to write mods to it in Python - you can make movies or other fun final products.
Call it the "Data Processing Club" instead.
Choose exercises/examples from Knuth's books and implement sample programs in the language of your choice - make it a weekly contest, best sample app wins gift cards or something.
while [ 1 ]; do echo -n -e "\xe2\x95\xb$((($RANDOM&1)+1))"; done
Find students with an interest in computer science
This perpetual motion machine Lisa made is a joke, it just keeps getting faster and faster. - Homer
Make sure you launch them into something interesting. I would recommend a raytracer - the basics are incredibly simple, but they can be expanded to great levels of complexity. There is direct visual feedback, so rather than just printing out a load of numbers the users can field like they have achieved something more substantial. Numerical optimization and data structures can be introducted gradually and immediate results can be seen. Raytracers provide a great environment for introducing object oriented programming, they are also trivial to parallelise. On top of all this raytracing is extremely useful and the knowledge gained writing a raytracer, other than the computing aspect, is extremely valuable in engineering and physics (eg the maths + physics behind them).
We have a computer lab with ~30 computers
Even old computers will still run plenty of good games...Quake, Warcraft, Halflife, Unreal Tournament, etc.
Quake and Quake 2 in particular made it easy to create your own mods. Why not spend time hacking on the games and the rest playing the games? Great way to keep it interesting and fun.
For example, make a video game. Use something like Unity3D free and free tools such as Wings3D + gimp or Blender. You'll need to go through all the steps of systems analysis, project management and development. Plus you can even sneak is some math and mathematical concepts and networking. I'd keep the game concept pretty simple to start and then you might be able to recruit kids with artistic talent to join the club, possibly opening it up to a wider range of interests and involving other people who may not be specifically interested in CS, but are interested in computer-related fields.
http://www.flashdevelop.org/ + http://www.flixel.org/
Female nudity.
If this involves a teacher, that's a plus.
As someone who was a VP of the comp sci group in my highschool years ago, the way we did it was we played games. We met twice a week, once to play starcraft (or other games... usually starcraft) and other games on the computers, the next to discuss coding and logic
Often the logic would be strategies to figure out how the AI worked in games, but then we would talk about breaking through the schools firewalls, key loggers, etc. The Comp Sci teacher actually encouraged us to help him find security flaws for them to fix. After that we decided to try and write our own software for things like keylogging. Eventually we helped each other out with showing the newer kids the answers to some of the advanced AP homework assignments (they weren't in the AP classes). It was actually fun watching 5 people all come up with different but similar answers - then discussing WHY they took that route. Add in the classic "work on the schools webpage" stuff, and we were decently busy all year.
The key was NOT talking about comp sci the whole time, but tying computer science INTO what we were doing. We had a solid 15ish people or so in the group at any given time and the school was average size.
...the "Computer Science Club."
shades of the 1950's Jughead grey crown beanie.
Call it the "Android Fight Night" or "My Little Monolith." or something
Every week during the meeting we would have a presenter speak about a project they are interested in outside the norm. Everything from building a robot to productive text edits on a Mac, to GTD. We wouldn't spend the entire meeting on just this because that would be boring, but about an hour once a week.
When I was in grad school the local ACM/IEEE chapter sponsored a programming contest for several local high-schools. This is a fun way to get kids interested in programming and computers in general. Competitive games are a draw. Contact the ACM, IEEE or your closest university and see if they have any contests in your area. If not, maybe they will help YOU host one. Your kids will get to meet students from other schools with the same interests, polish their programming skills and have some fun. Cool prizes help.
Another area with some cool factor to it is robotics. There are FIRST and BEAM leagues all over the place. Check them out. You could spend a few months getting a contest entry together, involving not just programmers, but budding engineers as well. Even without a contest, having a school robot is cool. And they have something tangible to show off to the rest of the school.
As a startup founder who far prefers building product to selling to customers, I'd say go talk to your potential members (customers).
You had 40+ members who were somehow interested in the idea of a computer science club.
But after they showed up, it turns out the club wasn't what they were curious about.
So go talk to them. Ask them what they were expecting.
You won't feel like doing it. Your gut will probably say no, just keep your head down.
But you'll learn how to make your club interesting. And you'll be building up a skill that will be valuable later in life.
Strippers.
The greatest right given is the right to be wrong...
Pick a fun and innovative project for the whole group to participate in. That way, people will have a reason to come back every week.
The project should be:
1. Fun - but not necessarily a game. Fun to compy geeks means "has interesting puzzles to solve"
2. Innovative - do something new. Invent something that nobody has done before.
3. Important - do something that matters.
4. Focused. Don't try to create the Ultimate Framework of Everything. It will take too long, and people will become bored and leave.
5. Achievable - Target a ten-to-sixteen week completion time, with no more than an hour to an hour and a half contribution per member per week.
6. Easily chunk-able. Pick something that can be planned together, then dealt out to members to investigate/design/create individual pieces.
7. Lends itself to collaboration. Pair programming, get-togethers to investigate alternatives, etc. Anything to keep members connected and engaged.
8. Has clearly defined roles that can be assigned team-wise. Bob and Jeff, you'll be the web team. Julie and Frank, you'll be the architecture team. And so on.
If you pick the right project, people will be engaged and excited, and they can take pride in contributing something to the global community.
Quake... maybe even Quake tournaments.
Whenever a player quits EVE to go play WoW, the Average IQ of both games increase.
A hacker is not someone who would want to go to a club in the first place, so you probably won't attract many true computer science enthusiasts. To attract more social people, do social things like play games or have contests. Whatever social people do when hackers aren't around. I wouldn't emphasize computer science, because lectures on homomorphic group operations will not go down well with the general public, and hackers won't attend social events anyway.
Why don't you try writing a demo in Java ?
It'll develop the creative part and help you discover Java in depth. And it's easier than writing a game !
Here are some examples:
http://pouet.net/search.php?what=java&type=prod&x=0&y=0
You've got old but serviceable computers. Android phones are pretty common, and you could probably get a couple older Android handsets donated by the community, or even maybe get a couple "goodwill" Galaxy S4's donated by your local AT&T/VZW/etc branch.
Load up the Android SDK, get the kids to think of some interesting stuff they'd like to make their phone do, and then turn them loose to work on their projects.
Oversee their work, have them work in teams, and give them some hands-on programming experience that will be relevant to their interests - high school kids aren't going to be too jazzed about "building a course scheduling tool for the school." But they might be pretty excited to build something they'd use with their friends.
And so what if the app they build sucks? The point isn't to turn them into millionaires, it's to help them learn and the best way to do that is by doing it, and then sitting down to say, "so what sucked about that, and what can we do better next time?"
Some will be interested in gaming, others will want to make web sites, mobile apps, etc. Do something cool with the Raspberry Pi, WebGL, or Google Glass...
Greed is the root of all evil.
If you can involve Minecraft into your activities you should be able to get a lot of attention. As for the more technical aspects... Minecraft mods perhaps?
FTW!
We have been helping running computer clubs for about 20 years and have documented the things that work and don't. Creativity and ownership are key. Simply hacking Java code will go nowhere. Have them build games where they can also build their own 2D/3D artwork. Use tools like AgentSheets and AgentCubes that include powerful 2D/23D authoring and end-user debugging tools to motivate them and help with the programming. Otherwise, as you already see, you will quickly loose your audience.
Here is some research data: http://scalablegamedesign.cs.colorado.edu/gamewiki/images/4/44/Will_It_Stick-submit_CR.pdf
AgentCubes in action: http://www.youtube.com/watch?feature=player_embedded&v=2GWcb3aG2w0
Better Idea: Forget computer clubs! If your goal is to expose students to computer science then the computer club idea goes nowhere. This is not an opinion. We have the data. You will get few girls, rarely any minority students and the overall percentage of students participating is dismal. Try the Scalable Game Design curriculum http://scalablegamedesign.cs.colorado.edu/ You can have your teachers do this and expose nearly 100% of the students at just about any middle schools or high school. With this strategy we get ~300 students per school and year instead of the ~15 computer club ones.
RoboCode
Make it a competition amongst the members of the club. This is a little more modern take on old clubs where the main focus was usually Chess, Checkers, etc.
For a little more advanced stuff, you could fork Mana World or create bots for the server and improve the game overall.
Make an IRC MUD using PircBot or any of the other libraries out there. I've always wanted to do this but have never gotten around to it.
Lastly, the most advanced option... research into making another Linux Distro ("Club Name" Distro -- also come up with a cool club name) or another Linux Desktop Environment (forking LXDE will be the easiest).
There are lots of little things like this that you can research on the web. Chess can still be fun if you require no use of search trees, but instead force the use of a more pseudo-random algorithm like the Genetic Algorithm. Ask around the school to see what people are doing in their spare time at home and what they think is fun. Most people using Facebook? Maybe write a really simple Facebook app and then eventually a game...
The G
I assume you read the article on Codespell a while back?
http://codespells.blogspot.com/
A game that teaches programming sounds like a really fun way to start off to me. Then you could have contests for who can create a certain spell the quickest, who can create the most interesting spell, etc,.
I would do that for a month, and then I would then find out what the members wanted to do.
As suggested previously, an app for the school could be cool. Perhaps a map of the school internals that you can see on your android phone? Perhaps a program that can easily create student schedules for the following year? It could be interesting to ask the administration if there are any programs that the CS club could attempt creating that would make school management or student life easier.
You could also get the club to try to create a game together over the rest of the year. Not something too complex probably, but maybe something like Asteroids.
"Find a need and fill it"
Why did you start the Computer Club? Was it because you and a few friends wanted to start one, or was there some burning issue/need that no one else in the community/school were addressing?
I'm gonna go out on a limb and guess it's the first one, and I will go even further and speculate that it was an idea shared by you and three of your friends.
Successful groups form when they address needs, concerns or interests of a number of people - what are the needs, concerns or interests of the students in your high school? I'm a bit perplexed that you expect total strangers to suggest to you what your schoolmates are interested in...
"Find a need and fill it"
Ken
Put some booze in the Mountain Dew.
I was the president of the computing club at the university I attended. We had a large membership since all computing students were automatically members, lol! We had several events throughout the years that were a hit.
:) During the competition, the teams had to assemble a working pc, then code a working game (guess the number between 1 and 100). The first team to create a working game won.
1. Building/coding competition. The School of Computing had tons of spare/old computers sitting around. We disassembled a bunch of them and basically created a bunch of parts boxes. It was fun to toss in some bad memory and non-functional HD's
2. Computer fix-it day. As a volunteer event, about a dozen of us got together in the foyer of the computing building and fixed people's pc's. If the work was extensive, we'd sometimes take the pc's home (with the owner's agreement) and fix them for a fee.
3. T-shirt contests - We have everyone submit ideas for geeky t-shirts then posted the submissions online for voting. The winning T was then available for a small fee to club members.
4. War-driving game. For this, we hid an access point on campus, and competiting teams used their laptops (nowadays mobile phones would work too) to find the WAPs.
5. Show and tell - I remember one club meeting where several friends had cobbled together a pc with a ton of hd's. It was pretty funny!
6. LAN parties - fortunately for us, the faculty and lab managers were very helpful. The lab guy imaged all the pc's with an alternate gaming image, with Age of Empires, Worms, and some FPS. We got some cable lighting, etc, so the ambiance was awesome. An additional classroom was also wired so that people could bring in their own gaming machines.
7. See if you can get your school to purchase a couple of LEGO MindStorm units - lots of fun, and there are many local/regional/national clubs and competitions.
8. No matter what event you host, pizza always will get a turnout.
Hope those ideas help - good luck!!
The javascript suggestion is very good. The Kids could use javascript to make expressive and/or functional websites for themselves.
The first rule of Computer Science Club is......
Play computer Jeopardy. To keep nubes involved make the lower valued questions for nubes only.
Linux install festival. install Linux for people (make sure you know what you are doing)
informal help desk.
From much experience I've found that activities that do not involve sitting in front of a computer are important if you want a variety of people with varied skill levels. You can have a "programming" club or a "computer stuff social club". Go for a 40-60 mix of tech stuff and pure social activities Social activities could be go out for pizza or burgers after the Jeopardy game ( or even after each meeting or get a computer related movie and make popcorn.
-E
My university's ACM chapter hosted a programming contest for all the local high schools every year. Problems were selected from ACM contests from years past with some local flavor added. Up to three programmers per team. Only a single computer for the team and no electronic devices (members could bring in books and notes, though). Pizza, drinks, and local favorites were available outside the main programming room. With such a small number of active members, maybe your club could host a contest for others (think the original 40+ members).
Another fun activity was our "Tank Wars". We created a server which placed a tank on a random tile on a random board facing a random direction. The tanks start out knowing nothing but what type of tile they are on and the tiles touching them. It's a turn-based game where each tank can shoot, scan, turn, or move forward / backward. Each team programs their own tank and sends the command (via sockets) to the server. Since it's client / server, the tanks can be programmed in any language.
Computer Science isn't limited to programming. Our ACM chapter had a contest where participants had to assemble a computer and have it successfully boot up. The participant to do so the fastest was able to keep the system they built.
When most people think of math/computers/etc they think it's boring. You need a bridge to show all the great things that can be done, I suggest make games/mods using UDK/CryEngine/Unity (unity especially for new comers picking up simple javascript/C#). Does more than teach com sci, teaches various math disciplines, physics, it's fun, most people have played several games and can relate.. relevant to most people.. If i had to learn linear algebra without games to visualize it I would have been bored out of my mind. Visualizing and applying it in a game environment was the difference.
-Ultimate Stickman Game Developer Infinite World Puzzler
http://acsl.org
http://usaco.org
Combining several ideas from comments here, I think the best idea would be after asking the members what they want to do, let them group together to do different interesting things. For example, let's say half want to explore robotics and half want to explore game development. Then you could just let both groups go in two different directions (assuming you have enough supervision to cover both) and maybe further down the road find a way to bring both ideas back together and integrate into one thing.
Though, if you've read this far down then you can see it's pretty clear that you should let the members drive the question of "what to do?" and merely curb it into something that makes sense for your situation.
Where they flip through a list of pictures of all the high school students, answer 'would you sleep with that person?', and publish the standings on a screen in the high school corridor.
Know how I get adults and kids excited about learning computer science? APPLIED COMPUTER SCIENCE.
Seriously. It's just like "Rocket Science" -- Few actually give a damn about the Science, its the ROCKETS that matter.... at first, but if you want to have more fun with rockets, you end up doing more and more science.
So, what are the applications of Computer Science that are simplest to understand at a base level and high level, yet have unfathomable depths in between?
Video Games, Artificial Intelligence, Embedded Systems / Robotics, Client Server Architectures, Distributed Data Systems (e.g., DHT), etc. Get a few skeletal projects going in a few interesting areas of applied computer science. Let the folks COLLABORATE on what they want, and don't put up with folks who try to dominate a project and brow beat others away -- You can lose that member, and gain even more via the more welcoming environment to outside ideas; It's good practices for IRL interactions in business and social settings.
If you discount games as "kid's stuff", then you don't have even an inkling of the systems in play there. Games simply do more than any other programs; They contain behavioral science, computer science, graphics, geometry, physics, audio, network architecture, art and even writing -- CS can be demonstrated in the most ways possible in games, and it can be a project that many different clubs could work on simultaneously, yet can easily be scaled down to just Tetris, or mazes.
Maybe make an AI opponent for the games using something other than just state tables or decision trees. Once you have an environment for avatars to act in AI takes on a whole other level of interesting complexity as they interact with their environment (or even people via player avatars). Take a look at Noble Ape, but DO NOT throw that at first time folks. A simple feed forward OCR can be coded in a few hours, and evolved or trained in the same length of time.
Embedded Systems are great because they still NEED efficient algorithms in their software in order to perform well; Applying CS to pull off seemingly impossible feats under such limitations is very gratifying, and even gives the hard core ASM coders a chance to shine -- Their optimizations actually yield very noticeable results.
Got an Embedded system, a simple AI and a little game environment to train it with? Throw the system in a chassis add a few Robotic sensors and controls, and you've got a little robot that EVERYONE will fall in love with. Even without the AI or Game environment folks can enjoy controlling robotics stuff themselves, even remotely...
Add some networking code, maybe a decentralized hash table, and you can have "AI Sports Leagues" with other folks, control things remotely, have people interact from their other labs, dorm rooms or homes; You can even have a Robotic Hive mind that span the globe, each "body" part in a different place. All the while you can punctuate the fun interesting RESULTS of computer science with the actual Computer Science of how the systems work optimally. You can make predictions of your algorithms effects, test them in real applications, and observe the results -- Do Science To It; However, be prepared to be disappointed when a code-monkey's ASM optimization around a read/write bottleneck blows your algorithmic optimizations out of the water: Don't let that get you down, there are other places were the opposite is true. Learning where these spots are is great fun, and IMO a necessary but missing piece in today's CS curriculums.
Seriously, if you can't figure out how to make TECHNOLOGY interesting, then maybe the best thing to do would be to look for someone else to replace you who can? Not trying to be mean, you can still be an important member, but maybe you're not cut out to be the president?
That's about the only lucky lay those geeks are gonna get :p
Have you fscked your local propeller head today?
I suggest to add some free beers for all the room. They will learn that programming is not so painful when accompanied with 3-4-5 pints of beer free !
Some of these have worked successfully in Canada and other jurisdictions that have a generally strong science program in education.
Use Computer science program (more math based) to calculate an ideal algorithm or calibration for adjusting the swingarm on a grandfather clock, in a visual representation..
Use Computers to do analysis and projections on the rations and amounts of nutrition for plants and vegetables in a "lab" Hydroponic farm, also in a visual representation, particularly in effects of sunlight, water and heat.
Robotics is always a great topic in Computer science, and NASA "apparently" provide material for such topic to high schools.
Two great Computer programs that are always winners are "blender" at blender.org and "synfig" at synfig.org - both used in many 3D graphics and particularly animation projects.
There are also Free/Open Source Software (FOSS) "Video Game" development engines available for easy download and use, including with tutorials and help.
These above will provide a great start.
wanderson@nac.net
I was the president of the ACM chapter at my university for a while. Here's a few of the activities we did, maybe it'll give you some ideas:
* Programming competitions. This is a fun way to learn how to solve new problems, and works best in groups. Look into TopCoder and ACM-ICPC for sample problems.
* Textbook lending library. Get students to donate their used textbooks and make them available to students studying in the lab. This way students will skip buying the books and spend more time together studying.
* Video game party. Get some game consoles, TVs/monitors, and some pizza. Social games like Rock Band and sports games usually work well for this.
There's no -1 for "I don't get it."
Have the students produce something like an Android app as a team. Sell it on the Play Store and give them the proceeds. This will spark lots of interest.
Quake 2
People from the 80s:
When you were learning programming the PC may have been the new shiny toy.. so it didn't really matter that the only thing it could do was BASIC you played with it because it was an interesting new gadget. Fast forward to 2013.. computers are everywhere and they are "boring" nobody cares about 6502 assembler or that you can trick your dot matrix into printing pictures with ASCII codes.
People from the 90s:
When you were learning programming this new thing called "The Internet" was all the rave! You wanted to learn "HTML" to show your useless dog in cyberspace. You were entralled by CSS and JS and other sillyness and ignored the fact that you reinvented the wheel (badly) when programming in your awesome Perl script.
Fast forward to 2013.. nobody cares about "the Internet" its here.. we use it everyday.. what's the big deal?
Back in the day.. there wasn't much to do with a computer.. so we enjoyed inventing things for it, building things. These days people would rather just hang on Facebook or Tumblr and veg. The computer is not a place for exploration.. it is an old dirty thing that sits in a room somewhere or some unexciting laptop whose battery doesn't last more than 15 mins.
People today are crazed about Cellphones and Tablets that are the new toy. They are looking for ways to justify their ridiculous spending with such toys and trying to convince dad to buy them the iPhone 5 or the Galaxy S4 or whatever. If you can show them to write apps for the baby and give them some instant gratification doing so (PRINT "HELLO" won't work anymore) using modern interfaces they'll love you for it.
Robotics are also starting to be interesting so using a tool like Lego Mindstorms or something better to make some complex programs si cool also.
Also, games are a great way to get started because it is a great excuse to teach math and physics and some advanced programming concept. But to get immediate gratification you could try Pilas Engine (Python based) or maybe something better.
Finally, I agree with other posters that using something like Java can be tedious for beginners. I remeber BASIC and LOGO because they gave me instant gratification. I suggest Python based tools as a good way to begin or AppInventor or something similar if you prefer.
Kids will stay more interested if you get them writing games. One of the easiest ways to do that is with the Alice programming language.
www.alice.org
It seems that you are not the only one with a shrinking CS club. It was similar at my school.
For ones last three school years, there were completely optional but graded CS classes in my school.
When I started, there were two full classes, about 40 students. After the announcement of the first test (around four weeks in), the number shrunk to 20. Now the teacher had separated the wheat from the chaff and classes became a little less difficult. Meanwhile he had also started a CS club for younger students, but only one student attended.
After that first year, the teacher, who was very good, went into retirement and another ten 10 students resigned from CS classes. The new teacher wasn't nearly as good and his knowledge was partially outdated, after a semester another 4 students resigned.
And during the last year we were 3 students.
Some students left because classes were at 7 o'clock in the morning, some because they needed to make cuts in their overloaded schedule, some because they did not like the classes of the new teacher, some because classes were to hard for them, some because classes did not measure up to their expectations.
Free pizza and beer!
That should create some excitement.
I realise the FIRST competition is more geared towards engineering, but....do that?
"build robots and battle against other schools"
it'll attract a few.
As someone that ran one for 15 years, you have to offer things that nobody else does.
* ENVIRONMENT
It has to be a friendly environment with as few rules as you can, and when somebody breaks a rule, politely point it out to them, don't talk down on them.
Don't make people register. Its far too invasive, you don't need a bunch of details on other people. You need to ask your self why you are there? Is it to exchange knowledge and have fun, or is it to gather information on people?
* EDUCATION
Invite some experts to bring products and talk about them, or share some knowledge. You might have people talking about different kinds of hacking, or security related activities and a Q&A. Some people there may not want to participate in that, so let them do their own thing, as long as they don't disrupt the presentation.
* TECHNICAL
Many people have technical issues with their computers and they may need some technical assistance to help them solve the issues. It's a good time to get a number of opinions and different experts working on something (everybody has an opinion) for free.
* FUN
There is a reason LAN parties almost always have lots of people, because it provides an oportunity for people to trade files and play games and just have some fun, and break for a pizza or something. You don't really have to turn your club into a LAN party, but you can adopt some aspects of it such as programming contests, presentations, etc. etc.
don't be such a know it all. That helps alot.
I managed to apply to colleges with "Founder of the high school's Local Area Networking Club" on my resume. The trick was, the club didn't really exist in the way that the high school thought.
1) I went to the Principal to get permission to start the club, and explained how it would be all about learning computer science applicable networking skills.
2) I went to my friends about the club, and told them we would play computer games all the time. We played a ridiculous amounts of Counter-Strike in the CS lab after school.
3) There were a few people in the club who were seriously interested in Computer Science, and I spent a good amount of time outside of club events with them actually talking about interesting CS theory.
So basically, the trick is to lie to everyone and let the masses eat cake, but still use the club the way it is intended for your own personal edification. Those four guys who were with you from the start will be good guys to know for the rest of your CS life.
If your club is boring (read: uninteresting) then and lacking in discussion, demonstrations, games / fun, workshops, group projects/studies and even problem solving for your peers and staff, then don't be surprised if your membership falls short of your expectations.
Back before the PC was invented, I started a Computer Science Explorer post after one of my high school teachers suggested I do this. This allowed us to have access to the local community college's excellent computer facilities and we also were given a great mentor by the community college. We played games (mystery mansion and trek), worked on writing an interactive version of the game Risk in SPL and learned to hack in Fortran. We had a consistent group of 8 or so members for 3 years. The point is, look for ways to use your status as a club to get access to interesting events and resources. I got more than I could ever have imagined for free by creating my club and it had a life long impact on my career.
Before making the big leap into opengl and such, you can make a simpler step into fully programmatic computer animations, either with Processing or Happy Fun Coding.
Games.
Really no more to it than that. Code games, simple ones then complex ones. Even at an advanced graduate level the lure of some sort of game makes most people go aflutter (not many get jazzed by cache replacement policy demo programs). I don't really know why, but it happens every time.
Start with something dead-simple (hot-seat tic-tac-toe, or even shoots and ladders). The nice thing is that a game includes almost all parts of computing. The mistake would be to pick a "game framework" and try to teach that. What that would be to your students is giant wad of stuff they have to read and grok to have fun. Don't do that. Keep it simple- a tic-tac-toe that prints the board after every move- something easy enough to implement with plain old C and stdout.
The mistake is to jump to a complicated framework (which takes time to learn). Get to the coding as fast as possible. Get to something tangible at first (games).
Give them the tools they need to build games, then leave it to their imaginations! Maybe even walk them through a bit of demo code. Teamwork should also help.
Tell them to forget a stupid "language" like java, its holding everyone back
Try 'Land of Lisp' by Conrad Barski. The subtitle is 'Learning Lisp One Game at a Time.' No, it's not GUI action games, but it will really ring the bell of those who like to make the computer do cool stuff.
Make a list of 30 apps that solve real world computer/human problems, ranging from tiny to medium sized. Have your group pick 4-5 of these and start with the smallest one (to boost confidence). Share these apps with the community through your school's website, including source code.
Well something very interesting that will use computer science ...
Think Arduino and Raspberry Pi micro controllers.
Basically inexpensive to start with, and loads of fun.
That sounds like a fairly normal attrition rate. Pretty much all clubs go through this when they start up. (Sports clubs and other retard-entertainment may be different. But I doubt they'd be much different.)
Plus a significant proportion of your membership will have graduated / moved on to other interests / discovered 1-person sex / discovered multi-person sex / moved away ... from year to year. You have three interlinked problems : retention of existing members ; recruitment of new members ; co-option of new members into administration of the club. (I'll ignore the dressing of the club with the trappings of democracy. The only time this is going to be a real issue, is when you don't have a membership crisis. Until then, Benign Dictatorship with the window-dressing of a compliant troika is more effective.
See above.
Welcome to the wonderful world of politics. You might be under the delusion that you are running a computer club, but in reality you have become a competitor against every member of the club who thinks that they can manage the club better than you. I.e. you're a politician under fire. Enjoy!
Meantime : pack the board (however : read the local election rule book, then put a surf board and 80-piece orchestra on your shoulders before sailing through the larger holes) with your supporters ; run the club the way that you want ; choose your successor (someone who will leave at least one, better two, years later than you) and whip your sock-puppets into line to guarantee a succession. Then grow. Grow! GROW! When you've got enough people who joined in first-year, were active through all of second year, and WILL attend third year ... then you can think about transitioning to something that resembles "democracy". But while you're starting and building a club - is not the time to be worrying about other people's opinions.
Someone else is certain to take control of your club at some point. Unless you're particularly sad. So concentrate on GROWTH (dominance if there are relevant competitors), SUCCESSION, and .... well maybe then you can go onto policy. Which your replacement will change, once you're at college (or dead and buried ; same difference).
The manual you need was written by one Niccolo Machiavelli in about 1480. The titles of the roles may have changed slightly ; the actions haven't.
There's a damned good reason that Machiavelli's "human group programming" instruction manual is still in print : it works.
Cynic?? Moi? Mais oui ; avec raison!
Birds are not dinosaur descendants;birds are dinosaurs, for all useful meanings of "birds", "are" and "dinosaurs"
The project is straightforward: 1) build the computer simulator for the core 2) write the operating environment (very simple task switching) 3) let the club loose! They could organise as individuals, teams or both. Nothing like a gladiatorial contest and a little geeky bloodlust to fan the fires of enthusiasm. [Negative points for gratuitous references to TRON .... apart from the lightcycle of course.]
Guest speakers from local companies that do stuff that your members might be interested in. That was the main thing that kept me interested, anyway.
Under capitalism man exploits man. Under communism it's the other way around.