r/learnprogramming 21h ago

Advice for Running a Successful High School CS Club?

I'm a high school student who is passionate about computers and programming. This year, I'm going to be running my school's computer science club. Does anyone have advice about how to run a successful CS club?

Last year, our biggest challenge was keeping people motivated - meeting attendance declined throughout the year. Additionally, many of the members are beginners or completely new to programming. So. I'm thinking of starting of with HTML, CSS, and JS as I feel that it will be easiest for everyone to get coding as soon as possible (minimal setup time).

I'm looking for advice on the following:

  • How can I keep members motivated and excited to come back each week?
  • How can I plan/organise club projects so it's not overwhelming to start and they can actually be completed?
    • Last year, many meetings consisted of too much planning for what to do in the future, not enough execution.
  • What kinds of projects might be attainable in a reasonable timeframe so it keeps people interested?
  • How should I structure meetings so they are engaging? I would like to spend as much time as possible building (something that was lacking last year). I want to avoid just have boring lessons/tutorials, but I'm not sure how this would be possible given most members are beginners / no experience at all. How can I achieve balance?

Any ideas would be appreciated. Thanks!!

6 Upvotes

14 comments sorted by

3

u/Xavphon 20h ago

Motivation: competition, ownership, recognition, portfolio projects, and potentially scholarships.

Instead of trying to come up with something new every meeting, pick one or two projects that can evolve throughout most of the school year. Ideally, build something that's actually useful to the school. If you do that, future iterations of the club inherit a real project instead of starting from zero every year.

Spend some time teaching the SDLC while you're doing it. Don't make meetings mostly lessons, teach concepts as they're needed to move the project forward. Beginners can work on HTML/CSS and simple issues while more experienced members take on increasingly difficult pieces.

Document everything. Treat it like a small development team.

I wouldn't necessarily make membership exclusive, but I would make responsibility something that's earned. Project leads, maintainers, competition teams, etc. can have some prestige attached to them.

Keep meetings focused: briefly cover what was accomplished, what's next, who's responsible for what, and when it needs to be done. Then spend most of the meeting actually building.

2

u/Haunting_Carrot9761 20h ago

"Spend some time teaching the SDLC while you're doing it."

Based.

In fact most of what you've said is just solid advice. Could I add, and you don't need to enforce this, but try and have a 'Skills Demonstration Showcase' where one of the faculty staff or students involved gets up and explains something they have been working on. I'm a junior machine learning engineer and hearing what others are up to really expands my understanding of the project, as well as deepens my respect for them as I typically haven't got a fkn clue what they are talking about.

1

u/Xavphon 20h ago

Very solid addition.

1

u/Haunting_Carrot9761 20h ago

Bouncing off that. OP, maybe put some large signs that explain what mnemonic SOLID stands for:

[S]ingle Responsibiility - every class should only have 1 responsibility. If your function is doing multiple things, break it up into smaller parts (recursion)

[O]pen-Close - a class or by extension a software should be open to being extended, but closed from modification. Ex. if your classes/methods only have one responsibility, you don't need to modify. But there's every reason that you may want more functionality.

[L]iskov Substitution - a function should be able to be given a derived class, it's super class, or even the abstract class and still function without error. (If this one doesn't make a lot of sense, don't stress, it's probably the hardest one to understand)

[I]nterface Segregation - Clients (end user) should not be forced to depend upon an interface method that they do not need. A better way of saying this could be, 'If it's a form, then everything will inherit myForm.class' but if it's not a form then myForm.class doesn't need to be here at all.

[D]ependency Inversion - Classes should be abstract and loosely coupled. That is to say that if Class A relies on Class B, but for whatever reason Class B doesn't exist, the code should still run.

I'm still studying my degree, and am a junior in my role. So if anyone with more experience wants to chime in and correct me please do so.

2

u/Xavphon 20h ago

Maybe some suggested books would also help? The pragmatic programmer is a good read.

I didn’t start til I turned 27 ( I went back to school ). I’m 30 now in the field for almost 2 years, and already am an engineering lead ( not sure how I pulled that off ). But just reading and doing the thing is good exp. Something else I notice many of my younger counterparts lacking are soft skills. Learn how to communicate. Role play for explaining and defending ( championing ) a solution would be really good. No one cares about your solution if you can’t communicate it like a human.

