<p>I teach python using <a href="https://jupyterlab.readthedocs.io/en/stable/" rel="nofollow noreferrer">jupyter-lab</a>. I can create my notebooks in jupyter with interactive exercises and share them with my students.</p>

CC BY-SA 4.0
2024-01-18T00:55:08.043Z
I might be able to use this, but I’m working with limited resources. Currently we have access to chromebooks, and we’re working to see if we can find a sponsor that can allow us to use their computer lab.
Selisine
CC BY-SA 4.0
2024-01-19T11:37:15.697Z
You can always use "Google Colab", which is based on Jupyter notebooks and does not need any installation, it's cloud based.
rodrunner
CC BY-SA 4.0
2024-01-22T12:58:08.910Z
I’ll definitely look into that then. I’ll likely do some tests with friends to get a gist of what we’d be working with, then implement it. Thanks!
Selisine
CC BY-SA 4.0
2023-12-29T10:46:00.500Z
2023-12-29T10:46:00.500Z
rodrunner
<p>Lectures? Boring.</p>
<p>Give me a puzzle. Who can modify this code so the computer says their name? Can you make it add 2 plus 2? How would you get it to list prime numbers?</p>
<p>Show me the challenge. Then reveal the tools. Do it this way and I’ll stop asking if this will be on the test.</p>

CC BY-SA 4.0
2024-01-11T03:16:49.963Z
I like this idea a lot, and I could see it working pretty well. However, what if they start to apply things incorrectly, and it veers them off course to the many methods of solving the puzzle?
Selisine
CC BY-SA 4.0
2024-01-11T10:37:41.690Z
@Selisine (1+1)+(1+1) works. It’s just pointlessly hard to read. You’re looking for good solutions to the puzzle. Not making them play, “guess what the instructor was thinking”. Teach them what a code review is. Make them read each other’s code. Making the CPU happy with the code is only part of the job.
candied_orange
CC BY-SA 4.0
2024-01-18T00:44:26.500Z
That’s fair. If I can figure out how to incorporate this, I could see it working well. What are some examples of times you’ve either used this method or been apart of it?
Selisine
CC BY-SA 4.0
2024-01-18T01:23:57.980Z
@Selisine I remember it being used in my data structures class. We started with a problem then learned what structures could solve it (and the pros and cons of each). I also remember reading each chapter in my textbooks backwards. I'd start with the homework then read similar looking examples until I knew how to solve the homework. Text books sometimes try to do this by listing the objectives. But it's more fun when the teacher asks the class how solve something without telling you how right away. It lights up your imagination.
candied_orange
CC BY-SA 4.0
2024-01-19T11:21:58.013Z
I could see how we can implement that. I talked it over with the VP and we came up with maybe giving the students a prompt and time to brainstorm in a group how to solve that prompt. Then we could provide some examples using the syntax and see if they can work from there. Thanks!
Selisine
CC BY-SA 4.0
2024-01-19T12:32:12.317Z
@Selisine that's a good approach. Not every problem needs much brainstorming in groups. Sometimes just a chance to raise a hand and suggest a method. Critical here is to not shut down ideas that don't match what you were thinking. Sometimes the best response is to just say, "Wow, I hadn't thought of that. How would it work? Can you show me?" and if time is tight ask them to show you after class.
candied_orange
CC BY-SA 4.0
2024-01-22T13:01:18.183Z
I’ll definitely take that into account as well. We’ve still got a lot to learn as we’re pretty young as a club (this is our first full year). I’ll relay this to the other board members, I appreciate the help!
Selisine
CC BY-SA 4.0
2024-01-29T12:40:58.150Z
Good news! I tried the discussed methods with the concept of objects and structs, and it traveled pretty well in an engaging and fun way throughout the club.
Selisine
CC BY-SA 4.0
2024-01-29T12:47:39.720Z
@Selisine congratulations!
candied_orange
CC BY-SA 4.0
2024-01-29T13:23:27.540Z
Thanks! I’m hoping to work through classes, which could be tricky, but I have some ideas on how get them into the idea of classes.
Selisine
CC BY-SA 4.0
2024-01-29T17:19:31.453Z
@Selisine classes are how some languages get you objects. That’s not the only way. The object oriented paradigm doesn’t care how you do it.
candied_orange
CC BY-SA 4.0
2024-01-30T22:35:57.827Z
I’ll keep this in mind, it should be interesting to see how they use it—I’ve already seen methods I’ve not thought of.
Selisine
CC BY-SA 4.0
2024-01-10T02:04:26.190Z
2024-01-10T02:04:26.190Z
candied_orange
<p>I am currently a senior in high school who runs a club centered around teaching C++ to interested people. However, my fellow board members and I have recognized that our style of teaching the programming language is very sequential and lecture-like if that makes sense.
If anyone has experience in running clubs, teaching software development and/or programming languages, or if you just have ideas that might benefit the club as a whole, it'd be much appreciated.</p>

