Answers.Body: <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>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-18T00:55:08.043Z
Answers.Text: 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.
Answers.UserDisplayName: Selisine
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-19T11:37:15.697Z
Answers.Text: You can always use "Google Colab", which is based on Jupyter notebooks and does not need any installation, it's cloud based.
Answers.UserDisplayName: rodrunner
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-22T12:58:08.910Z
Answers.Text: 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!
Answers.UserDisplayName: Selisine
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2023-12-29T10:46:00.500Z
Answers.LastActivityDate: 2023-12-29T10:46:00.500Z
Answers.UserDisplayName: rodrunner
Answers.Body: <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>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-11T03:16:49.963Z
Answers.Text: 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?
Answers.UserDisplayName: Selisine
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-11T10:37:41.690Z
Answers.Text: @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.
Answers.UserDisplayName: candied_orange
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-18T00:44:26.500Z
Answers.Text: 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?
Answers.UserDisplayName: Selisine
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-18T01:23:57.980Z
Answers.Text: @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.
Answers.UserDisplayName: candied_orange
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-19T11:21:58.013Z
Answers.Text: 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!
Answers.UserDisplayName: Selisine
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-19T12:32:12.317Z
Answers.Text: @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.
Answers.UserDisplayName: candied_orange
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-22T13:01:18.183Z
Answers.Text: 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!
Answers.UserDisplayName: Selisine
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-29T12:40:58.150Z
Answers.Text: 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.
Answers.UserDisplayName: Selisine
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-29T12:47:39.720Z
Answers.Text: @Selisine congratulations!
Answers.UserDisplayName: candied_orange
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-29T13:23:27.540Z
Answers.Text: 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.
Answers.UserDisplayName: Selisine
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-29T17:19:31.453Z
Answers.Text: @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.
Answers.UserDisplayName: candied_orange
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-30T22:35:57.827Z
Answers.Text: 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.
Answers.UserDisplayName: Selisine
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2024-01-10T02:04:26.190Z
Answers.LastActivityDate: 2024-01-10T02:04:26.190Z
Answers.UserDisplayName: candied_orange
Body: <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>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-12-06T12:45:39.863Z
Comments.Text: Why C++ may I ask. It is one of the hardest to use properly. Nor is it specifically object-oriented.
Comments.UserDisplayName: Buffy
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-12-06T13:50:40.043Z
Comments.Text: @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.
Comments.UserDisplayName: Selisine
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-12-06T14:12:59.417Z
Comments.Text: 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.
Comments.UserDisplayName: Buffy
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-12-06T14:17:46.877Z
Comments.Text: 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.
Comments.UserDisplayName: Selisine
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-12-06T15:13:53.177Z
Comments.Text: What is your school's primary language now? Would you be willing to switch to that? I probably have some ideas.
Comments.UserDisplayName: Buffy
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-12-06T18:15:46.247Z
Comments.Text: 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
Comments.UserDisplayName: Selisine
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-12-06T18:19:51.100Z
Comments.Text: Let us [continue this discussion in chat](https://chat.stackexchange.com/rooms/150161/discussion-between-selisine-and-buffy).
Comments.UserDisplayName: Selisine
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-12-07T11:18:11.830Z
Comments.Text: 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.
Comments.UserDisplayName: Buffy
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-12-07T22:36:02.210Z
Comments.Text: 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.
Comments.UserDisplayName: ggorlen
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2023-12-08T13:12:22.643Z
Comments.Text: @ggorlen They’re game-like: things like tic-tac-toe & Battleship. I could do coding challenges though, that could be interesting.
Comments.UserDisplayName: Selisine
Tags: <programming><lesson-ideas><object-oriented-paradigm><c++>
Title: Teaching a coding language in an interactive way for a school club
ThreadText: # 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-username_0-and-username_1).  
  > **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!  
  
  ---
  
  