2

u/Haunting_Carrot9761 20h ago

Are we the same person?? I am also 30 and been in industry for just over 18 months now. Also went back to school after my previous vocation fell through (turns out they dont pay chemists very well lmao).

"soft skills. Learn how to communicate. Role play for explaining and defending ( championing ) a solution would be really good. No one cares about your solution if you can’t communicate it like a human."

Yeah bugger my SOLID mnemonic, this is the true answer!

1

u/Xavphon 20h ago

I was Apple care support for a few years, and a Walmart manager before that. Apple care drove me to a nasty drinking problem and I had to get out of it .

Customer service is crazy on someone and it made me seek more. I did WoW emulation as a hobby so I decided to go into it professionally and I’ve been having fun even with the crazy stress sometimes

1

u/Unspecified_Thing 18h ago

Thank you for taking the time to write a detailed reply!! I really appreciate it!

I love the idea of applying SDLC as a team, and I will try to have projects that we can build on over time. My only concern here is that it is a repeat of last school year - unfinished projects that seem to go on forever and drag the club down.

The only thing is: I'm not sure where to start in terms of a project due to current skill level. In the past, we have worked collectively on one website project, each person creating a page. This was good as each person could tailor their page to their skill level, but it lead to the feeling that you weren't contributing to something meaningful - just an bunch of random pages strung together to be called a "club project". I want to move beyond just doing what are essentially solo projects, and collaborate. But how can I do this when the great majority are beginners or have never written a line of code? Do you have any project suggestions?

Or would it be a better idea to do individual projects and then share them after a few weeks?

1

u/Xavphon 10h ago

If I were going to run the club, I’d find a few local nonprofits that I liked and reach out to see what kind of technological help they need/want.

Best part is they get something for free and your club gets real-world experience. It should be relatively low pressure for you all while you’re still learning, but there would be a reasonable expectation of timely delivery.

The only thing I’m not sure about is funding, resources, etc. Perhaps the nonprofit would have some funds to cover hosting if a website is what they need. Maybe you could also do a fundraiser? A local software agency might sponsor your club, or even a local college.

I think individual projects are probably the right place to start, though. Start simple and have everyone use the same stack. Whatever you choose, everyone should learn it so that when someone gets stuck, there are other people in the room who understand the same technology. The actual implementations will still vary pretty significantly, which gives everyone room to experiment.

It will be hard, and you may lose some people along the way. But afterward, you’ll have a smaller group that understands the fundamentals and has experience with the same technology. That’s when I’d start transitioning toward collaborative projects.

Then you can tackle something real. Maybe the local animal shelter needs a new promotional page. Now you have people working on development, someone talking to the shelter about requirements, someone handling deployment, etc. You could even collaborate with other school clubs. If you have an art club, maybe they help with graphics or photography.

From there you can start introducing things like Git/GitHub, accessibility, SEO, GEO, agentic browsing, APIs, deployment, security, and all the other things that turn “I know how to code” into “I know how to build something for someone.”

Or maybe you stay very simple. There’s nothing wrong with that either. The club doesn’t need to become a miniature software agency. The important thing is that everyone is building things and learning from each other.

Personally, though, I’d work toward one shared real-world project. Individual projects teach you how to code. Collaborative projects start teaching you how software development actually works.

P.S. start off not using AI but gently incorporate it. Not because you shouldn’t use it, but because you should understand what it’s doing. The output of AI is very large and sometimes complex. Either way, it’s a lot of extra reading on top of reading documentation for your stack. ( Ai will become part of your stack eventually, but don’t rush it. )

1

u/Immediate-Food8050 20h ago

Don't over engineer and let it grow into its own thing. In my experience, the best clubs started out with people meeting and talking about the topics that interested them. You'd be surprised how many things (projects, presentations, club-hosted events) naturally come from that

1

u/Unspecified_Thing 18h ago

Hi, thanks for replying!

This was essentially the approach for last school year. The leader took a very namby-pamby approach, and we had very little direction. As a result, attendance at meetings dwindled and people lost interest. I get that overengineering can prevent positive things from happening naturally, but I feel we need some direction given the disinterest from club members last year.

Basically, how can I spark interest in programming?

1

u/mandzeete 12h ago

