#pedagogy
1 messages · Page 6 of 1
Hello, go to #ot0-psvm’s-eternal-disapproval if you're looking to chat with people.
@low ruin for your awareness, I thought your message was a suitable topic for discussion.
Topic: teaching what circular imports are, and how to avoid them
One approach might be to have them draw their program's import graph (a directed graph) and think about how they can restructure it so their are no cycles. They don't necessarily need to know that what they're drawing is a directed graph or what a cycle is. ("Write the names of each module and draw arrows for each import--make sure there aren't any potential loops".)
I don't agree that circular designs are in principle bad and something to teach students to avoid inherently. With beginner programmers, learning programming through OO world-modelling game dev especially, circular relationships crop up everywhere naturally and this isn't a code smell or anything. You just need to have support for it in the language
but if your point is just about avoiding circularity because of python's limitations with circularity, then I would feel fine agreeing with your point
the only place where circularity is inherently problematic in code is circular construction, like where Foo's constructor takes a bar: Bar but Bar's constructor takes a Foo. Then you run into a recursion problem that is tricky to solve. usually requiring lazy/late initialization with null at the beginning to be reassigned later.
and even then a language could probably invent a mechanism to make that more smooth.
or is your point just about circular imports? i.e it is okay to have circular classes, just make sure they are all in the same file? that's reasonable
re-reading your message it does sound like your comment was strictly about imports, so nevermind all I've said
Avoiding circular dependencies is generally a good first goal, regardless of language and limitations. Whether we're talking about database design, Java or Python, various complexities arise with complex interdependencies.
there's many "levels" to circular dependencies, which makes this conversation somewhat abstract... dependencies across modules vs dependencies across classes, etc. But, there's usually a directed solution to these problems (sometimes involving prototypes/abstract classes/interface/etc in whatever language)
From a pedagogical perspective, I'd agree with Stel: map out the relationships, and perhaps introduce the notion of abc's and prototypes. (yes I know there's pythonic solutions to the import issues, but imo reducing circular dependencies leads to cleaner code)
various complexities arise with complex interdependencies.
These complexities are typically related to language-specific resolution mechanics and implementation details right?
I think we have an aversion to circular relations by default because for most languages throughout history the support for them has not been nice.
But if we remove those concerns from the analysis, what is generally good about avoiding circularity?
i don't think we have any trouble reasoning about circularity. A player has a weapon, a weapon is held by a player...
solving circularities usually involves designs that are harder to reason about. Like instead of the player directly knowing what weapon he his holding and the weapon directly knowing what player he is being held by, you introduce a third entity called a PlayerWeaponMap locator, where you have to use the player/weapon as a lookup key to see who they are related to. That is more complex, even if it avoids language difficulties with circularities and solves the problem of maintaining synchronization, because it introduces indirection and global state.
Incidentally, this is how we model such a many to many in a database. (If only one player, then a one to many would be a player FK on the weapon). This may be part of my bias, because I think in db terms first.
i apologise for being off topic but what are circular dependencies?
when module A imports module B imports module C imports module A.
i know its been answered but im still very much a beginner; how does this relate to python not being great for beginners (as one user had said)
it's a potential landmine for beginners if they write code with cyclic imports.
what sort of projects would utilise cyclic imports?
none, because they break your code.
cyclic imports would happen from projects that involve circular designs
game dev projects are an example. There are many entities in a video game world that circularly depend on each other in definition
a Player has an Item and an Item is owned by a Player
This is intuitive and is well supported in many languages. But in Python, attempting to import the Player and Item into each other risks breaking your code.
I think in terms of the domain I'm modelling. ddd
It doesn't mean it's actually modeled as such in the code.
Though it's going pretty far from #pedagogy and more into #software-architecture
it is often modeled exactly as such in the code
that hasn't been my observations
different' experiences with game development I guess
in terms of pedagogy it is the most effective for beginners
a 9 year old will understand a Player holding an Item and the Item being owned by the Player
they will not understand a PlayerItemMapper object that both player/item localized methods must query to find each other
that sounds like unnecessary and unwarranted complexity
which one
all of it
a Player holding an Item and the Item being owned by the Player
this included?
yes
there are countless scenarios when you need to quickly know both of those
have you coded a video game before?
Imagine you cast a spell on an item, to give it an OnFire effect, that makes whatever player is currently holding it, take fire damage.
the most ergonomic way to do that, without all of the code getting spaghettified, is just have an Item.heldBy: Player field
otherwise you have tons of indirection and global state to query.
I have
nah, that's just overengineering and overthinking
you do not need circular references to teach programming or python.
that would be counter productive
this is just a terrible idea
it adds complexity for no reason nor benefit
It's not even how games are made
I am a 21 years old recruiter at a tech company. What about you?
Indeed. Can you show me how the majority of games do leverage circular references as you mentioned?
and how it pertains to teaching programming and python?
I mean actual game
I mean an actual professional game
If you have a specific design to critique, that would be more appropriate to talk about it over #software-architecture .
But in terms of #pedagogy , we need to be able to demonstrate that circular references are an accepted practice, easier to understand and reason about and do have tangible technical benefits
#pedagogy message I have not shifted any argument
See also #pedagogy message
your claim was that #pedagogy message
This has not been my observation that it is often modeled as such
so far, you only have shown an example of how you would model it
not how it is often modeled as such
not really, I would flip the problem and expose a method to compute the effect instead
It simplifies the relationships and enables multiple effects to interact with each others, yielding higher degrees of freedom
not really have the time to sink into a full blown thing.
But think either a method or function that for a given effect will return some score or coefficient used to compute the harm or benefit
it works for my code using design patterns and without any circular reference ¯_(ツ)_/¯
you can do fine with the player holding the items
and then computing the effects from there
you might be interested in the observer pattern to better manage and maintain your code. But again, this has nothing to do with #pedagogy
Please continue this exchange in #software-architecture
Hola ¿Alguno de ustedes habla castellano/español?
Estoy empezando a aprender a programar con Python y, bueno, quería saber si hay alguien que hable el mismo idioma
@full stag only English is allowed on this server. Please join this server: https://discord.gg/hablemospython
I'm teaching pyglet (a graphics module) to a beginner coder. We had been using repl.it, but I'd like to move to an offline IDE. What IDE would y'all recommend? Ideally we wouldn't have to think too hard about virtual environments. Currently I'm thinking pycharm, but I'd rather use an open source editor. What does it mean when jetbrains says the community edition is "built on open source"?
Other beginner IDEs include Mu and Thonny. If you wanted to stay online, but "upgrade" from repl.it, there's also Notebooks like Google Colab.
Mu is easy https://codewith.mu/
Mu doesn't work with pyglet.
Technically all editors work with libraries, even if you can’t directly run the code in the editor
If you can’t run it in the editor then just open up a terminal, duh
unless we have a shared definition of what it means for a library to "work with" an editor, this isn't a meaningful discussion.
I’m assuming it means “I can’t run this within this editor”, or “this editor doesn’t have syntax highlighting for external plugins”
I don't want to make my 8-year-old student deal with a terminal.
I'm not sure this server is going to be an effective place to talk about how to teach children.
the core of your question is for #editors-ides. not this channel.
I’m sorry this sentence is just too funny
You don’t want to make your student type “python3 (Python script here)”
I don't want to make my student type "python3 -m venv gdashenv" and have to remember "virtualenv gdashenv"
Particularly on windows.
Well you have no other option other than Visual studio code or Pycharm
I don't recommend pycharm for beginners (or children) because I think the UI and breadth of features is too much
If you ask any questions about teaching your 8yo family member in the future, please specify that the first time you mention them. People who give their thoughts about teaching this person deserve to know that critical detail.
I don’t know any other editors that let you create a virtual environment without opening a terminal
Me either. But pycharm is an ide for people who know what they're trying to do. That pycharm creates venvs is confusing for people who don't know what venvs are or why they should want them
So i'm making some courses, and i wanted to hear what you all think of the themes:
1. data types and type hints (using 3.12, mention to backward type hints like List)
2. operators, indexing, slincing, the id() and `is`
3. functions, pure functions, the global keyword, first class functions, type hint for functions, *args, **kwargs, scope, unpacking function results, `typing.Callable`, thinking on pure functions as a `data type`
"""
my_sums = {(1,1):2, (1,2): 3, ...}
def my_sum_function(a,b):
return a+b
"""
copy vs reference, storing/passing references to functions
4. the scope and nonlocal keyword
5. control (if, loops), unpacking inside a container `[*vals]`, comphensions, zip and enumerate, filtering using comphensions [x for x in vals if ...], clean code on controls 'avoid pyramids'
6. built-in functions
7. Basic garbage collection (how the scope is cleaned, what happens when you lose references), creating a `class` using functions and the scope
"""
def foo(val: int):
def next():
nonlocal val
val += 1
def actual() -> int:
nonlocal val
return val
return next, actual
"""
8. classes, dunder methods, normal methods, type hint on classes
9. the "types" are just classes, string formatting and f-strings, encapsulation, inheritance, polymorphism, abstrction, classmethod, staticmethod, getter and setters, ABC and abstract methods, protocols, composition instead of inheritance
10. inputs (input function and how to open a store json's)
11. dealing with exceptions, warnings, the exception tree
12. Iterable, Iterator, Generator, the yield keyword
13. context managers
12. modules how imports work
14. wrapper functions
15. generics (only with the new 3.12 syntax)
16. good practices (imports order, docstrings)
17. release cycle and what are alternative implementations (Jython, Ironpython)
18. how to install python and use it (py launcher and pyenv)
19. what, why and how virtualenvs
19. what, why and how packages
This is the order in which you plan to present information? And this course is for people with no prior knowledge?
yes and yes
I'll try to remember to comment in about 12 hours.
This seems to dive in a bit too fast for people with no experience. pure functions, non local, garbage collection, etc are pretty advanced topics for people with no foundation.
Nah, it’s just that everything else is too slow
Trust the process trust the process
Why not scratch?
I've tried teaching with scratch, and it turns out that, in terms of understanding the logic of computer code, scratch is not actually easier than a textual language; it is as hard to remember keywords as it is to remember which tab you need to go to in order to find a command in scratch.
I teach with scratch because You can do a Game y only one session. Python could be rude for childrens. Also need pygame... More problems
I started with python 😭
@low ruin good parameter.
adding context: i'm in my last year of college, the course is for students on second year and seniors, the "process" is usually them hitting the wall when they take the microcontrollers class, not knowing what they are doing, paying the seniors to give them the code for the evaluation projects (a code so horribly wrote that it's a miracle it works without burning the device), while 80% of the seniors don't understand the code themselves.
In theory they have prior knowledge in practice not so much. DON'T TRUST the process if it involves a bad education system
What about to know where are the keys? () [] {} This is challenging for childrens
That's far from no prior knowledge.
Luckily, my student has typing class as part of his regular school curriculum.
If it's for those with no prior knowledge then most of this is irrelevant. I would have an entire course in which they write plain procedural code without even writing a single function declaration before they have made simple terminal apps.
Interesting.
Most of this is code organization and other info that is useful later on.
It's large, I made games before learning anything more complex.
Most of the best programmers I know started on stuff like the C64, writing a bunch of small programs without even knowing what a function really is.
(They did have the excellent C64 manual though)
You should be able to make Tetris without it.
Or battle ships or something.
Simple inventory app, etc.
That just lists, loops, input, output, basic things.
That's fine, they will then truly understand and appreciate functions and classes.
It's engaging to those that really like programming, don't know about others.
My curriculum is this:
1. print, variables, input
2. math operators, if
3. while
4. lists, for
5. functions
6. [big gap of time for building intuition for logic]
7. classes/objects
8. modules
Maybe, I don't know how to solve engagement issues, since much more is expected of software now.
I'm lucky in that I get one-on-one lessons with each student, so I can vary the curriculum based on the students' interests.
Either way, you can still let them go all spaghetti and really get used to the basics for a long time. Can pull in Pygame to help I guess.
thanks i'm taking the comments into account 🙂
Somewhere in part 6, I touch on bitwise operators, and floating point, but I don't expect the students to fully retain that info.
Just writing everything as a complicated mess is kind of the process of learning to code IMO, they have to go through it. You can then show them some patterns.
Avoid any math-like word problems, not data structures and algorithms, many people I know (myself included) coded for years not knowing that DSA is a thing.
Made apps before that.
i would add it on point 3 after type hints, and operators, thanks
Just really used to writing loops and all that, so when I got to that it was easy for me. I had a solid mental model of stepping through code, storing data, getting data, etc.
I think if you're leading with types then you might as well use a different programming language
It is extra syntax to memorize
yeah in fact my advisor (the one who asked me to do this course) just told me "the only absolutly necesary think i want is for then to learn type hints"
What I usually see lacking for students going through some programming course is that they are not given enough time to mess around with it, the basics. They are already moving on to the next course by then or within the same course moving on to stuff that is not relevant until they already are comfortable writing ideas into code.
I think it is important that students, as high a portion of the time as possible, have a project they can be excited about working on.
For example, if you ask them to take inputs and store them in a list, and they don't immediately write while ...: without even knowing exactly what the contents are going to be, then they are lacking in these basics.
They should already know: "I'm doing a repeat action, so some loop."
i deal with this by at the end of each lesson put some questions like, "you now know what a list is and what a int is, would it be possible to create a list of ints? how would you do it?", trying to point at a direction
I recommend making the problem slightly more complex actually. Make the list actually used somehow. This might seem like it makes it harder, but you don't leave them hanging on a "why?" Why would you put ints in a list? What is a concrete use case?
noted 🗒️
I've found that students will often jump to the "What do I do with the list once I have it" part, and it's hard to get them back on track for the "making the list" part
(this applies to 1:1 settings)
Break it up into parts. But end on a concrete problem. Concrete things anchor ideas in the mind (the specifics of this is template matching, but this would be off topic unless you want to discuss it in #data-science-and-ml ).
The folks at https://pybit.es had me answer some questions about CodeReading :
youtu.be/0hkwYIk9EB0
to help distinguish between https://CodeReading.Club and other similar activities.
Hello!
what means are there to examine the proficiency of a student in python
Huh, that's interesting (code reading clubs)
That's definitely one thing missing from CS education, at least in a systematic way
This is not the right channel.
Got it, what channel should I post this?
Thank you very much 🙂
Hey everyone. Can I talk about a "code-your-own beginner python project" course that I have made? Or is that a no no? Thank You.
hi pedagoges!
helllo
anyone remember me?
no
Please make sure that you're on topic. The three off topic channels are available for general chatting.
What is pedagogy
check the pins
'- Pedagogy? What is that? (Not really.) '
whats your project name
it is a car sim. It is called my first big Python project
please move this discussion to one of the three off-topic channels.
I’m running a software development club at my high school. This year we’re teaching JavaScript and full stack web development (because it’s our first year and we want to be the most enticing in order to maximize chances of successful membership retainment/attract as many new potential members as we can). The first semester focuses on general software development (e.g. how to set up your local environment, terminal navigation, git, the syntax of the language in focus that year [which in the case of this year, JavaScript]) and engineering (paradigms, patterns, general best practices) while the second semester focuses on building things. My plan is to have the focus in the second semester change every year. Given this, I have several questions regarding teaching Python:
- I do plan to go over the packaging ecosystem, etc as I want my club to be comprehensive/representative of practical software development. Any tips/suggestions regarding how I should present pip + setup.py vs poetry? How should I introduce them to pyenv (or the shiny new uv tool from Astral)?
- any ideas on what sort of low-effort (to build)-high-returns app development should we focus on? I’m thinking of scripting but like, what are some practical (yet general enough) applications Python is good at right now? I know web development is definitely not one of them. Sure, there’s AI/ML but that’s a bit too specific (as it deviates too much from general software development)
- Say I were to teach “automation” and “scripting” as the application field of focus for that year. How should I approach teaching this? (Web development is pretty simple/clear on how you should teach it: HTML/CSS/JS and then the frameworks that go with it, in that order)
- how could I keep it enticing with like a quick feedback loop (e.g. AI/ML, besides applications of CV and/or ML algorithms, don’t provide a particularly fast feedback loop)
Btw ping me if anyone responds
best way to teach recursion?
I'm not a teacher, but the book Grokking Algorithms has a chapter on recursion (chapter 3 I believe) and it helped me understand it, I think the example the book gives with "boxes that have other boxes inside" is quite intuitive
I thought fib was the golden standard
Fib, factorial, nested boxes are all pretty good
There is no one example that will make recursion click, you need a lot of different examples
i dont understand anything there
Yah, it seems like recursion is one of those topics most people don't 'get' from simple explanation alone.
im most people
all i know about recursion is
it loops a func
Can you open a help thread? Happy to explain
(If not me, someone will)
alright
I've also seen copy pasting the function under a different name a dozen times and have them call the next one help. It makes it less magical and more related to "just" calling a function as is typical.
Hello
Maybe you should explain to them why you should indent code and how it helps with the flow of code
would making whitespace not invisible help? You can go into view->appearance->show invisible characters.
what program you guys talkimng about
<@&831776746206265384> recruitment is not allowed on this server
!purgeban @full coral We don't allow recruitment here.
:incoming_envelope: :ok_hand: applied ban to @full coral permanently.
why does pip stand for pip and not an apple pip
what
python integrated packaging most likely
nvm
its actually a recursive acronym for pip install packages
yeah, it was an actual question on my software dev exam
i dont think it served literally any purpose towards testing knowledge of software development or coding
professors do like to add in fun / nonsense questions for extra point or just because or to check if you're actually paying attention
me when the p in pip stands for pip
Names and their meanings are both useful. When we refer to meanings, it's logical to call them names, to guess what, refer to them. I can't imagine anyone would like to conversate longer than needed.
I don’t know
Looks really good on PC and it makes me happy that all text is text!
This isn't the channel for feedback or advertising. Don't advertise, and please respect our channel topics. If you'd like a code review, ask a specific question in #❓|how-to-get-help. Your message has been removed.
But I can't judge the site, don't know French
ok no probleme
Hello, your message is not on-topic for this channel. Kindly move it to #python-discussion
Was having issues finding the right one, my eyes are soar, they literally gave me vaseline ointment to put in my left eye
I hope you feel better soon.
The way i usually teach recursion is by combining it with divide and conquer sorting algorithms, usually quick-sort.
Since the "We can do something by first doing half the work" lends itself more easily to understanding recursion than things like fib or factorial as there there are "obvious" advantages of doing it iterarively.
Hey, I created some python tutorials on Youtube and would like some feedback on what could be improved to make them as clearly explained and easy to follow as possible. Is this the channel where I can ask for such feedback?
is this worth buying?
no and also this is not the appropriate channel, try #ot1-perplexing-regexing
Hello everyone! I need to make a project for school. But the only thing that school gives in terms of knowledge is for and while cycles, and the project needs to be somehow connected with neural networks and a website. Does anyone have any ideas on how this can be done, and in fact, so that it is not too difficult and so that I can do it somewhere in 3-4 months)
Umm u can make an object detection app where u can upload an image and it tells u if its a banana or a bottle or a human, stuff like that
Making a facial detection app is also a good idea
I wonder what it feels like to actually understand those things
Hi
can you just give a general idea on how it is done though, I'm in the starting stages of learning python and would really like to know how to make python interact with and read the colours of an image, and then go on to identify it
Any direction on what field in python should I learn about to be able to make such a program?
Sounds like computer vision but you should really ask these kinds of questions in https://discord.com/channels/267624335836053506/267624335836053506
There are plenty of knowledgeable people there who can help you, they'll probably be able to point you to a specific library as well 🙂
K, thanks man
Yup, you can use opencv for these vision detections, Here is a starting point :
https://domino.ai/blog/feature-extraction-and-image-classification-using-deep-neural-networks
I personally think that they shouldn't give such a project from the start
It's probably more effective for most students to start with some smaller projects that can be done in a few weeks so it'll be easier for school if the students fail to help and it'll give more opportunity to actually learn
That is right!
Object detector using YoloV10 and for website use flask to show the results on a website
Like use the yolov10 data
@safe grove Hey
hi
....
They’re getting desperate
The methods and practices of teaching
For future reference, you can see what a given channel is for if you click on the channel name at the top (on mobile, not sure how to find this on PC)
oh i thjoguht it said NOT FOR, my bad
Hello, I have to make a little introduction of python for newbies in a few weeks. They asked me to show some loops and conditions exercices, where can I find some interesting stuffs?
It's for a festival
I think you can largely simplify complex programs into say using a while loops that could get them hooked
Like generating a sudoku or crossword
I think if you have if and = covered, then while and for becomes easier to explain. while as repeating if, for as repeating =. You're also dealing with the concept of indentation and what a compound statement is, which is a hurdle for a lot of beginners. I think the concept of functions as collections of code, calling functions and evaluation would be useful, because you'd probably want input, because that's a good one for a while loop. "What is the password?" "Let me in." "What is the password?" "Please?" "What is the password?" "Open Sesame." "Welcome." So you're looking at == there, too, and the concept of strings.
We take things like loops and conditionals for granted, but there's a lot of foundation sitting underneath that.
True, especially loops.
Because you can't loop without an iterator, differently from C for example, which uses just the concept of variables.
So my approach usually is: either teach list before loops or use just the range() function and don't try to explain too much how it works under the hood XD
while I'm here, can anyone recommend some good resources to teach async?
There's some good stuff in the pins in #async-and-concurrency
@mild tiger @red rampart take a look at #❓|how-to-get-help
How would you recommend teaching code collaboration for a group of students aged 8-13? I feel like github is too much.
Possibly test driven development, each student writes code to make the assigned tests pass
I think version control in general might be a bit much - are they working in groups?
pair programming is what i'd suggest.
One student types in code, they're the "driver".
Other student tells the student what to put in.
I was planning on them working in groups, yeah.
They switch over after 10 minutes
If you have three or four, then you'll find some simply will not be engaged in the process at all.
but aged 8 will be very different to age 13 as well
Another approach is to have a larger task which is split into... e.g. 4 parts.
Each part has a function definition. Each person works on one function. And then one person joins it all together. A bit much for 8 year olds though!
What's the overall aim @north oasis ?
I have 5 students aged 8-13 for the rest of the school year, one hour of instruction time per week plus optional office hours. They've all had intro python lessons (print, variables, input(), lists, loops, functions, classes). I want to get them all more comfortable with programming, and for them all to have projects they're excited about. They've all expressed that they'd rather do group projects than solo projects.
what do you want them to learn?
Right now I'm more concerned with getting them to practice the skills they already have, rather than learning new stuff. code collaboration is a means towards group projects, rather than an end in itself I guess.
In particular, I want them more comfortable with defining classes.
I have also taught them the basics of the pyglet module, and they've each managed to create a character with 8-directional movement
they're excited about game dev, and I want to work with that excitement
Could you get them making a walk-through world, drawn using something like turtle?
They could all make some standard "blocks" so each has a responsibility to make a "thing"...
e.g. one could define what a window looks like, one define a brick, one define a wall, one define a lamp...
all creating standard objects for little worlds, and then they need to collaborate on how rooms and scenes look?
I'm trying to thing of things which are both collaborative but make them also do their own thing and have a genuine contribution
Lots of practice making classes and objects that way as well.
I like the idea, but it needs some tweaking: Since they have pyglet already, much of what would be split among the students would be game-logic-related, and I don't want to force them to design so much of the codebase on paper or a whiteboard before writing code, and also I'm too busy with other stuff in my life to do that design myself.
Well, it'll probably only be 2 groups, so maybe it could work...
I guess the big problem would be testing the code. I don't have the time to write that many tests each week.
When I started programming, my driver was games. I found a good list of game projects that would slowly become more and more difficult.
I think I went pong, breakout, tetris, topdown zelda/sokoban, platformer. Something like that
where was the list of game projects?
This was too long ago, I tried to find the list again but, no joy.
sadness
This is a list I've seen some people recommend online, not sure if that's it or not https://20_games_challenge.gitlab.io/challenge/
we should add this to the !kindling page, no? Why has no one suggested it?
I haven't read through it enough yet to know whether it's good or not
Considering how many people show up wanting to make games, i think it's good for showing simple ones to get started.
I like that it's explicitly pedagogical also, though "you should complete at least 10" is daunting.
I added it to kindling
I need help
You're a handsome old nerd
Start in #python-discussion or open a help thread: #❓|how-to-get-help
what happens here out of curiosity
thanks, is there any conversation (by anyone here, hello!) on critcial pedagogy or feminist pedagogy?
No
kk
if that's every something that's being talked about with regards to CS education, i'd be interested in seeing what folks know
No
I do not know how easy this is for beginners, but when I was learning Python, coming from a mathematical background, I had a more purely functional perspective on what a function is, which made higher-order functions trivial
I mean if you still want them to collaborate they can still use GitHub Desktop and stuff which avoids the trouble of git commands and makes it a matter of button-pressing
Explaining commits and merging and stuff is not too complicated if you show it as a tree and let them play around with a .txt file to get a feel for it
scratch is the best language
hi folks. I teach python to a group of 11-14 yo (one hour per week during the school year) and I thought I'd introduce them to pygame through pygame zero, but it looks like there isn't much activity on that project anymore. is there a more relevant thing that I can teach them, since they're interested in making games but I can't expect them to know enough for pygame proper by end of june?
unfortunately I'm not aware of a better library. for Javascript there are plenty more active
Hey i neee some help with 3d projection on a 2d screen. If anyone wants to help, even just by sending a working function, i would greatly apreciate it !
you need full stack developer?
Hi everyone! I found this video about writing short essays to improve your learning process. It's got some pointers that I was intuitively following them in a project I was working on. Hope there's something that catches your interest as well.
About 8 months ago, I started using mini-essays as the core of my note-taking. I'll never turn back.
I like to take my time with books, analyse their points and take time to write about them. It's high effort, sure, but the knowledge you get in return is priceless.
Mini-essays have been my best friend in this journey. They help me understand h...
Even without much happening on it I’ve found pygame zero really good for getting students going quickly with simple programming through developing games. The immediate barrier to entry is really quite low. I’m working with 13/14 year olds
I am new to this Discord channel and still relatively a beginner in Python dev. I am an power grid relay settings engineer by trade, but have found myself gravitating more and more towards the language, but also towards technical writing to improve documentation and learning for myself (and eventually my workgroup). I have begun using Markdown and Mathiax to write technical calculations notes that explain what we are trying to accomplish for a given protective relay element we are setting. I really enjoyed your post and the video on mini-essays, although I am having trouble translating that over to our more technical fields. In what ways have you used mini essays on your project, if you don’t mind me asking? Obviously, feel free to decline if too confidential or business sensitive. Thanks!
Hey! I'm glad you liked the video. Right now I'm sort of using the mini essay technique to explain each project in my portfolio website. I just wanted to keep it in the way to get the basics and be ready to producer more technical documentation later.
Oh I gotcha, so you are using it to summarize each project in your portfolio. That's neat! I'll probably do something similar for certain tricky topics I deal with at work to help new people and I understand better, but leave the technical documentation style writing for the process documentation. Thanks for sharing!
That's alright!
Can anyone relate to this
I personally wouldn't put creativity under ADHD brain because imo creativity is a learnable skill that everyone can learn
But for everything else under ADHD brain I can relate although it's not that simple because ADHD can make you lose focus faster
It can also make procrastination more likely and small tasks to get started or whatever can be a huge obstacle
Yes
Those of you who don't work with python, what is your best way to keep up and develop with python?
That's somewhat an odd question, if we don't work with Python, why would we keep up with it or even be in this channel?
Or do you mean those of us who aren't core devs?
Regardless, my answer is: #python-discussion plus PyCon/europython yt videos
I'm writing a blog post on building a portfolio of #Python projects, and I'd love to hear more perspectives on how to progress from courses to proper projects. I see lots of books/videos that have projects, but almost none of them model practices like:
- Modularity
- Version & dependency management
- Documentation
- Logging
- Testing
How do newbies make this leap? I'm sure there many ways, but there isn't an an obvious one that I know of.
I think newbies only make the leap when they have something real that they want to actually do themselves. Trouble is that it's very very hard on your own (which is when forums like this come in so handy).
Python is great in that you can do moderately simple jobs with it though.
I think it's about discussing how the teaching of python works... but that's just my take on it.
Yep. Every channel has a description that tells you what the topic is.
Well the channel here says,
"not for resources" and then has a link saying "resources"
Its so you dont come here and ask about resources for learning python
Even though I've been learning to code for a year now, it's been difficult with the lack of structure (as I'm self learning) and not knowing how to progress past the beginner stage. I'm struggling atm to properly boost my programming skillset via projects but I don't know how. If I'm going to make a really good, extensive project, I have to be passionate about it and interested in it or else, I'll get bored. I think it might be useful to have programming projects that build onto each other; that way, as the difficulty increases, you can see how the simple program you made at the beginning develops into a more complex project.
well - yeah, but that's the description which says what the topic is.
Except it doesn't.
Discussion of the methods and practices of teaching
What suggestions do you have, if any, for how this could be made more clear?
I don't, but you picked me up on it.
I mean people asked what the group was for and I explained. But then you told me off.
I was not telling you off. I just pointed out that what you said comports with the channel description.
oh ok
Any AI dev here?
Just ask your actual question in #data-science-and-ml
Already did
And they told you to ask your questions up front in #career-advice. Did you try that?
Yes
For friendship and comradery
You're perfectly describing adhd. Do you enjoy in work well in structured academic environments? I just ask because I see you describe parts of me lol
I dont think its adhd. Thing is Im someone who needs to have a structured way of learning as thats how I work. Ive never really struggled focusing (until last year when I dropped out of uni) as there was already a structure to my learning
It's more distracted and lack of interest and/or delivery (some people are just dull and boring) but it certainly will effect focus though. Sorry Im rambling. Ah I understand. Well maybe its time to drop back in!
Why did you leave??
by chance do you become more interested in a specific subject of a topic when you learn the history behind it?
does it make it easier to remember?
If Im interested in something and I genuinely want to learn it, I retain the information easier because Im actively trying to understand what Im learning as oppose to remembering shit for the purpose of an exam if that makes sense
so you're kinda more of an adaptive learner 
Was doing biomed. It was a degree I wanted to do for years but got to a point where I got sick of it. So I dropped out to find what I wanted to do. Went back into coding and now In back at uni doing a degree in AI and Robotics (have to do preliminary foundation year first though)
I assume so
For me, I already have passions or I discover new ones. My recent ones in the last 2 years is python, machine learning and kayaking lol. I'll just go full speed when I see or learn about something that really just seems fun. But at the same time, it could go full reverse easily. I pick up and put down things throughtout my life to keep it fresh, i get bored quickly.
I completely get that, I pick up and drop subjects, hobbies, and career ideas like crazy. I applied to college earlier this year, almost got in, but then backed out last minute due to financial issues. Now I'm glad I did because I realized I didn't want to major in what I was going to major in anymore 💀
very recently I've started to develop an interesting in coding, and now I'm here. But, I am excited to learn more
I'm 44 buddy, follow your passion. don't second guess it, just make sure it pays the bills 😂
hahaha the problem is I'm passionate about too much
I need to pick something that I can live with / be entertained doing for a long period of time, in order to make time and funds to do what I really want to be doing
best way I've been learning that is by actually trying it, so the answer to that will take a while 💀 ||right now the new answer is CIS/MIS||
Hope it isn't weird to revive this 2 day old conversation but I totally feel this. there's a burning desire to learn every language and framework there is out there, and it extends to everything beyond coding whether it be instruments or hobbies. If only we could get paid for just simply learning, huh?
But what @shell jay said too. I pursued animation for years under the belief that passion will see its way through, ultimately it's not enough to put food on the table. 😿
Nice to see someone else 40+ (just got there recently).
Sometimes I wish I had listened a bit more to the passion argument. I studied CompSci mainly for job opportunities, and I really loathed it for a long time.
Actually took me until a few years past graduation before I even started doing small hobby projects on the side.
Yo yo hello everybody ! Does anyone know if we can code vst type audio plugins for the music industry with python??
i saw this with projuce but i not know anything ...
If anyone has any content to explain on this area that would be great !
thank's and have a good week end everybody
@wooden frost your question is off topic. See #❓|how-to-get-help
can someone help me on a quick problem?
if you have a python-related query, direct it to #1035199133436354600
@inner trail I removed your message for referring to self-harm. Head to #python-discussion to ask for advice on how to learn python.
the thing about self learning is that 'yes, we can google for that x field' but even so, the media maybe just mention tip of an iceberg of that x field and im not blaming the media's author but like we prefer to be told the 'kind of roadmap' that we have to get through in order to progres
i got what you mean and maybe what ihave said in the reply able to conveys what you're going to say
Exactly my thinking. I know theres roadmap.sh but Idk if that site is useful enough as a guide in what to learn
But what if there isn't a roadmap? What if (as I believe) we all take different paths?
how that doesnt exist, in tech pretty much you have to sart from below
like most of them, in networking you cant understand networking at all, if you cant subnet which is basic
you need to have the understandig of how x pragramming language works bfore you do super advanced project
you cant. do ML if you dont know math, and if you dont algebra how you gonna design your own model
so, its have to start at starting point
you cant literally cant. understand anything in networking if you cant understand subnet
you cant understand Eigenvalues and Eigenvectors to build kernel trick for your model if you dont know how algebra works
you dont know how to create a function that can take input and parse the data if you dont know function
like it has to start from somewhere as advanced topic needed that understanding of basic fundamental
E.g in networking i cant even understand what on earth router does with all of the IPs if i dont know subnetting, IP's fields, LAN, Mac Addr, etc
its like a stacking plates, the plate cant reach the current state if each element of knowledge in X field isnt being taught in exact order
What's the exact order in which learning Python must be taught?
And, what's the sequence that's needed to become a SWE?
There is no exact order that Python must be taught.
So many routes. So so many.
And,... there's no finish point.
There are millions of software devs, surely you could come up with general steps they took to become what they are
Go to uni
Get good grades
Try to get into internships
Practice the leetcode type questions
Graduate with a bachelor's
Apply to a bunch of jobs
That's more like a crayon drawing of a roadmap 🙂
I think most people who ask for a roadmap want the precise; "Learn this thing, then that thing, then that other thing, etc"
People need to tone down their expectations 🤷♀️
Also just realised this isnt #career-advice
Hah, either way, agree 100% with your points.
Roadmaps are only useful if you have 0 idea about the content, they let you know of what you dont know
Once you start learning you'll get an idea of what you should learn about next
More like a table of contents
Hey there,
I already know basic web dev(mern)
Some python and DSA, OOP, stats
But have no idea about AI/ML dev
Can anyone suggest me a roadmap? For ML engineer
Best to ask in teh data science ai channel. Thoug I will say, know your fucking maths first. Honestly, you need to have decent maths background to understand most of the tools you use in ML
!cban 1270426285050695786 troll
:incoming_envelope: :ok_hand: applied ban to @hasty trail permanently.
Hey i want to do some cool machine vision project if u guys have any idea or have any resources do dm me...i don't know where to get it from
fellow tutors: Preply, Codementor, or Wyzant, which do you like best?
The classic beginner project is number recognition using the https://en.wikipedia.org/wiki/MNIST_database.
Hi everyone, does anyone know of a good project that puts functional paridigm into practice so I can analyze the code and improve ?
Genuine question, do you know where is the best place to seek guidance on structuring Python projects? I have been self learning and I’d like to bounce some ideas off of developers who know the best practices in using Python and can guide me. Thanks.
I've used #software-architecture in the past.
hello guys ....
i need help. I have strees names and wanna know which City belongs . how can i do this in python?
Heyy i think i can help
plizz 🥺
but what's strees?
both of you should take this conversation elsewhere. this channel is for discussion of teaching methods, which neither of you are talking about
Im sorry i just wanted to help
streets?)
guys,i am inconsistent learning python, itry to dedicate 90 minutes 5 days a week but i often dont 2 even half,it could by its because i only learning reading a book? or is my undiafgnosed adhd?
I have ADHD and I struggle with studying at times too. What I do is the pamadoro technique where I study for about 15-25 min, then take a 5-10min break and go back at studying again. My break I walk away from my desk as well to seperate it and that works for me. You may also instead want to go through a video course instead of a book in case that holds your attention better
I try to do pomodoro of 45 minutes, is that too long? Lol
Possible, try shorter intervals and see what works for you. I have a mild case of ADHD so it could be different for you
is there a server on the same level as this one, but for Java? my current courses are now in Java so I'd to find one where I can ask questions about niche things and stuff
(I looked for one in the server search bar and on Google but they're all insanely small and dead servers)
Thanks
this channel is more for the methods of teaching which are imo not really related to the language other than actually making examples and some very specific things.
for getting help you can try finding some java discord server
I need some sort of translation help, im studying a course that is named in my language "automatons and formal languages" does any one have a clue how it might be called in english? its about turing machines and such
Formal languages and automata, compiler theory, theoretical computer science, depending on the school.
probably the first one, including stuff like this
"theory of computation"
oh that sounds nice, Im just trying to help a student whos' language were being taught in isnt his first and he tries to find more resources in english or other languages
Here's one resource, I really like MIT OCW: https://ocw.mit.edu/courses/18-404j-theory-of-computation-fall-2020/resources/introduction-finite-automata-regular-expressions/
cool ty
I have got a question? Do you sometimes force yourself to learn coding or you just learn when you feel like you would like to code and discover some new concepts
It's so annoying that this channel ends up being full of stuff which is NOT pedagogy
sometimes I use force
I have heard that you don't find inspiration, you plan for it, so I think a consistent routine is key.
Learning / education is not a straight line. Theory, practice and discussions/peers are all part of the process. I think the important element is self-reflection and adjusting your path as you go.
I'd love to know people's experiences with teaching python to students with little interest in learning it. Are there approaches you take to develop engagement?
what's the context? high-school courses?
i don't mind your context - mine is school based, yes
Heyyy, which is the project based learning platform u would recommend for a complete beginner in python
Calculator
U mean develop a calculator?
hi guys, if you had a new junior dev in your team, coming from js mostly, which book you'd give him to learn python ?
Probably fluent python, based on recommendations from others here. This assumes the junior dev is ready for "intermediate level" content.
thank you very much
Hello
Hi
So, I've been teaching people python for a bit, and I'm curious about when and how you normally introduce testing to your students. I'm using doctests and I'm doing it right after I teach them how to use functions and write docstrings, but I'd love to hear your thoughts
I personally didn't start using tests until like 2 years into developing. and i do regret that now as it makes my debugging and development so much easier.
So imo you are doing great with teaching them rather sooner than later
great question--do you evaluate their work with tests that you write? and if you do, do they know this?
I do not, but that's a really good idea. I'm encouraging them to use tests from the beginning and am probably gonna teach pytest next. I think testing and also git workflows are really important to learn in the beginning, I waited way too long to learn git personally and it made making projects a lot harder
Oh wow, yea I want them to be using a tests as soon as possible, ideally writing tests first
I love the idea that they start out with a testing mindset. I find doctests to be limiting, but it might be too big a hurdle to have them writing pytest tests at first.
My thought was that for simply io things where they are testing that the terminal output is what they want, this is a great way of getting them started, and then pytest when they need to test something like a database
yes, good
That, and following best practices, write docstrings for your functions, don't slap 3 functions into a nested lambda, use whitespace to make your code more readable, etc
I guess that brings me to another question, how do you guys feel about using linters like mypy? I don't really use it or recommend it for my students, I'm of the opinion that it's too strong and you end up writing python code like it's golang
mypy has different levels, if you feel it's too strong, just dial it down i guess
That's true, but I think it bogs beginners down and I find tests to be a far better representation of program validity
oh doctests for students - what a curious conundrum
why do you say that lol
i've never really gone down the doctest route... i wonder if it makes it more engaging
!rule advertising
<@&831776746206265384>
I think so, you can hook it into unittest and write all your tests as .md files. Documentation and tests all in one, and it doesn't clutter up your source 🙂
This is of course assuming you don't need mocks or something more complex
see at the moment, we just have thonny and... that's it.
I think starting with pytest is fine as long as you don't use fixtures. (which is leaving tons of pytest functionality on the table, but fixtures are very meta and would probably confuse beginners regarding how functions work)
absolutely pytest gets extremely intricate. just test_* functions gives you similar power to doctests and is plenty.
I also think pytest is preferable to unittest for beginners. pytest doesn't require you to suspend disbelief about how classes are supposed to be used, and there's no camel casing, and you can just write regular assert statements.
I’m not sure how I’d progress to doing unit testing with a class.
I wonder what I’d need to do.
I'm talking about the unittest.TestCase class. Are you talking about writing tests for classes that you wrote?
No. I’m talking about how to go about using testing in classes
What is the difference between "unit testing in classes" and "writing unit tests that test classes"?
Classes of students. Versus classes of objects.
you'll need to specify that every time, or people will think you're talking about OOP classes.
I was talking about students only a couple of messages ago.
I’m just wondering if there’s a way I can add some testing into the work path to make things more engaging.
Do you use automated/unit tests to evaluate the students' work?
Teaching tdd might be a good idea
@bleak lantern my thinking is that if you evaluate their homework using unit tests, you can show them those tests in the lecture following the assignment being due. And I think seeing tests that are relevant to what they coded will cause it to click
Well I find that doctests and pytest go together really well, and pytest can run your doctests automatically. I wouldn't suggest unittest for anyone, Raymond Hettinger said it's only really useful for people working on the stdlib
I still use both in my projects because they serve very different needs imo
I’ll have to look into it.
Hello guys
hmm i'm still not sure the best way to proceed with this idea
at the moment i use thonny in classrooms and set tasks to do and then wander around the class
i'm not sure what the next step is
Do you use automated/unit tests to evaluate the students' work?
No. I wander around the class to evaluate students’ work at the moment.
are there assignments that need to be submitted? how do you test those?
Are you a teaching assistant, or the primary instructor?
i don't really see how this affects the question
feels like i'm just getting random questions now!
Because I need to understand if you're primarily responsible for designing the lessons and facilitating the course.
Also, what is your favorite color? (This question isn't important. The other ones are.)
why do you need to understand that?
sorry, what was your question?
how to use unit testing in class?
no
Because I want to understand what you're in control of as it pertains to these students and the course that they're taking. I thought you wanted suggestions about how to use unit testing in this course.
how to do automated marking of students' work in a class
you can write a test suite that you can run against their code.
how?
have you written test suites before? Using unittest or pytest?
right - context...
at the moment i'm setting challenges for students to attempt, and they do them, some get stuck and some make good progress but this is beginner stuff.
e.g. using print / assigning variables / using mod and so on
when one student is done, invariably 5 or 6 others are also done. And some are part way through and some need help.
I had this idea that there could be a way of getting them to be able to self mark their work and then move on to the next challenge
i don't know how unit tests or pytest will help - i've never used it
if the students' code isn't structured as functions and classes, it could be a bit involved to do it.
it's not
do they take input?
it's literally things like
a = 10
b = 20
c = a + b
print(c)
so it'd need to test they'd got all of that correct
requirements of that would be: create a variable called a and set it to 10, create another called b and set it to 20. Make a third called c and set it to a and b added together, then output c
i'm not saying i can't go around a class and do that checking, but it'd be better if they could see they'd got there themselves
and then move on themselves
good tutorials will include what to expect. you could say something like, "you should get 30"
tutorials? sorry - i think i'm missing the point
hmm, this would be tricky to check automatically. You could check that the output was 30, but it's harder to check that they made the right variables.
maybe you could pair them up and have them check each other's work?
how could the output be checked?
nah - i don't find pair programming very successful
you can run the program, capture the stdout, and compare it to the output you expect.
right... but how?
like i've got 30x 13 year olds... how can i get them to do that, and then understand that they can progress?
the typical setup for autograder type things is just having the students upload a file to some service that you run
so basically no one knows
#pedagogy message ?, you can't say no one knows if you were given the overview on how it's done
are you ok KRRT?
I don't know how to do it - not a clue.
You can look at a code example that does what nedbat said.
where?
!pypi autograder or this.
this looks curious, thank you
what do you mean?
think it's too complicated for me to understand
it's curious though
its quite common to also use gradescope's autograder for programming assignments~
https://gradescope-autograders.readthedocs.io/en/latest/getting_started/
oh i've not seen this before Robin, thanks
most of my college classes have been in this format, i'm sure it's adaptable to younger students too
I'm trying to work out if it's possible to enter code right into it
the difficulty is, as you'll appreciate, younger kids these days are not as computer literate as current adults
like at age 12, some have never used a mouse and do not know what a shift key is
that seems like quite a problem for a programming class
yep
there's a lot of assumptions people make about 11 - 13 year olds - they certainly don't all know how to use computers
I wonder how others would go about teaching python to 13 year olds... maybe there's some better approaches?
the difficulty is, as you'll appreciate, younger kids these days are not as computer literate as current adults
o.0
in my experience it's quite the opposite
which age range do you teach?
i'm not a teacher but i've volunteered with deaf / hard of hearing kids in grades 9-12.
i mean... i currently teach 450 students a week
the level has defintiely dropped over the past 7 years
are you in the US?
no
When I had to deal with some 8 year olds it was quite surprising to me that they didn't understand how to use a keyboard or mouse
but to be honest i'd be surprised if it was different unless there's a lot of focus on computer use at ages 5 to 11. over here it's mainly tablet use
that explains a lot then
age 11 and 12 students here have never used a mouse, nor do they know what most of the buttons on a keyboard do. it's bewildering to them. the keyboards we have in my place have no words saying "shift" or "return" or "enter"
how come? do you use computers in elementary school in the US?
So the first few classes are just using a computer
yes - and even then it's not really enough
it can take 2 lessons to be able to confidently log-on
without it being alien and weird
yeah its a pretty common thing i'm seeing too. dont have any stats to back it up though
but you're not in america?
This does sound kinda interesting to me
i am
oh - i just thought KRRT felt the US didn't have this issue
im not really convinced this is a regional or country based thing
me neither, i think it's a generational thing
indeed
it's standard to have ipads and phones
why would an elementary school buy a computer suite? There's no reason.
i dont know what you can really do about that but to educate, which i suppose is what you're doing
Kinda makes sense because iPads and phones and consoles are more popular for those kids
yes - that's what i'm doing - i'm explaining how to hold a mouse to 12 year olds
i explain that Ctrl means control
if you ask kids to press the windows key, you get a class of blank looks
yes. i was in elementary school in 2009 and we used computers once or twice a week.
better now than when they're in college. its kind of just sad when its a college freshman
2009 was a long time ago in technology terms
right, and we still had computers.
I don't follow you
we were taken to the library twice a week for computer based activities, the first couple of weeks we were taught the basics on how to use them.
yeah but primary schools here do not have them now, but they would have done in 2009
tech has moved on
they dont really do that anymore
i'm not sure bout that. but alright
no elementary school would have had ipads in 2009
But for testing the code I'd probably do the method you are already doing
let me ask my little sister, she's in elementary.
they use ipads and chromebooks and stuff the kids are pretty good at using those
so uh, a chromebook isn't a computer? 
yes it is
the workflow is kinda different
low end Chromebooks are essentially just browsers
theres a difference between "write some code in your editor, submit it to this online grading platform" than "go to google docs, write code, and share it with me"
i don't know whether you're just joking with me... but honestly, you didn't have ipads in classrooms in 2009
because of that there are platforms nowadays (even for high schoolers) where everything is just integrated into the browser itself. like you write the code in the browser, run/debug it, and submit it from the browser
you had desktop computers
oh im talking about now
but now you don't - tech has moved on
so that's why kids can't use them at age 11/12
Computer basics or something like it imo should be something taught in elementary school
they can knock out a tiktok video with filters and complex editing all lip-synced though
coding is required at elementary here, but you don't need a desktop in order to do it
anyway - i feel like i'm convincing people it's difficult rather than getting good pedagogy ideas
my point really was getting students to use test suites isn't easy
you don't have to expose them to test suites at all.
you can just have them submit assignments that are simple code, then you run their assignments thru your own test suite / grading system which runs the code and compares what they're doing to what you expect them to do.
but that would require me to go to my desktop and run a grading system
i want to be circulating the room
well at the end of the day, the amount of work required is the same, its just how do you want to split it. do you want your students to do most of it, or do you want to take more of it
it would be automated
ok - but how?
like - if i can set this up for my classes this week that'd be awesome, but i genuinely don't know how
you could either create your own service, or use something like what robin posted above.
are you a programmer?
i'm a teacher
the issue here is how "complex" you want to make the submission process. if uploading a file to a website which runs automatic tests and gives the student feedback is an acceptable level of "complexity" for the student, then gradescope would be a good solution
yeah - this is the most plausible so far
ideally they'd be able to type the code into gradescope
i dont think thats a thing ime, but its also the biggest issue
since now they either need an editor or if they're using an online editor, need to know how to download their files and re-upload them to gradescope
thats a deal breaker for some folks so they look for more integrated options
yeah - which is tricky
another platform you could look into is zybooks. also commonly used in college classes, but its different since it incorporates a textbook as well
that's not a bad option either. would be pretty convenient for the student, but i'm not sure how you'd set up automated grading for that
it's just it can show what's expected within the text and then the student can compare
which is not grading it but it's not about a number, it's about them making progress and knowing it
at the end of the day... i want them to know more
i just feel my current pedagogical approach is slow and lumbering
What about githubs solution? i have no experiece with it: https://docs.github.com/en/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/using-github-codespaces-with-github-classroom
"Through GitHub Classroom, you can configure tests to automatically grade the work of each student every time that student pushes to their assignment repository. To learn more about autograding with GitHub Classroom, see "Use autograding.""
i think getting the students to upload work to github is more than a little ambitious
looked into it though, thank you for the suggestion
Yeah, only way i would see fit id using the github codespaces as well. As this solves the need for having an IDE, codespaces are an IDE in the browser directly integrated into your GitHub repository
No worries 🙂 hope you can find what you are looking for 😉
think i'm going to give up to be honest
pedagogy is one of my favourite interests, but i think it's best discussed with other teachers really
I've been coding for more than 8 years now, specializing in Django. However, I never formally studied Data Structures, Design Patterns, or Algorithms. My approach has always been practical rather than theoretical.
I currently work as a Developer in a company where I built a custom CRM system tailored for our business or any company running Virtual Assistance (VA) services.
While I’ve gained a lot of experience building systems, I feel I lack knowledge in foundational topics like theoretical computer science. Could someone guide me on what I might have missed and what steps I should take to strengthen my skills?
:incoming_envelope: :ok_hand: applied timeout to @brave niche until <t:1732637408:f> (10 minutes) (reason: duplicates spam - sent 4 duplicate messages).
The <@&831776746206265384> have been alerted for review.
hi, I started a Python course few weeks ago. It is very slow and looks quite not-interesting. I will put some more effort with it, but in the meantime I'd like to get some suggestions for great Python courses. thanks!
what course are you currently doing?
ok i wouldnt like to expose the instructor, it's one big course from udemy
I'm curious what people think of PRIMM as a teaching methodology. I've been trying it, but not sure to be honest. Evidence driven... but is it actually good?
That maps to standard onboarding practices. Interesting to see that in this context
what do you mean by onboarding practice?
Maybe my terminology is different
It means that when someone joins a new job/team/project, this is an established industry practice to help them onboard and familiarize themselves with the code base and practices
oh - how does that relate to PRIMM?
It follows the very same steps and process
so, the thinking behind it is around getting students to read the code and understand it before running it
I have a big problem with that aspect
In terms of?
Well - I find it hard to do.
Any specific part? What were the issues encountered? Any specific example?
so the P in PRIMM is about prediction - how do you get students to do the prediction without glossing over it?
Generating hypotheses has worked well for me
(I am not certified PRIMM, if that's the question)
But generally speaking, you have a problem in front of you. From there, I force the folks to list what they know currently. And then devise expected behaviors or outcomes depending on specific suites of inputs for instance
The specifics will depend on the scale of the problem, code base, as well as the level of experience of the engineer
But basically it's just a simple application of the scientific method
are you talking about pedagogy though or just like... project management?
This is a channel dedicated to the pedagogy, like how to teach others. If you want project management advice, that would be a different channel. See #❓|how-to-get-help
I'm talking about pedagogy.
Great! So why the confusion?
because it sounded like you were talking about working with engineers
Alright, hold on. What is your background and problem you are trying to solve here?
i'm not trying to solve a problem, i was talking about experiences with PRIMM
Are you actively teaching others?
of course
In the field of computer science / information?
yes - otherwise i wouldn't be discussing it
There is not a causal link here. We have plenty of folks who aren't working in computer science / information and still hang out. The diversity is what makes the community so nice.
i know, sure but i'm really keen to discuss with educators their approach to pedagogy
(or anyone really - but i don't know how non-educators would understand the issues)
believe it or not, but people will continue learning after graduating 😉
That's also why I was asking your background, to see if you have any industry experience
of course, but that's different to pedagogy
how would that be different?
it's more rich and varied for sure, so it encompasses more facets
well - it's just nothing to do with pedagogy
How would that have nothing to do with pedagogy?
Let's try to present arguments in the conversation. Otherwise just throwing random opinions won't get us far
I think it would be best first to familiarize yourself with the term
i mean - it's my job
then why advancing uninformed opinions?
i'm not
i was asking about people's experiences with PRIMM - not sharing any uninformed opinions
This is uninformed and not backed by sound reasoning
So either way, we are going in circle. Good luck!
you're sort of trying to say that learning by yourself is the same as pedagogy I think? Or have I misunderstood?
pedagogy is literally about the practices of teaching - how you go about getting a class to learn something.
i'm not being awkward here, just i don't think you're on the same wavelength
I only said that people will continue to learn. I never said it's strictly limited to people learning by themselves.
There are gazillions of contexts in which pedagogy applies.
I hope the context clarifies it, but good luck!
of course they continue to learn, but that's not what pedagogy is
how do you define pedagogy?
pedagogy is literally about the practices of teaching - how you go about getting a class to learn something.
the way i interpreted the conversation is that recursive_error is talking about teaching engineers in a semi-structured environment. i think the same concepts can apply
i think he was talking about onboarding on projects, not teaching how to code
right, but onboarding on projects still needs learning, just different topics
but learning isn't the same as teaching
when you onboard someone you're teaching them arent you?
NOT FOR RESOURCES, HELP, OR SELF-STUDY ADVICE | Discussion of the methods and practices of teaching | Resources: https://www.pythondiscord.com/resources/
I was actually thinking way bigger than that. For instance:
- You need to write the documentation for a product. There is pedagogy involved in how to transfer the knowledge onto the users. Which methods do you employ? Which order? How do you organize the materials (ex: recipes vs reference vs etc.)
- Related to the above, you need to train the sales people. Some companies even have internal certifications which need to be prepared and updated for sales people who are not technical at all but need to be able to convey complex ideas in simple terms a prospect might understand
- Training people is a whole job. There are jobs where you do train practitioners to your classes. Typically used for certifications
- Training other engineers on new code bases, new technologies, etc.
There are also many other contexts in which pedagogy is applied and it's far more open ended than one might think
Discussion of the methods and practices of teaching
i believe recursive_error was saying about how PRIMM is one of the methods on how you would onboard someone, which would fit under the topic imo.
it would be very narrow minded to limit pedagogy to teaching in a classroom in a highschool or college
agreed.
and pedantically, that would not match the definition of pedagogy
like you said, everyone continues learning well beyond high school / college
yeah - i agree too - i don't think it's limited to a classroom,... but i don't think it has anything to do with documentation
don't confuse the finger for the moon
???
what does documentation do?
I used to use PRIMM a lot, but i found it doesn't really work for me.
Well, not the P part
i worked on a research project with the developer of the PRIMM methodology, we had several phone calls about it, and she helped to restructure the computing curricula in the UK around it. But, there's a strong side of me which thinks the P bit doesn't work well. Which is why I was curious to discuss it.
can you state what the P stands for and what it means, in your own words?
sure, but i want you to tell me what it means in this context in your own words.
no need to be a smartass.
excuse me?
what does it mean to you?
P: give students a piece of code code that contains the function ```py
def multiply(a, b):
return a * b
ask them what they *expect* this to do.
it's not mystical - it's simply about working out what you think the code should do
yes
but they won't actually do that
right, so why doesn't it work for you.
why not? you're the teacher, you're supposed to be guiding them into it
well, that's literally the point, it's very difficult to encouage a group of mixed ability people to do this
not when the example is as simple as it can be re: the context of the entire group.
that's why it's flawed - in reality it won't work
in theory, if you're talking about a very disciplined group of mature minded people, it's a great and logical idea.
but you can't do it in practice, because it's simply not engaging enough
does everyone in the group know multiplication? then you can give a piece of code that does multiplication.
start with the basics
then split off everyone based on their abilities
then give them new problems to analyze based on their espected skill levels.
so what do others do?
Engaging and interesting problems can go a long way in gaining and retaining attention
compare for instance the first problem on codingame and leetcode
they do this.
if group A can only do basic multiplication, just do return a * a * a
if they're more advanced, then give them something like idk, more complex math ( `a^2 + b^2 = c^2 ) problems or something that they like.
but when you're using PRIMM you're not splitting people into different ability levels
trouble is that i'm talking about a methodology with people who don't know the methodology
i was onboarded using PRIMM pretty sure.
Predict -> look at piece of unfamiliar code, predict.
Run -> run code, assert the expectations
Investigate -> investigate where the code can be applied to
Modify -> modify code to take in new conditions so that it can be applied somewhere else as well.
Make -> build upon modified code.
no - i mean how did it go as in how did you actually find it?
pretty intuitive.
In terms of community participation, I would also encourage you to avoid arguments of authority and focus on the strength of the arguments.
It will make for more productive discussions and avoid you hitting some walls.
We all come from a different backgrounds, experiences and countries.
For instance we have so much to learn from your experience in school, and you have so much to learn from the experience of people in the real world. And that way we can all learn from each others and drive to better solutions and more engaging discussions
so when you predicted, what did you physically do?
you've got nothing to learn from me, don't worry about that
If I can learn from the smart kids in #python-discussion , I am sure there is a lot to learn from you
thing is, i'm not having arguments of authority... it's more that i end up spending time explaining what pedagogy is, in an actual channel with is meant for discussing it... rather than actually talking about pedagogy
like - i'm interested in the process of how T&L works in the software domain
You have found yourself arguing that no one else but you knows about pedagogy, but nothing else
no - of course not
there are many millions of teachers
but i was arguing that it's not, for example "documentation" because it's not
and even now - we're discussing what it is rather than how to do it
Documentation is not pedagogy the same way slides or books aren't pedagogy
these are just non-sequitur and I don't see why you keep bringing non pedagogy related concepts here
you brought them up
I never said that documentation is pedagogy
oh - someone did - forgive me
i was referring to this
Here is what I said:
- You need to write the documentation for a product. There is pedagogy involved in how to transfer the knowledge onto the users. Which methods do you employ? Which order? How do you organize the materials (ex: recipes vs reference vs etc.)
The documentation is just a medium. The pedagogy aspect is about how you teach your users about a product and related concepts that come into play.
The same way a teacher might use slides and other media (or even activities) to teach pupils about concepts
never done that

kids rarely learn from a powerpoint
I never strictly limited your medium to powerpoint
People also suck at teaching from a power point. They just reiterate the same bullet points and don't expand or explain things further on them
bingo
though it's common to have teachers use slides as a medium in college
it's a nightmare if you find someone who uses slides
9/10 times they don't teach well from a power point. Just make a doc if you don't intend on diving further in than the bullet points. This goes for college too btw
agreed
Just cause someone's a professor doesn't mean they're a good teacher
I never really cared.
The teacher's skill was more at play than the support medium they use
if powerpoint disappeared it would be to the benefit of learning
I would say removing power point from the education system yes. Do docs instead. I've been writing up documentation and its so much better to do than power points. Especially cause people can view it later and not have to listen to a lecture
Yeah, we should all use Prezi!!
hilarious :/
imo powerpoints should cooexist alongside a proper doc.
The main purpose of a powerpoint is to be a visual aid alongside a lecture/presentation.
Which is mainly focused at teaching students talking in public.
And the research part of the project, should be written down in some form of proper document.
Without something like a powerpoint visually there whilst you are speaking, your lecture or presentation will more than often just bore out the listeners
Purely for live-lectures sure. But if you do some kind of recording and making it available afterhand for students, i think you should have a proper doc, as whiteboard sessions can get really chaotic xD Not to mention things you wipe off
i'm not a lecturer or presenter
they're my go-to teaching tool
Had me thinking you give lectures
no - i'm a teacher not a lecturer
This was not meant as an attack on you or your ways.
That above is just my opinion, and i feel like lecturer and teacher are comparable in this context
i don't - but then i can't imagine being a lecturer
do you lecture?
I don't. My mistake stems from us not having a different word for lecturer and teacher in my language i think.
so i meant teacher from the get-go and not lecturer.
My bad
"Teachers are primarily educators who work with students in an academic setting, whereas lecturers are experts in a specific subject matter who lecture on the subject at various events"
I see.
Doesn't change my opinion on the white-board sessions though.
If it is always a live session and people are there paying attention, go for it.
If not it should cooexist with some other form of documentation imo
why should there be documentation?
how does that improve learning?
If for example a picture of the whiteboard at the end of the class is posted (again if not all students have to be there in person at the time), these students have no context to whats on the board, and may be missing (wiped out) info
@bleak lantern What grade do you teach in if i may ask?
I don’t use a whiteboard
Again, nothing meant personal...
But since you made it personal, what do you use?
Me. Mainly.
Mini whiteboards as well.
what do you do if someone misses a class?
Classes only being in person is nothing strange, is it?
Mini whiteboard = A4/A5 size ~ish?
Yes
Not my problem
there's no way to make up the work or learning?
No.
why?
It’d be too time consuming, and no one would do it.
As in, the students wouldn’t do it.
Did you have ways to catch up when you were in high school?
yes
If you’re off for a week, that’s 30 hours of catch up the following week. While still doing your existing school days. How do you fit it in?
How did teachers provide catch up for you?
you just lock in and do it
Well. We’ve seen during Covid that it don’t happen unless you’re there in person for the most part.
there are typically assigned things to do like textbook readings as well as classroom materials like powerpoints, videos, whatever. at least in my experience, this was the case
Your teachers must have had a lot of time on their hands.
Providing students with the material that they missed seems like the bare minimum
Why?
what do you mean? there wasn't anything special done, these were already prepared for the students that were in class
The bare minimum is getting to lessons.
You wouldn't want students to get behind just because they get sick
Tbh it’s just excuses for the majority of cases.
Yeah. To be fair, genuinely we’re really conscious of student illnesses and other factors, and do our best to make alternatives. But it’s not the same. A text book never makes up for it.
And they simply never actually catch up. When they’re off, they miss things and perform worse in exams. Excellent attendance is vital.
Missed this, sorry. Yeah. It’s normal. I only experienced any other way during Covid. And it invariably fell short for most people.
Again sorry - missed this.
No. There’s a certain amount of prep, but there’s simply no time to be able to create resources for students who aren’t there. That’s not what teachers are paid to do.
We’re paid to teach. Not to create media.
i don't know what you mean by "No.". i'm just talking about my experience. the materials that were used in class are simply persisted and posted online
I guess you had teachers who just read from PowerPoint then.
What I mean by no is “no, there wasn’t”. It was an answer to your Q.
what question?
This one. With the question mark.
you may have missed the part where i said that the materials aren't created solely for the people that missed class. as an example, in my bio course we sometimes did labs online using some flash app. there's no reason that can't be done by someone that missed class
I’ll probably back out of this now as I’m feeling a bit judgy about what counts as teaching.
For me when I was a student at uni:
Lab assignments in engineering/programming came with a short written material and problem statement. You prepared at home and did the last parts/presented at a dedicated time with teachers.
The labs were small part of the education. The majority were lectures.
In mathematics we had this:
- book with theory and practice problems
- lectures (only whiteboard, never slides), everything that said was written so the students had time to take notes).
- classes, smaller groups than lecture, solve problems from textbook together with teacher as whole group, and individually. Better chance to ask questions.
- Exam
No material except the book was handed out. If you missed a class, make sure to catch up.
which did you find easier to learn from?
For the math's list, all of them are valuable.
Regarding programming lectures from slides, also ok, but not as good as "live" whiteboardingof the math courses.
Math lectures would absolutely not have worked with premade slides.
To me this is a wild statement coming from a teacher.
If you don't even trust your students to not lie about their absence reason,
your brain will not justify you putting in extra effort to catch them up to speed again... As is evident by the rest of the conversation.
Why come in here to try and do it better, if in the next statement you compare yourself to other teachers?
Fuck other teachers, You are you and you should try to be the best you, not an average teacher.
Just know, if you take offence to my opinion,
that i am just a random guy on the internet.
And i will respect you just as much as before, as i can image that being a teacher is really hard.
I would say it depends on if you're talking public school K-12 or Higher education in a university where the standards are significantly higher.
Hm
I find the k-12 kids need the help the most
The difficulty is simply that teaching is not the same as presenting.
It's not the same as doing a lecture, for instance.
You have to be certain that learning has happened.
And learning hasn't happened if you ask students 4 weeks later and they don't know it.
Completely missed my point, but going further on this.
Depending on the subject, eg maths, Your primary focus shouldn't be to make them learn every definition, constant, rule, ... out of their head. imo a teacher should be focusing on teaching a student how to learn, not how to remember possibly irrelevant crap for what they want to do when they grow up.
Most of those formulas, .. i learned during math's i don't know anymore, but the greatest thing those lessons have done for me is teaching me problem solving, which for my profession is 1000x more important than some silly formulas i can google anyways...
then circling back to the previous conversation, supplying these extra ways for students to catch up, or revisit important information from the class, aids them in their self development, you teach them to learn on their own...
teaching them how to learn is part of the job but it's just a small element, because it's too meta - too abstract for most
seems a great idea, but only from an adult point of view... bigger priority is teaching how to behave
Isn't that what parents are for?
someone misbehaves, call a parent, let them sort it out
Not your job or place
it's about 50% of my job
indeed, i sometimes get calls (quite rare but it does happen) asking to support with behaviour at home
That should not be a normal teacher's job
yes - it's a normal part of a teacher's job
Over here they hire special people to do that, that have learned something regarding psychology, ..
i don't know where here is, but in the UK it's a teacher's role.
Not to far from you, Belgium.
imo that is a big flaw in the education system...
You should be educating people, not teaching them how to behave or helping with the situation at home. there are experts for that.
(generalizing)
hmmm... i think we're the experts - i don't see any other "experts"...
Psychologists?
A primary function of school is to keep children occupied to upkeep parents' economic output
And so managing behaviour ends up in the school's responsibilities
Sounds like lazy parents or bad parents to me.
My parents for example split their work up so 1 is working in the morning, and 1 afternoon. this made sure there was always someone at home, and thats where the behavior is supposed to get corrected.
And some parents work 4 jobs between 2 it's not a laziness issue
Bad parenting then, If you aren't financially ready to have and educate a kid, why have one?
To offload your responsibilities to an educational institution that should be focused on other stuff?
I'm going to far off point here though, And you made me realize that schools are just filled with students whose parents offload their responsibilities on the schools.
Correct.
And so that’s why teachers become responsible for the behaviour of students
So teaching Python by showing slides will not work. Kids need to be actively engaged. All of them.
That’s why pedagogy is interesting. And why I’m dismissive of “just share some slides “. There’s a reason it’s a separate channel. That’s because it’s a very hard skill to get right.
I'm not agreeing with you gatekeeping self study and possibility to catch back up, don't get me wrong.
I still think there is a mentality switch that could be made there
I’m not gate keeping. It’s just not my job.
I don’t make resources for a living.
I’m not sure why you’d expect me to, really. I don’t expect my doctor to go to the gym for me.
Most teachers do 50 to 60 hour weeks and I think adding more workload is an odd reaction to that.
So you spend 50-60 hears preparing classes, only to then throw away everything?
I am saying shift the way you are preparing classes...
@autumn marsh you're telling @bleak lantern how to teach, prescribing how parents should parent, how schools should be run, etc. Maybe relax with telling people what they should do.
Alright, my bad on that part. my opinions on the matters remain however.
At first i thought i came across wrong, but i don't feel like that is the case here.
I was saying what their respective tasks are,
- teachers are supposed to teach
- Educational institutions are supposed to educate pupils
- Parents are supposed to ... Parent
Please educate me if i am wrong on any of the parts here.
To my knowledge that is not telling anyone what to do, because it literally already is their job, or am i wrong?
first, "supposed to" doesn't help people if that is not in fact happening, so prescribing how society should work isn't that useful.
Second, what teachers are supposed to do depends a lot on what they are teaching. Nursery school teachers are mostly getting kids used to being in school, there's not much academics.
College professors do all academics. It's a spectrum.
Pretty sure we established highschool, at least that is what i am going off of
@autumn marsh you seem to literally be contradicting @bleak lantern actual experience.
For millennia raising children has been a group effort, it's only relatively recently that parents are expected to do almost all the work
What changed?
@bleak lantern has said they work with 12-year-olds.
Probably a number of factors - mortgages and automation?
Yo Yo Yo Skibidi Sigmas
I don't think i have contradicted her on anything, at least i have not tried to.
Most of my opinions come from personal experience.
For example the part about being there for psychological support for students,
Over here there are experts that a school hires to solve those issues.
How can you expect a teacher to handle that above their own workload already
Ok, where you are, teachers don't need to do that. Amelia needs to do that, what's the point in telling her her society is wrong?
how does that help?
Because someone needs to change it?
Why follow the rest if you see somewhere else that its going better?
I obviously know that this is easier said than done
But that does not take away the validity of my opinion
I must have missed that, and that brings a lot of context into the conversation
it's fine to have opinions about society, but maybe keep it separate from a particular person's discussion about their situation.
I teach 11 - 16 year olds
i do think that giving kids the opportunity to partially catch up is a good idea so like if you did some assignments or small projects you can give them to the students that missed a few classes and if they need you can probably look together for a small moment to help them with those assignments but imo that should be coming from the students and for like 11-14 you can point them to that option but at the end of the day it's not your problem or fault
I do find it interesting how people have an idea of what they think is reasonable for someone else to do, even though I know full well they wouldn't do it themselves in the same situation.
I think a lot of people think they understand "teaching" because they have been "taught". I've seen hundreds of films and read many books, but I don't consider myself an expert author. I love musicals but writing one is something else.
Anyway - I do enjoy the opinions and exchanges of ideas - genuinely. As long as people are equally open (rather than just telling me I'm wrong and don't know what I'm doing!)
(A response to your statement and not your situation)
Being able to critique a thing is a different skill than doing that thing. While someone who has watched hundreds of films likely can’t make one, they are likely to be able to discern what makes a film good or bad. And being good at that, is a skill in of itself. So even if someone has never done thing X before, they might still have very valid critiques.
yeah - they might. However, everyone has been to school, so many people think they have a strong idea of what teaching consists of. How it's done. What makes it work. The evidence is usually polar opposite to what most people think, including parents, former pupils, and many new teachers.
Agree. Like I said, this is just a raw response to what you said in a vacuum. Not so much specific to the conversation going on.
Even within teaching, you don't tend to know what you're looking at when observing lessons until you've been teaching for 3 or 4 years
GCSE Teacher?
among others, yep
Ill tell you this: believe in your students no matter what. Fuck reality, help them in any way you can. My form tutor/biology teacher in sixth form told me I couldn't get 3 As. That destroyed me mentally and even 4-5 years later, it still somewhat affects me. If it seems there's no way for them to achieve a certain goal, tell them its ok to start over and search for another path. But make you sure fucking help them and believe in them
The whole discussion has also been very narrow in the context of teaching high schoolers, which is a tiny tiny tiny area comparing to pedagogy as a whole
there's no way any of mine can get an A - grades are numbered, not lettered :p
we haven't even discussed pedagogy tbh
Doesnt even matter. Help them anyway. Understand their situations, understand their thinking and used that to try and find an effective way to teach the subjects theyre learning.
I know you don't mean it, but this is incredibly patronising. All teachers do this.
Some do, some don't. All Im asking is just believe in those kids no matter what and help them no matter what. Not many teachers do that
Nearly all teachers do that.
And - you have to portion your "no matter what". There's a limited amount you can actually do.
Nearly all teachers follow the curriculum and get paid to do the job, and occasionally help students where there's an obvious need. Most don't do what he or she is saying, because it's hard and it's time consuming. I have the luxury of doing that but all my teaching is 1 on 1 with private students so I can project that onto the whole
To put it simply, most teachers, as with most anything, are mediocre
I think it's more important to follow proper diagnostic procedure when something goes wrong. People make identity claims instead and are quick to say a student is cheating for not showing his work when he could be doing it in his head, or focus more on homework for kids excelling when it's purpose is to develop competency they have already attained
- Verify problem
- Clarify problem
- Underlying cause
- Potential solution
- Try it. Didn't work? Back to step 4
They're not turning in their projects on time
- Look back and see if it's a consistent pattern
- Isolate any particular variables to narrow the scope, ie is it particularly writing assignments or is it the software projects?
- Do they not understand something? Are the things they're struggling to turn in something theyve struggled with in class? Do they have a lot of distractions/anxiety in their home environment? Are they not eating enough so Maslow's hierarchy is taking them for a loop? Do they just not know how to manage their time?
- Taking the last one as an example, introduce them to gtd or bullet journaling
- Did they implement it? If not, try the next thing, informed with what you've learned
That wasn't my experience nor is that my understanding of the related fields, I think most of the things the science has found are quite intuitive and a lot of students are right on the money when they complain about the pain points
Overall this channel seems really good at "that's not my experience, so you are wrong." I wish there were more exploration of how different situations lead to different outcomes, and what different approaches are therefore needed.
agreed
what i'd really love is... "How should i teach python to 13 year olds?"
I already do... but if you were going to do it,... what would you do?
I feel I could shake up my technique somewhat because I worry it becomes boring.
- so i start with:
- starter for settling the class - takes 7 mins before everyone's in
- what a programming language is
- give examples of when they've instructed a computer before, to make them realise they've all done something similar already
- here's IDLE - this is the shell / interactive window (and get them to open it)
- this it how print works (and get them to do it - saying hello to their class neighbors, and writing a joke)
- this is how we can add , subtract, times and divide. (and get them to do it)
- talking about why 30 / 3 is 10.0 rather than 10
- this links on to data types, and we learn some data types.
That's what I do for the first 50 minutes.
(I don't use slides.)
(I DO use call and response)
That sounds like a good approach. I've never taught in a classroom setting, but this was how I taught my then-14-year-old niece one afternoon: https://nedbatchelder.com/blog/201212/kims_python_lesson.html
I spent the afternoon on Thanksgiving teaching my 14-year-old niece Kim about programming in Python. She hadn’t done any programming before, but was very interested, so I figured we could just give it a shot.
Definitely part of the challenge is to make it seem approachable, interesting, and relevant.
Have you seen the Django girls tutorial?
that was my start this week for 200 students in groups of 27
it sounds like a difficult workload
I learned python via self study with the Django tutorial (predates the Django girls tutorial)
Django girls is an easier on ramp and focuses on building something interesting rather than mathematics or printing
I think some students think programming is only for maths
I certainly did before starting with Django
love this - my starter begins with throwing mathematics to the wolves and declaring that the = sign doesn't mean "equals" in this room...
i get used to it - it's all a performance, like being on stage
one of my starter questions was this:
x = 0
x = x + 5
x = x + 5
what is the value of x now?
that got them arguing with each other 😄
i would call that "engaged"! 😄
Do you teach source control and group projects?
source control doesn't seem right for 13-year-olds.
nah - they want to be inspired by things which are quirky and interesting
for the year below we investigated ASCII
i wouldn't have guessed that would be considered quirky and interesting. Good work!
the way is by showing an ascii table... then getting them to write their name in decimal ascii... e.g. 65 = A ... 66 = B etc
ah, a code!
and then using ALT codes to write their name using the number pad
that was the "woahh!!!" moment
especially when they could type in any number and see crazy symbols appear
ANSI escape codes are a quick way to get something more fun in Python (changing text color).
the geekier ones are fascinated that they can READ the binary of the letters by seeing that it's ... e.g. 1 000 001 for A 1 000 010 for B...
The fact they can see the binary is linked to the position in the alphabet, they love that - it's like a code crack without needing to look something up
And 11 year olds are introduced to binary by learning how to count all over again
which is a favorite lesson of mine and goes down really well
have you tried counting in binary on their fingers? Up to 31 on one hand
"imagine you all lived in a cartoon like the simpsons - would you actually count up to ten?"
i wonder how many of them have noticed that cartoons only give people four fingers
that's what i point out
and then i get them to imagine a world where no one had invented 8 or 9... and ask the whole class to count in unison
they do ok until they get to 77
then i keep reducing the number of digits until they only have 0 and 1.
and then... ask them to count... and then they do it. perfectly. no explanation of binary needed
hexadecimal is more difficult to explain... but i love talking about number bases...
23:59:59... what's one second after?
what's one inch more than 5ft 11?
most kids don't know feet and inches but a few do
Have you tried going in the opposite direction, adding A, then B, etc, and counting with that?
yes
finally! an advantage for the imperial system!
yep - i also chuck in playing cards - with 10, J, Q, K - that's a mad system that they're all fine with
yeah - i explain how we always carry over and reset the digit, and then just say, it's exactly the same
honestly, most love the challenge of thinking in new ways
Do you start back at decimal again and then add A, or start going back up from binary?
i start at decimal and add A, B, C, D, E, F
i do wonder if i should slow it down and just add one letter at a time though
or... maybe create some new numerals
I was thinking it may be better to have them get used to the pattern of adding another symbol over and over, going back up from binary after having removed one after another.
yeah - possibly - a lot of them ask about trinary... which is a weird question from 12 year olds
but they like the idea somehow
i think i've gone a bit off topic, because i'm talking about general computing pedagogy rather than python
so apologies for anyone this irritates
one thing i talk about quite a bit is coin flipping and the state of coins. (it's more relatable than switches)
Perhaps they already encountered binary somewhere, and so base 3 is the most simple strange number system to them.
they're all totally cool with one coin having two outcomes and two coins having four outcomes.
most kids (and adults) think 3 coins have 6 outcomes
so we really talk about that idea a lot and cement in the whole "doubling" thing as it's another foundation idea
I like to get people used to drawing trees and thinking about branching, so I draw a tree with each edge as an outcome, the possible outcomes at the bottom listed. They can then be directly counted.
(this sort of stuff never works if you're not with them in the classroom - doesn't work on worksheets / slides etc. I don't know why, but I can get a whole class of very very weak kids to be totally on board in person, but I can never do it unless they're there in front of me, showing me what they understand)
(Also the method I use for probabilities)
ooh i like this idea!!