CC BY-SA 4.0
2023-12-06T12:45:39.863Z
Why C++ may I ask. It is one of the hardest to use properly. Nor is it specifically object-oriented.
Buffy
CC BY-SA 4.0
2023-12-06T13:50:40.043Z
@Buffy We had it in the curriculum at our school, then they took it out, but I still found it to be useful so I wanted to continue teaching it to people who were interested. Additionally, we try to teach it like an OOP, that way it can be implemented in other languages that students would want to learn in the future.
Selisine
CC BY-SA 4.0
2023-12-06T14:12:59.417Z
It is very awkward to teach and use C++ as an OOP. I have a lot of experience with that. It is properly a multi paradigm language focused on data abstraction, not OOP. The true polymorphism of OOP is painful in C++ and prone to errors. OOP means more than classes. And the idea of a class in C++ and in, say, Python or Java are very different. One (C++) creates stack objects without polymorphism. The others are heap based with automatic garbage collection. You have taken on a very heavy task for secondary school. That is probably why the school switched languages.
Buffy
CC BY-SA 4.0
2023-12-06T14:17:46.877Z
I could see that being awkward. That being said, it has stuck decently well on those trying to learn it from us (we’re on basic C++ so it might become quite difficult when we dive into classes and stuff along those lines). Whatever language it might be, I was more wondering about some exciting and memorable methods to teaching a programming language.
Selisine
CC BY-SA 4.0
2023-12-06T15:13:53.177Z
What is your school's primary language now? Would you be willing to switch to that? I probably have some ideas.
Buffy
CC BY-SA 4.0
2023-12-06T18:15:46.247Z
We have an AP program that teaches Java, and a regular program that teaches Python. I don’t see why I would need to switch to either considering they’re already taught
Selisine
CC BY-SA 4.0
2023-12-06T18:19:51.100Z
Let us [continue this discussion in chat](https://chat.stackexchange.com/rooms/150161/discussion-between-selisine-and-buffy).
Selisine
CC BY-SA 4.0
2023-12-07T11:18:11.830Z
Learning CS doesn’t mean learning a lot of languages. But a functional language like Scala or Scheme would be a better choice for you.
Buffy
CC BY-SA 4.0
2023-12-07T22:36:02.210Z
What sort of projects do you make, if any? If the lectures are too lecture-like, could you switch to something more hands-on and project-based? C++ is a difficult language, but if you're using some sort of structured Arduino or SFML curriculum, it could be workable. C++ is also the standard for competitive coding, so if you're not doing games or hardware, solving coding challenges from beginner to more advanced might be an approach to consider.
ggorlen
CC BY-SA 4.0
2023-12-08T13:12:22.643Z
@ggorlen They’re game-like: things like tic-tac-toe & Battleship. I could do coding challenges though, that could be interesting.
Selisine
<programming><lesson-ideas><object-oriented-paradigm><c++>
Teaching a coding language in an interactive way for a school club
# Teaching a coding language in an interactive way for a school club

(Asked by: username_0 on 2023-12-06)

I am currently a senior in high school who runs a club centered around teaching C++ to interested people. However, my fellow board members and I have recognized that our style of teaching the programming language is very sequential and lecture-like if that makes sense.
If anyone has experience in running clubs, teaching software development and/or programming languages, or if you just have ideas that might benefit the club as a whole, it'd be much appreciated.

**Tags:** programming, lesson-ideas, object-oriented-paradigm, c++

> **Comments:**
> **username_1**: Why C++ may I ask. It is one of the hardest to use properly. Nor is it specifically object-oriented.  
> **username_0**: @username_1 We had it in the curriculum at our school, then they took it out, but I still found it to be useful so I wanted to continue teaching it to people who were interested. Additionally, we try to teach it like an OOP, that way it can be implemented in other languages that students would want to learn in the future.  
> **username_1**: It is very awkward to teach and use C++ as an OOP. I have a lot of experience with that. It is properly a multi paradigm language focused on data abstraction, not OOP. The true polymorphism of OOP is painful in C++ and prone to errors. OOP means more than classes. And the idea of a class in C++ and in, say, Python or Java are very different. One (C++) creates stack objects without polymorphism. The others are heap based with automatic garbage collection. You have taken on a very heavy task for secondary school. That is probably why the school switched languages.  
> **username_0**: I could see that being awkward. That being said, it has stuck decently well on those trying to learn it from us (we’re on basic C++ so it might become quite difficult when we dive into classes and stuff along those lines). Whatever language it might be, I was more wondering about some exciting and memorable methods to teaching a programming language.  
> **username_1**: What is your school's primary language now? Would you be willing to switch to that? I probably have some ideas.  
> **username_0**: We have an AP program that teaches Java, and a regular program that teaches Python. I don’t see why I would need to switch to either considering they’re already taught  
> **username_0**: Let us [continue this discussion in chat](https://chat.stackexchange.com/rooms/150161/discussion-between-selisine-and-buffy).  
> **username_1**: Learning CS doesn’t mean learning a lot of languages. But a functional language like Scala or Scheme would be a better choice for you.  
> **username_2**: What sort of projects do you make, if any? If the lectures are too lecture-like, could you switch to something more hands-on and project-based? C++ is a difficult language, but if you're using some sort of structured Arduino or SFML curriculum, it could be workable. C++ is also the standard for competitive coding, so if you're not doing games or hardware, solving coding challenges from beginner to more advanced might be an approach to consider.  
> **username_0**: @username_2 They’re game-like: things like tic-tac-toe & Battleship. I could do coding challenges though, that could be interesting.  

---

## 2 answers

### Answer by username_4 on 2024-01-10. Score: 6 | Accepted answer

Lectures? Boring.

Give me a puzzle. Who can modify this code so the computer says their name? Can you make it add 2 plus 2? How would you get it to list prime numbers?

Show me the challenge. Then reveal the tools. Do it this way and I’ll stop asking if this will be on the test.

> **Comments:**
> **username_0**: I like this idea a lot, and I could see it working pretty well. However, what if they start to apply things incorrectly, and it veers them off course to the many methods of solving the puzzle?  
> **username_4**: @username_0 (1+1)+(1+1) works. It’s just pointlessly hard to read. You’re looking for good solutions to the puzzle. Not making them play, “guess what the instructor was thinking”. Teach them what a code review is. Make them read each other’s code. Making the CPU happy with the code is only part of the job.  
> **username_0**: That’s fair. If I can figure out how to incorporate this, I could see it working well. What are some examples of times you’ve either used this method or been apart of it?  
> **username_4**: @username_0 I remember it being used in my data structures class. We started with a problem then learned what structures could solve it (and the pros and cons of each). I also remember reading each chapter in my textbooks backwards. I'd start with the homework then read similar looking examples until I knew how to solve the homework. Text books sometimes try to do this by listing the objectives. But it's more fun when the teacher asks the class how solve something without telling you how right away. It lights up your imagination.  
> **username_0**: I could see how we can implement that. I talked it over with the VP and we came up with maybe giving the students a prompt and time to brainstorm in a group how to solve that prompt. Then we could provide some examples using the syntax and see if they can work from there. Thanks!  
> **username_4**: @username_0 that's a good approach. Not every problem needs much brainstorming in groups. Sometimes just a chance to raise a hand and suggest a method. Critical here is to not shut down ideas that don't match what you were thinking. Sometimes the best response is to just say, "Wow, I hadn't thought of that. How would it work? Can you show me?" and if time is tight ask them to show you after class.  
> **username_0**: I’ll definitely take that into account as well. We’ve still got a lot to learn as we’re pretty young as a club (this is our first full year). I’ll relay this to the other board members, I appreciate the help!  
> **username_0**: Good news! I tried the discussed methods with the concept of objects and structs, and it traveled pretty well in an engaging and fun way throughout the club.  
> **username_4**: @username_0 congratulations!  
> **username_0**: Thanks! I’m hoping to work through classes, which could be tricky, but I have some ideas on how get them into the idea of classes.  
> **username_4**: @username_0 classes are how some languages get you objects. That’s not the only way. The object oriented paradigm doesn’t care how you do it.  
> **username_0**: I’ll keep this in mind, it should be interesting to see how they use it—I’ve already seen methods I’ve not thought of.  

---

### Answer by username_3 on 2023-12-29. Score: 2

I teach python using [jupyter-lab](https://jupyterlab.readthedocs.io/en/stable/). I can create my notebooks in jupyter with interactive exercises and share them with my students.

> **Comments:**
> **username_0**: I might be able to use this, but I’m working with limited resources. Currently we have access to chromebooks, and we’re working to see if we can find a sponsor that can allow us to use their computer lab.  
> **username_3**: You can always use "Google Colab", which is based on Jupyter notebooks and does not need any installation, it's cloud based.  
> **username_0**: I’ll definitely look into that then. I’ll likely do some tests with friends to get a gist of what we’d be working with, then implement it. Thanks!  

---