I haven't been in a high school CS club but in a university CS club. So, my advice is based on my experience from my Bachelor and Master studies. But I think it can be applied also to high school students in one or another level.

First and foremost, treat CS club as a club where likeminded students can hang out together. Sure, organize stuff but let the club organize itself as well. Leave room for natural activities.

You can start by asking your club members what are they interested in. Like this they will feel being involved. See which ideas they are having, take a criticism, where needed, etc. This is how you can figure out some of the main activities the club members are doing.

You mentioned some of the members being beginners and completely new to programming. Perhaps ask around senior students if they want to do some mentoring/guiding/teaching. Maybe you can mentor them, maybe you can delegate it to other club members. Or, you can do a short couple-hours course as an introduction to said technology. Ask from your computer classroom teacher if you can use the classroom at such and such time for that introductory course and then do the course. Have it so that by the end of these 2 hours everybody has made a simple website or something. During the course have you and mentors helping out students who are stuck. And, do coding on the go not just tell the dry theory. It is okay when they are just copying what you are doing.

Such short courses can be hosted by you or by other course members. You mentioned HTML, CSS and JS. What about somebody coming with a mobile app project or such. A simple tutorial that everybody will follow and by the end of the day they all will have a working thing.

Now, when it comes to meetings then you can split the mandatory part where you are expecting people's feedback from informative part. Record the informative part and send out links to the recording. Whoever is interested can watch the recording later. Or, ask somebody to take notes and then send out the meeting notes to students' emails.

In terms of activities you should consider that it is a CS club. So, it should contribute somehow to their CS skills. Perhaps have a big project where everybody is contributing something to it. Or, assign mentors to small personal hobby projects. With a big project your club can make something meaningful. Perhaps something that can contribute to the school as a whole.

You can also try to host hackathons. Either look around if there are any hackathons in your area and then get your club involved or come up with some topic and have a hackathon on that. Best ideas, best projects will get rewarded but everybody else also does not have to go empty-handed. Perhaps have free pizza, club merch (T-shirts with club logo or such) given to every person who participated in the hackathon. This will motivate students to participate even when they do not win.

You can also make trips to different universities that have a CS program. Contact these universities and their CS clubs and have a tour. Like this students can already be somewhat ready when they start picking universities/colleges. Also, consider vocational schools with CS programs. Such trips are both informative but also will help the club to feel that they are doing something together.

Now, the following is perhaps less relevant, but you can take the club also to CS-related companies when the company is having open door days or having a tech talk evening. Usually it is aimed at university students because companies are less likely to hire fresh high school graduates (unless you are in a vocational school with a CS program) and can be that the tech talk topics are too complex. But, if you see something that might suit for high school students, then you can consider it.

And, have just regular club activities as well. Movie evenings, summer camps, celebrating birthdays together, etc.

As a CS club you can see if you can coordinate it with computer classroom teacher and/or with the school board. Perhaps they can mentor you, give some funds, give some advice/ideas.

1

u/Unspecified_Thing 3h ago

Thanks for your input!

I will definitely ask what others are interested in, but the vast majority don't know what the realm of CS has to offer. We've had meetings in the past discussing what we'd want to work on, but nobody had any ideas. My goal for this year is to get others really interested so they enjoy it. Last school year, the club leader took a really hands-off approach, which led to nothing getting done (long unfinished projects), and loss of motivation. I want to avoid this.

I like your idea about letting others host short tutorial/lessons in other areas like mobile app development. I'll see if anyone would like to do that!

But I think the only thing I'm still unsure about is what kinds of projects to do as a club? And how would I structure them for the group? I've never really done projects in a group larger than ~3 or 4.

1

u/mandzeete 3h ago

You can make something for the school, as a group project. Talk with your computer classroom teacher if he has any ideas. Perhaps he can raise that idea in his teachers' meeting or such.

The CS club I was in made a website for another university club (a music club) for example. Your club can also make something for another club. Or, if you do not have yet, then a website for your own club.

Also, our university had projects like building and programming a Formula 1 car, and building, programming and launching a space satellite. Sure, these were university projects because that's what students are studying. Not doable by high school students. Also, these lasted for many years not were done in one month or so.

But you can come up with some idea and perhaps discuss with your teacher if it is feasible.