#pedagogy
1 messages · Page 4 of 1
I would probably design my classes so that students are eased into classes by having them use pre existing knowledge to emulate what classes do
Until it becomes apparent that theres something classes do that they can't emulate with top level functions and builtins
Then introduce the new syntax
Now they have the necessary context of what this new feature does and why its necessary
Rather than walk in a class room one day and be like "today were doing classes, dont worry about what they do, heres the syntax, learn it"
This is exactly what the article suggests btw
And that's why classes are important in Python. They help us get our programs a little more under control as they grow. I didn't know as a beginner, because I hadn't experienced the complexity of one of my programs snowball out of control. I had never seen a locked door and so I didn't understand why anyone would want a key.
Fwiw i've seen and experienced this disconnect myself, both as a tutor and as a student
I'd probably have a ready working class, not explain a thing to start with, and get students to try and work out what it does, and to make some adaptations.
I'd follow the PRIMM methodology on this one.
So you'd have to teach them both syntax and purpose together while the article would first teach purpose and then syntax, doesnt your method have a higher cognitive load?
No. I'd have a ready working one, hence lower cognitive load.
No typing of code in, but trying to understand something that already works.
That's how it's done in the PRIMM methodology.
So no, I wouldn't be teaching syntax, or explaining anything.
And no, I wouldn't be teaching purpose at this stage at all.
Do you not need to explain class self __init__ etc?
Are students supposed to guess?
How would they know theyre correct or not, they didnt write the code, can they alter it?
Yes, they can alter it - and they're expected to.
The PRIMM stands for
Predict
Run
Investigate
Modify
Make
So you start with predicting (or guessing - educated guesses really)
Then you run the code and then you have some investigative questions which direct you towards certain features
Then you modify things (again this is guided)
And then you can make your own.
This could be over a couple of lessons or could potentially skip a step (but probably not skipping).
It's shown to really help students learn programming more quickly.
But one of the features is that they don't start off worrying about syntax - it's already there in front of them and working.
So lower cognitive load.
(I do feel as if I'm trying to defend a pedagogical approach as if it's just something that just I do, even though it's the way hundreds of teachers now do this, following significant research.)
Now you're defending it, earlier you were saying "dont worry about it"
I don't follow.
I still don't follow.
I'm not sure which bit you're linking to, and I am not sure what point you're trying to make.
Anyway, the research conducted suggests that the PRIMM methodology is especially effective. And I try to follow the science when it comes to pedagogy.
Curious: a colleague mentioned f(1, 2, **kwargs) as splatting. I found some people online mention this but I have not heard it really said very often. Is it a worthwhile term to introduce to learners, or would them using it not come across to practitioners in y'all's opinion?
the ** symbol is sometimes referred to as a splat, but I've never heard that called "splatting". just "[keyword] argument packing"
but as long as "splatting" isn't potentially ambiguous, I don't think using it is bad.
Yeah it's more that I don't want to intro a term, for them to then go use it, and for them to then get feedback like "it's wrong" from more... prickly colleagues.
I would stick to "[keyword] argument packing" then.
til that name, but the documentation and pep 448 seems to call it "dictionary unpacking"
https://docs.python.org/3/reference/expressions.html#dictionary-displays
is it called that in all contexts? because {'a': 1, **other_dict, 'b': 2} is doing a similar, but ultimately different, thing.
also I have a sneaking suspicion that {**other_dict} is faster than other_dict.copy()
weirdly in an argument unpacking context, the language reference barely gives it a name
https://docs.python.org/3/reference/expressions.html#calls
even the official tutorial doesnt name the syntax beyond a "**-operator"
https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists
would {**other_dict} work with nested dicts? I think other_dict.copy() can use the deep=true argument.
!e {}.copy(deep=True)
@tidal orchid :x: Your 3.11 eval job has completed with return code 1.
001 | Traceback (most recent call last):
002 | File "/home/main.py", line 1, in <module>
003 | {}.copy(deep=True)
004 | TypeError: dict.copy() takes no keyword arguments
{**x} / [*x] create shallow copies, but x.copy() does not supports deep copying either, for that you have to use copy.deepcopy
Ah thats right deepcopy is its own function. As for speed, why do you think the expansion syntax is faster than copy()?
idk, probably the same reason why not not is faster than bool()
So the copy() function call adds additional overhead?
This is what I use typically
More importantly, the lookup of it does. Python has to find the function which is set to the copy attribute. For ** it can find the correct internal implementation more quickly - at compile time when it reads ** - but I may actually sway the other way.
See with dict.copy() Python could hypothetically use a very specialized implementation for copying dictionaries. Meanwhile ** has to iterate the object and recreate it
The specialized interpreter may change
Hi starting on python and I was wondering if it was possible to get the full HTML of a webpage using selenium? because I tried couple ways but some javascript dynamic elements always did not appear 😮
This is not a help channel. See #❓|how-to-get-help
oh my bad just thought the pedagogy channel was for help 😅
Ruby has * and ** operators that work similarly to the Python equivalents, and they're often called "splat operators." It's likely just another example of different languages developing unique terminology for the same concepts.
they're just about the same ```pycon
from timeit import main
main(['-s', "d=dict.fromkeys(range(50000))", "d.copy()"])
200 loops, best of 5: 1.32 msec per loop
main(['-s', "d=dict.fromkeys(range(50000))", "{**d}"])
200 loops, best of 5: 1.33 msec per loop
>>> main(['-s', "d=dict.fromkeys(range(500))", "d.copy()"])
100000 loops, best of 5: 2.1 usec per loop
>>> main(['-s', "d=dict.fromkeys(range(500))", "{**d}"])
100000 loops, best of 5: 2.11 usec per loop
the difference is probably just noise
hey, I'm a teacher in Iceland and I'd like to get your input on which books would be good to start teaching for 16-25 year olds, it would be nice to get your input on that discussion
do the books need to be in icelandic?
no, just ther a lot lot of books but i do want to get you input and see
is the goal to teach them python, or programming in general via python?
general
i can get the like going but we do want to step up the geame
i can tetche theim leik set up and basic but now we want to step up the geame and start to like microcontrole, webside outpout and in ther diresion
.
hello how are you guy
Are you teaching in Icelandic?
Or are you happy for English-based references / exercises?
English is fine to 😀
Damn - I love Iceland - wish I could take this task myself
I don't think ther ar Icelandic exist
I don't suspect so lol
We. Shud haf a meeting 🙂 and maby somting amazing can heppen
I was actually talking to my computing class about Iceland today - anyway - I digress.
I wonder if it's worth looking at Nicola Wilkin's book on Python
It's easy going introduction to getting into python in the first place - aimed a bit younger, but she has a reasonable style
Cool tanks I wil look in to it 🙂
Random thought: Aiming a bit young may be a good thing in some ways. I remember being surprised when I realized that some 7th graders who read at a 7th grade level didn't easily read at that level. If you wanted them to learn, it was better to target easier English, like a 5th grade level, so that they could more easily understand what was being said.
:incoming_envelope: :ok_hand: applied timeout to @weak mortar until <t:1683208049:f> (10 minutes) (reason: duplicates spam - sent 4 duplicate messages).
The <@&831776746206265384> have been alerted for review.
!rule 4
4. Use English to the best of your ability. Be polite if someone speaks English imperfectly.
How does everyone balance gaming with long coding hours and studying? what time do you prefer to relax and game, also how do you utilize discord for learning?
What balancing issues do you or others have ?
I'm not a gamer so I'm not sure whether I can relate but at least I'm curious.
Coding is my favourite activity so I practice it even more on my personal time than I do on my professional time and I take as much pleasure in both cases.
My 2nd favourite acticity is watching movies & TV shows, which I also spend many hours at.
I think it depends, if you're talking about the schedule itself, it's different for everyone. However, if you're talking about the balance between work and gaming, that's a different story.
I think the idea of balance is often misjudged by people who often think that the longer you work the better. Personally, to reach a goal I think it will always be more effective to set a goal day by day and try to reach it.
If you know that every day you have to climb a step to reach your goal it's always more motivating and less tiring than trying to climb them all at once without ever seeing the end.
About discord, I admit that I don't use it that much to learn, but in the end I realize that it's a very good resource. Unfortunately, as far as I know, there are not many servers, like Python, that offer mutual help system
This is a really difficult thing for me personally as I often will get sucked into video games and spend hours on them. I think the biggest thing for me personally is just making sure that my personal projects make me excited about them. If you're doing something you find exciting, you will be surprised at how often you default to working on that problem. Also, I have found that using the iOS focus groups is pretty useful. I set it up so that after 5pm all notifications related to work are suppressed.
I find that working long coding hours without breaks is extremely ineffective and is counterproductive to learning (like studying for an exam), therefore it's important to relax your mind and let your subconsious calculate the information to solidify the information, it's also good whenever you have a big problem in your studies to relex to get into a different, more problem solving state of mind, for more info: https://www.youtube.com/watch?v=O96fE1E-rf8 or search (learning how to learn tedtalk)
This talk was given at a local TEDx event, produced independently of the TED Conferences. Engineering professor Barbara Oakley is co-teaching one of the world's largest online classes, "Learning How to Learn", https://www.coursera.org/course/learning.
She know firsthand how it feels to struggle with math. Dr. Oakley flunked her way through hig...
Do you prefer to study python by problem and solution learning or do you prefer to study from the official tutorial and documentation from python or yt vids.?
i'll for sure check out some focus groups, do you know any on discord? or some easily accesseable online?
You would be surprised at the amount of 7th graders reading at 10th grade levels as well.
Simpler is better, but one has to not compromise detail in the process
I find that working long coding hours without breaks is extremely ineffective
Well, my decision-making on this is simple : when I'm writing while ideas are flowing in my mind, I keep at it, but when it stops, I go do something else or I switch projects.
I study most problems by trying to implement it without any help first, and sometimes without even a known "good answer" (like lets say you're making a game-playing algorithm, not all games are solved), and then if I have trouble I got to stackoverflow or chatgpt, and if I want to improve performance or make things more clean I check out the python itertools library reference
Sure, there are quite a few of those, too. But you don't have to do anything special with them in this regard; if you target their grade level, they will understand, and easily. Whereas the students who need effort to read at their grade level will need to work to understand both the material they're trying to learn and the words used to communicate that material.
If you've never seen 7th graders trying to read a 7th grade text aloud, you might be shocked. I know I was.
looks like one for #career-advice instead than here - but thanks for the share, i needed exactly that.
Does anyone know of a site like codechef etc that allows creating private competitions/leaderboards?
I want to set up a competition/leaderboard for the kids at my school (Bonus points if you know of a site like codechef that's aimed at young learners 7-14yo)
:incoming_envelope: :ok_hand: applied timeout to @tawny quest until <t:1683858072:f> (10 minutes) (reason: duplicates spam - sent 4 duplicate messages).
The <@&831776746206265384> have been alerted for review.
@sterile olive
Today in exam we had the question "How do you delete the 3rd element from a list called a?" There were multiple choices, between them a[2:2] = [] and a[2:3] = []. That's the only part of the question I skipped. In all my professional experience, I've never seen this construct being used. I know how it is supposed to work, but damn that's some pretty bad code, no one actually uses that. I skipped this question.
This all leads me to this: aren't the questions "How do you do X?" with predeterminated choices completely missing the point? In an actual work environment, you are either writing code (the question is open ended) or reading code ("what does this snippet do?" type question instead).
Coming back to the original question, just tested, the first one is a no-op which I wasn't sure of. I wonder what the purpose of placing such an answer is, really.
I can imagine something about testing whether you'd fall into such a pitfall when writing code, but at the same time that's not the construct I'd use
If the question was open ended you could actually check if the student would fall into that pitfall while letting them use something else if they're more used to it
Anyway, opinions on all of that?
I wonder what the purpose of placing such an answer is, really.
i'm pretty sure that also applies for the other wrong choices
Yeah, I guess that's true.
that construct would be more commonly used when deleting multiple elements
but even that is supported by del so idk really
I'd do two slices all the time, honestly
I have used slice assignment on occasion, since unlike del et al, it cannot ever produce an IndexError. (though I would not put it into code that will be part of a code review)
I do think the questions of the style "how to do X" are still important early on, since they test your ability to convert the logic of what you want to do into code that actually does it.
Having the correct program in mind, but implementing it incorrectly is a common source of bugs for beginners, and it is important to have just about 100% success rate in this when writing practical code.
This specific question is kind of silly though, that I agree with.
i agree that this question is silly, it should not have been multiple choice. you should just be able to write your answer.
I feel like True/False "which of the following snippets of code work correctly for that purpose" might work for that kind of question? not particularly sure though
The question seems to test knowledge of slices being end-exclusive and protected from IndexErrors, which is important and useful. But the correct answer is an obscure way of doing something simple, which isn't good practice in code.
While generally agreeing to everything being said in this conversation, I'd like to add that :
"How do you delete the 3rd element from a list called a?"
Is not a question that ever applies to the real world, as no actual use case requires manipulating iterables using hard-coded indexes, but dynamic ones relying on user input.
ok. delete the ith element then. it's the same question
Well yes but that would still be a small part of the use case.
A more relevant question would be "how to delete the element that fits (some condition)".
Hello!
What textbook and/or tutorials would you recommend to a beginner but somewhat familiar with programming for learning how to do text analysis with python?
This channel isn't for resource suggestions. Try asking in #data-science-and-ml, provided that you can be more specific about what text analysis you want to do.
Will do, thanks!
Should basic software engineering (requirement engineering, use-case/activity/relationship/etc. diagrams, etc.) and DevOps (version control, dependency management, documentations, etc.) be taught to people that have gotten the basics down and are transitioning to "project" (not monolithic scripts)?
that's a funny definition of devops
version control and dependency management is something im still getting used to.
I only got to it after realizing that what im doing is probably going to stay for long and need updates, maintainance, etc.
i think its useful to be taught, but unless I have a project that needed that kind of provisioning what best practices I would have learned will be lost to the winds.
I think most of those should be covered in a software engineering course, yes. Though I wouldn't bring "DevOps" into it.
I mean. I don't study programming as hard as you all
me neither, but at some point it became a necessity for me since it gave me some semblance of structure to my otherwise scatterbrained file structure
CC @acoustic hinge
The problem is that it's a course, built into a learning path at college/uni. Considering Python's status of being easily accessible by academia and the general public alike unlike like the C family, Java, and what-have-you (idk, I'm spitballing), maybe it's good to include the basics of software engineering in a book teaching programming, maybe at the 2nd half or the 3rd third?
I.e.: We're gonna cover the stuffs at surface level, bc that's all the general public needs. Proper engineers will need the deeper stuffs
if its a college/uni course then i guess it wont be that flexible to begin with? if i were a student i would just have to go through it if its included in the course
my experience with learning at uni is that, regardless of the subject, often whats being taught is important down the line but I have no use for it at that moment. Thus I forget and then many years later i would have to dig it out from the depths. I'm aware this is more of my own way of learning and not how the wider palette of students would do it.
How does everyone balance gaming with long coding hours and studying? what time do you prefer to relax and game, also how do you utilize discord for learning?
Intro to Python instructors struggling in our post-ChatGPT world be like:
to anyone else also thinking that it is just a meme upon first seeing it: https://discord.com/channels/267624335836053506/1112468949720903820
So for my web dev portfolio I'm writing a very basic explain-like-I'm-ten introduction to Python
If you want to introduce a discussion topic, please do the whole thing in one message.
That was pretty much it
I like that it doesn't go without saying that my messages aren't memes 
Though I do wonder how introductory writing and programming courses can prevent cheating without adding lots of burden on the instructor
@weak mortar see #❓|how-to-get-help
We don't have resources for Arabic speakers, unfortunately. You might look for a python user group in your country.
Just ask chatgpt to include explanations in the code
How can we pursue knowledge and inspire others with its authenticity and production and avoid replicability?
pls answer in dms
that's gotta be some essay prompt
this is a discussion channel, so please don't propose a discussion topic and then ask people to DM you. we want to have discussions here. But I don't understand what this sentence means.
"Don't worry, I gotchu" sounds like what ChatGPT would produce if you told it to talk like a Zoomer.
just ask ChatGPT and write that sh-- down!
!pip asyncio
Please do random commands in #bot-commands
I came here to say that The Programmer's Brain is underrated. https://www.manning.com/books/the-programmers-brain
what's interesting about it?
:incoming_envelope: :ok_hand: applied timeout to @weak mortar until <t:1686012727:f> (10 minutes) (reason: duplicates spam - sent 5 duplicate messages).
The <@&831776746206265384> have been alerted for review.
A school classroom is good for this, since the teacher and other students will often see if someone’s cheating.
For homework and online courses, it’s trickier.
:incoming_envelope: :ok_hand: applied timeout to @quasi pilot until <t:1686052528:f> (10 minutes) (reason: duplicates spam - sent 4 duplicate messages).
The <@&831776746206265384> have been alerted for review.
In elementary school, we learn how to read prose and approach the analysis at different levels of abstraction (syntax, vocabulary, diction, etc).
In the book, she provides a set of tools to approach the reading of source code and how to increase comprehension.
Interesting. Can you give an example of one such approach?
Thanks for the challenging and useful question.
Here is a description of one of the exercises:
Print the source code on to paper, then...
Circle all the variables.
Link similar variables.
Circle all method/function calls.
Link methods/functions to their definitions.
Circle all instances of classes.
Draw a link between classes and their instances.
And here is a quote from an earlier chapter:
When tracing very complex programs, you might feel the need to note the values of variables, either in the code or in a separate table. The fact that your brain feels the need to store information externally can be a sign that your working memory is too full to process more information. We will cover this information overload and how to prevent the brain from overloading in chapter 4.
Here is a quick summary of how the different types of confusion are related to the different cognitive processes:
Lack of knowledge = Issue in LTM (Long Term Memory)
Lack of information = Issue in STM (Short Term Memory)
Lack of processing power = Issue in working memory
... As the previous section showed, the cognitive skills used for reading code are similar to those used for reading natural language. This means we may be able to apply insights gained from studying how people read texts in natural language to reading code.
There has been a lot of research into effective reading strategies and how to learn them. Strategies for reading comprehension can be roughly divided into these seven categories:12
Activating—Actively thinking of related things to activate prior knowledge
Monitoring—Keeping track of your understanding of a text
Determining importance—Deciding what parts of a text are most relevant
Inferring—Filling in facts that are not explicitly given in the text
Visualizing—Drawing diagrams of the read text to deepen understanding
Questioning—Asking questions about the text at hand
Summarizing—Creating a short summary of a text
The author, Felienne Hermans is also the leader of the Hedy Project
https://www.youtube.com/watch?v=fmF7HpU_-9k&t=21s
When kids learn to program they often use either a visual language like Scratch, or a textual language like Python. While visual languages are great for the first steps, children and educators often want to move on to textual, but early on, a textual language and its error messages can be scary. Hedy aims bridge this gap with a programming langu...
This is quite interesting.
When you first posted about The Programmer's Brain I was concerned that it would extrapolate what little we know about the how the brain works too far, and make unsubstantiated claims. For example, the book cites research that camelCase variables are easier to remember than variables written in snake_case, but people are quicker using snake_case. However, when I read the studies themselves, the null hypothesis (there is no discernible difference) can in most cases not be rejected, and there may be significant sampling bias. It is very easy to see how the attached picture (from the generally excellent poster found here: https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/the-programmers-brain) arises from the existing literature, as that answer is much more interesting than the truth: we don't know, and it has negligible impact.
However, it makes a lot of sens to take the lessons we have learned in teaching natural language and apply them to programming, particularly when it comes to teaching children or young adults.
I find it useful to have been exposed to modern understanding of cognitive psychology during my education, and this book seems to do this in the context of programming.
Optimised code to get a good mark:
#-----------------IMPORTS------------------#
from math import sqrt
#------------------------------------------#
#-----------------IS_PRIME-----------------#
def is_prime(n: int) -> bool:
try:
try:
n / 1
except:
return None
if '.' in str(n):
return None
if n <= 1:
return False
for e in range(2, int(sqrt(n)+1)):
if n % e == 0:
return False
return True
except Exception as Error:
raise Error
#------------------------------------------#
what's the try/except clause for?
Just in case
...
Please move this to off-topic.
I know, right?
It's a terrible title in the sense that most of us would draw that conclusion.
IMHO, a better title would have been something like "Interpreting the structure of computer programs" because it focuses on how to read code (vs SICP which explains how to write code).
Out of idle curiosity, is there anyone here who has taught themselves to program primarily using ChatGPT? (or copilot or similar tools)
I think it would be naive to learn programming from any single source
hi
I learn python exclusively from python.org
Probably late but check out HackerRank
I know a Risk player who’s been learning Python entirely from Bing AI, and managed to code some pretty cool projects too.
Though it doesn’t mean he wouldn’t have got the same results or better if he’d incorporated other resources too.
Thanks ill check it out
whats that
a function
why do newbies use global so much?
I'm guessing because it's conceptually simple
Lots of places. One is right here. Another is https://docs.python.org/. There are many other places.
I'd say lack of understanding in terms of scope, or how to properly implement functions with parameters/return. Could also be because they'll learn classes later and if they're really in need of some sort of "state", globals fill the role until then
Why did @rustic mountain's question (1120368529930194975) get closed? It seemed like a perfectly good question and I was working on an answer :/
This question belongs in #community-meta, but help threads automatically close after a period of inactivity.
Like an hour? (Sorry for misplaced thread)
Yes
ok. thank you for answering!
You can DM me if you want
sus
I use ChatGPT for an explanation of code and syntaxes if I'm not sure what the syntax is doing. I generally use reference materials such as the program's documentation amd watching long-form tutorials.
the IT world is changing so fast i'm scared if i commit to learning it'll be outdated by the time i'm done
are projects in university really that easy?
that was also true 20 years ago. be ready to keep learning.
alright, better plan than doing nothing i have to admit
also focus on the basics
i learned python all from a goofy ass book
it's fine to start out with a book, and then once you're done, look at other sources
I'm saying don't just have that book be everything you know
I'd rather have some outdated skills than no skills at all, makes it easier to learn the new stuff
yea but the choice is between IT skills and other skills, not no skills
Ahh I see
I assume by IT you don't mean programming strictly, but having general IT skills can save you a lot of time and make you a valuable employee
if you were to learn python from scratch. what would you guys do ?
interesting.
I think it's how I learned
this channel is for discussing teaching techniques, so please remove this message
source
Anyone have a good analogy with which to describe Lock objects? I'm making material for a course I teach at work.
The best one I've come up with is those three sisters from Greek mythology who share an eye, with the sisters being threads and the eye being a lock.
That's kinda obscure, though...
it's a talking stick
I just worry that not everyone will know what that is...not that I'm one to talk given my example...
how about the baton in a relay race? Only one person can have the baton and thus run.
Oh...that's good.
you could probably draw some analogy between a lock and having a talking stick too (or whatever equivalent object you prefer), where within a gathering of people only the person currently holding the stick is allowed to speak
at what point could one consider themselves comfortable enough with a language and basics of programming to safely pick up another language without causing confusion? Are there signs someone should look for?
honestly the worst that might happen is probably discouragement and syntactical confusion. I'd say to go for it! Every language you work with will make the next one you pick up easier to learn, and if you're interested in another language, it'll be fun to dive in
So I'm working on material for a Python course I teach at my workplace. I've gotten to the unit on multithreading. The problem is that I barely ever use it myself, and don't really know what needs to be covered in-depth and what I can just devote like, 1 slide to.
So far I've covered the creation and running of threads (not extending the Thread class, just using it to run singular functions), global variables and their use with threads (plus the related warnings about what can go wrong if care isn't taken), locks, and avoiding deadlock.
I'm guessing I should also cover conditions and queues, but I don't know which concepts are more important and which might only need a brief mention.
this is probably a better question for #async-and-concurrency
Yeah, maybe so...I figured since teaching was involved I'd try here first.
Hi, next month the project I'm working on will be finished and it will probably be about a month before I join another, so my company suggested I hold a 2 week long workshop for CS students, probably ones who already got their bachelor's degrees.
Our company mostly does web app and mobile development, so those topics would be the focus. We also want them to be working in teams to get an actual feel of what it's like to work in the company. Other than that, I will be in charge of coming up with the actual program and materials.
I don't really have experience with anything like this, so I'm looking for any advice you might have...
Were any of you in charge of something like this before? What approach did you take? Do you have a project suggestion? Any info or advice is welcome, really
@oak copper I'd pick the most confusing tech your company uses, and teach an intro to it
For me that would be whatever it is conversational AI people are doing, but I'd need someone to teach me first 😆 But it certainly is one idea to take something confusing and try to make it simple.
:incoming_envelope: :ok_hand: applied timeout to @weak mortar until <t:1688287933:f> (10 minutes) (reason: duplicates spam - sent 4 duplicate messages).
The <@&831776746206265384> have been alerted for review.
Hi everyone. I've been a javascript dev for some time and would like to learn some Python. Anybody know of tutorials for JS devs, maybe ones that have comparisons?
This channel isn't fo rresource suggestions; try #web-development
Oh, sorry about that, I'll try there, thanks
Has anyone read the books “fluent python” or “distilled python” and if so which one would u recommend
this channel isn't for resource suggestions, but fluent python is widely regarded as the best book for going from an intermediate to advanced understanding of python.
Does anyone know of any standard or well known systems for creating knowledge banks for knowledge articles?
Looking for a general template / standard practices that could be applied to make learning more streamlined for users through KAs
dunno what most of those terms mean, but maybe you want wikimedia? i.e., create a wiki like wikipedia
not really on topic, you can ask in #ot1-perplexing-regexing
but generally, confluence, notion, etc
Any recommendations from other lecturers on intro to ML textbooks (obviously using python)?
I’ve used the Hands on with scikit book before and it was okay but not a lot in the way lecture materials or homework/case study data sets.
This channel isn't for resource suggestions. Ask in #data-science-and-ml
Rereading my message and I see how it might come across as just looking for general resources. This was not the intent.
I’m hoping other lecturers/instructors/etc. would have recommendations (and discussion) on what textbooks they use for python & ML courses they teach. That is not suitable for the general resource channel.
@proud wasp This server isn't a place for soliciting paid work, so I deleted your message - please don't advertise your own tuition here again.
Hey, new to the server and python in general.
I know some of the basic functions of python, but i'd like to follow an extensive guide or tutorial to really get familiar with everything.
Any recommendations?
This channel is not for resource suggestions. See #❓|how-to-get-help
Alr, thanks
Is there a section on this discord where we could list ourselves and qualifications for offering tutoring services to students/new python learners?
No, because we don't allow people to offer paid services. And if you want to tutor people for free, you can answer questions in #1035199133436354600.
This channel is for talking about teaching techniques--if you have a question about the server, use #community-meta
I see
Idk if this is a known resource but if anyone has used it before id like to get opinions on zybooks
My kids freshman intro to programming (Java) course used it. I thought the content was well laid out, with good interactive examples. Not sure what you’re looking for in particular, but it seemed well done to me.
mostly asking because it has become my go to way to learn languages. it’s how I am learning python and I was hoping to see if it is a reliable source of information. and if it covers things necessary for proficiency in programming @tame dagger
I thought the content mapped well to a standard intro to programming course, comparable to CS50p (Harvards online course). But, as it was taught to my kid, it was supplemented with programming projects: Zybooks covers the material, but needs to be reinforced with actual coding.
yeah definitely, thanks
is it a waste of time for me to learn about reading and writing binary data. I want to go into AI and am in my first semester of a CS degree. I purchased an online python textbook that hasa a long section on binary data and the struct module. I am wondering if this is worth spending the time to really understand. Thank you
for what it's worth, I've been doing python professionally for 10 years or more, and have never used that module
thats kind of what I was thinking. I cant think of a scenario where I need to write string using ASCII then manually convert it to english. @flint goblet
But I don't know what write string using ASCII then manually convert it to english has to do with binary data and the struct module
probably bad wording. Using struct to pack binary data. or writing binary literals which get converted to english.
@flint goblet It is fairly confusing and that is why I asked if I should spend my time really learning it. Or move on to a subject that will most likely be more applicable in my career
I’ve had to work with all sorts of binary data formats, often having to write my own decoders/etc. As a new developer, my advice to you is: build a wide foundation… if there’s something you don’t know, embrace the opportunity to learn it. I use stuff all the time that I never thought I’d use.
true :/
Of course, to be fair, if you choose to learn something else instead of this, it’s probably an equally good option 🙂
Yeah, I am just on a time crunch to finish this textbook before my next semester starts and I wanted to have a wide enough range of useful skills to be able to work on projects in my free time. @tame dagger
I can imagine a scenario where your data would be in some weird binary format and you can't find a library that parses it correctly. Would be real embarassing to be a senior dev and not know how to parse a binary format. (though you could probably just learn on the spot, but it still is good practice).
🤷
there are a near-infinite number of things that a senior dev might be called upon to do; preparing for all of them is impossible
"learning on the spot" is how I learned most of the specific stuff that I know
that makes sense, i ended up skipping that section and I figure if I need something that specific I can just figure it out in the moment
my answer is usually "anything is possible, add it to the roadmap"
Can someone read my notes on the basics of Python and see if I missed anything or didn't understand a concept well enough?
I have it in a txt so I can't post it here.
!paste
If your code is too long to fit in a codeblock in Discord, you can paste your code here:
https://paste.pythondiscord.com/
After pasting your code, save it by clicking the Paste! button in the bottom left, or by pressing CTRL + S. After doing that, you will be navigated to the new paste's page. Copy the URL and post it here so others can see it.
looks like these are notes for yourself rather than notes for teaching python, so it's out of scope for this channel. please open a thread in #1035199133436354600 and we can go over it.
👍
@loud pike
The author of that book uses some strange metaphors/analogies (example: a network of highly intelligent crows that have created a pseudo-internet in order to explain async/await)
that's a great example of trash tier pedagogy. analogies shouldn't be so contrived that you lose track of their communicative intent.
That's a big gripe on the reviews of the book. An entire chapter is written using the crow network analogy
I also found it confusing
one wonders how such a thing got published.
However I still like the tentacle analogy, at least the author doesn't devote an entire chapter to squids
did you already know how variables work when you first heard the tentacle analogy?
Yes. I read the book after learning python. To be fair it's not a book recommended for beginners, I thought that analogy was simple enough, but it could be reverse Dunning Kreuger on my part
What book is this? Now you’ve piqued my curiosity, I do love some creative analogies, even if they miss.
an analogy can be interesting and still be ineffective for communicating a new concept. I think this is one of those.
Eloquent Javascript its free as an ebook
good thing it's free...
Maybe you're right, I just thought an additional analogy would shed some more light on the topic.
Sorry if that made it more confusing Theorem!
this is not a critique of your involvement in the thread
No I think I understand you, you're just pointing out that it's better to use less "fanciful" analogies when explaining topics
the point of analogies is to relate something unfamiliar to something that is. if that nonsense about crows had any actual communication power, I suspect there was some underlying analogy that actually is relatable for the intended audience.
This channel is not for resource suggestions.
I've been working on some Shiny for Python workshop materials and figured out how to do in-browser comprehension quizzes using pyodide and Shiny.
https://rstudio.github.io/shiny-python-workshop-2023/getting-started.html#quiz-1.0…
I really like this as a teaching model because people can test their understanding and interact with the code without leaving the page or setting up an environment.
Is there a linter that tells people to use a dict or set if someone uses the "in" keyword on a list or tuple?
Your question is not on topic for this channel. See #tools-and-devops
Maybe this is not about pedagogy, but I'm a freshman in software engineering, and wow, there are people who, after 3 months, still haven't learned how to use for loops or while loops in simple algorithms. Despite that, I stand out in my class. I might not be as good as you, but I'm very interested in programming, and I dedicate a lot of time to it.
That's why my classmates ask me for help. They even come to my house so I can teach them, and we end up practicing (simple) algorithms for 5-6 hours. However, they still struggle to grasp the concepts. I asked them if this is really the career they want, and most of them said no. But they do wish they could start liking it, so I continue trying to help them. Unfortunately, they view programming as the most challenging thing ever.
This situation made me realize that being a teacher or educator can be tough when people find simple concepts difficult to understand.
everyone I know who dropped out of CS did so because they found the theoretical courses challenging and less satisfying, not the introductory programming courses. or even the advanced ones. I wonder what the problem is here.
What is this channel for? Been having difficulty finding descriptions or making sense of what it’s for.
look at the first message in the pins, and also the channel description.
Ah I see. Ty!
Yeah that seems to be very accurate at my university as well.
In chemistry we see a lot of students struggle with equilibrium constant in the first year, and then with thermodynamics later on. Both of these are topics that have no clear real world analogies. The equilibrium constants exist on a log scale and cannot be understood in terms of linear phenomena. Similarly, thermodynamics relates to disorder.
I wonder if the theoretical courses in CS face a similar problem.
@worn crest you think this is a question the average human programmer will answer worse than ChatGPT?
Sorry which question do you mean?
This question:
Architecture is also knowing when you would use a class or a function, for example
Class or function and where and why
I think that, in order to have a proper answer, you need to give proper context (which type of variables it will contain, how it will be used in the future...) and this context is something that only people with more experience are able to give. As long as you do not give this context, AI based answers will not give you the best answer
Therefore, level of the answer of the AI will largely depend on the developer ability to analyze the overall context in order to give a better description that would allow the AI to decide
language models can emulate having experience if content written by people who do are in its training data
I am not talking about emulating experience. I am saying that a good answer from an AI depends on how good your prompt is. As a consequence, a beginner would never get a good answer as he is not aware of how to give a good prompt imo
(He was talking about using AI to learn programming in other channel, so I am also talking about how using these tools might not be the best idea sometimes)
I would not use ChatGPT to learn something you know nothing about, which you plan to learn about in depth.
Do you think an average human answers that better than a computer?
I think this question is underspecified.
Do you think that if you specify the question adequately the average human programmer will answer it worse than a top of the line LLM?
"Average human answer". Are we talking about templated programming questions? Philosophy? Medicine?
function or class, as you said
If you give 100% accurate context about how you intend to test it, design it, use it and debug it... The response might be really accurate (in the future, not now). But do you think a person who is able to give such accurate context will need to ask an AI whether he should be using a class or a function?
You asked the question originally..
You can specify how to ask it.
If the person is a senior programmer, the answer will be better than the average, because he will know which inputs will give the best answer.
If the person asking is a beginner, the answer will be far away from the average programmer
There are statistically fewer senior programmers than beginners, I think
Yes. What's the point of this?
On average people will be more beginners than experts so, on average, ChatGPT will compare favourably against a randomly sampled programming human
ChatGPT is, on average, already better than the average human and in being so, can pedagogically help a human learn
Which is on topic here
Good pedagogy advice? Use ChatGPT, in my view.
This is like saying that a hammer is better than the person who uses it. It just depends who uses it. The tool itself is not "better" or "worse" than programmers. It depends on the person who uses it
Yes, a dictionary can provide more definitions than an average human. My pocket calculator can calculate more complex equations than I can in my head. Not sure what the point is either.
ChatGPT can explain its reasoning.
Have you tried it? Give me a question for which GPT's answer is no good Vs an average human.
As the great George Carlin said: 'Think of how stupid the average person is, and realize half of them are stupider than that.'
Right.. so... what can an average human explain better in programming than ChatGPT?
I am willing to make a test and ask the question to ChatGPT
Reasoning is highly biased
You are only thinling about the kind of "problems" that are 2+2
Any other topic that is subjective, AI will just give same reasoning as the dataset that was used to train the network
Yah, and this is a classic fallacy anyway... fallacy of the average?
I was talking about programming problems suitable for a beginner in programming?
We don't teach grade school students math by giving them a calculator. We don't teach spelling by giving them a dictionary. etc.
Agree. But a dictionary can't explain its thinking and a calculator can't. ChatGPT can.
ChatGPT is, effectively, a thinking <thing> with a certain degree of intelligence, with this level of intelligence rapidly growing with time. Tomorrow, it will be better than today. A great assistant in human learning.
Most of the beginner problems can be solved by an AI
Yah, it's none of that. But, I'm not going to debate it now. (I find it a fine tool, and I use it, but I don't think it's useful in beginner education nor is it "thinking" in any sense of the word nor can it explain its thinking)
I do not agree. Better learning implies having better answers from GPT. Better answers imply giving better context to the machine. Better context can only be given by having experience
And also, now I have the criteria to discern what's a shitty answer and what's not because I am experienced. A person who is learning will just take all the shit with no filter
Give an example of a shitty answer to a beginner's question?
How can you say that ChatGPT is "rapidly improving" when it only uses data up to September 2021?
Compute
Compute?
Yes, which is why GPT performance has been declining, ceteris paribus of training set, etc. Reduced performance per predicted token
I have never used it as a beginner, so I cannot tell you an example. I remember that for other non programming stuff, it was just making up sources
I think you need an example to say "it would produce << shit >> to this question". Shit is your word. You need the example question and the recorded answer.
I think it is great advice to tell a human: start but learning alongside an AI. Ask it to explain every step, over and over again. Work through simple problems. The AI will perform for so long.. that the human will have developed some independence through all the learning available by interacting alone.
I'd even say that an AI tutor could work, on a mobile phone, as a teacher, without ever writing a line of code in an editor. Only as a question/answer loop of assisted learning.
I agree. I can tell you that for some other intermediate or advanced questions, the output was horrible. Either the code is not compiling, or just not being true. I always had to check any single answer, so I stopped using it. I only use it to generate examples (giving proper context) which saves me time
A ChatGPT will never understand the needs of any specific kids. Its current motivation, feelings, perdonal context...
Probably will be able to soon
I think teaching is inherently something somehow human
We thought that learning was too. Turns out that's not the case.
"We", who? Do you think a chat will retain all the high activity that a kid shows? Do you think that the kid will be sitting in a chair, in front of a screen, and reading everything that the chat says?
Who "absorbs" all the energy that the kid has?
And who proved learning was something not human? I have never read anything like that
In the end, a book has all the answers. Same as ChatGPT. Why is the figure of a teacher still needed then?
The big missing piece here is that ChatGPT is not correct 100% of the time. It's very confident in sounding like it is correct though. I've had it make up method names and give me absolutely terrible examples when asking for certain things (and that's from someone who already knows programming). The damage lies in a beginner blindly accepting what it is told, and beginners are less likely to run tests to verify that that what it was told is correct.
I had ChatGPT show me this when asking to explain trig to me
yeah i might stop using gpt and ask people, i though using chatgpt was good since it gave me quick and simple responses for my problems i realize they keep saying "apologies" and apologizing for mistakes IT made, i might be more active in the help forums though lol
If you are looking for reasons not to use a technology you will find them - ChatGPT is not perfect especially in certain applications. For example, if you try get it to do example rudimentary encryption it will fail miserably quite often - whilst indeed saying it did it perfectly. However, as a tool it can be exceptionally useful in certain circumstances. Need to work with an API, link it the documentation and ask how you query it. Want to understand if there is a better way to approach something, ask, it could give you some really good ideas. Want it to do miracle work with no context - yeah you are stretching it. ChatGPT is a great tool when you 'work with it' giving it good context, the exact same way one would expect you to on Stackoverflow. Students are going to increasingly use this tool, it is a practical and affordable alternative to tutoring, and the technology is only going to get better. I would strongly suggest exploring where it might be able to help on your teaching sides. At the very least - I'd also suggest guiding your students on how to use ChatGPT and how to recognise when it has given brilliant sounding rubbish versus helpful content. These are the same skills one uses when they figure out if a Stackoverflow answer is helpful or irrelevant/bad. This is my thoughts, I hope they help - coming from someone that has found exceptional benefit in using the tool to assist my work in teaching others.
As a general reminder, this channel is is about methods and practices for teaching, so be sure that any discussion about ChatGPT is about its utility for teaching. Not its utility in general.
sorry, what are you talking about?
Let's put this discussion about ChatGPT as a tutor away.
Hello, regarding pedagogy and especially python programming.
I am against chatgpt use by students.
There are the reasons:
- first you can somehow define the result of chatgpt with the first result of a google search (which is not necessary the answer you want). Most of the people using chatgpt don't understand that so there are misled.
- searching is a key skill when you want to develop. Chatgpt wrap the part where you need to compare result so it goes against this skill development
- a good developer should know how to read a doc...😂
- it is quiet difficult to understand language concepts such as object concept. As we use multiple programming paradigms on python (even if all is object 😄 ), chatgpt can answer with a mix of concept and it can be very difficult to undestand things for someone with no coding experience
chatgpt is a good tool as a memo for simple things but you need first to be able criticize it's results
is writing-an-interpreter-in-go pedagogy?
Pedagogy is about methods and practices for teaching. So no.
It’s weird I’ve been “trying” to learn to code for close to 20 years, but this year having actual problems to solve that can only be solved with coding massively caused me to skill up. (In python) I wonder if a teaching method could be created to plumb people’s personal interests and find coding projects that would motivate them?
(The thing holding me back has largely been a lack of free time.. but it’s been incredibly enjoyable..)
yeah, that's pretty much the main thing we usually recommend for people to do after they learn the basics
since we don't know much about each and every person that shows up, we typically just recommend generic projects like !projects or build your own ..., but working on projects you are interested (motivated) in is definitely one of the best ways to gain experience
!projects for reference
The Kindling projects page on Ned Batchelder's website contains a list of projects and ideas programmers can tackle to build their skills and knowledge.
One thing.. maybe to add “learn to interact with every website you use with python. If it has an API use the API if not use bs4)”
nah I wouldn't recommend bs4 unless you want to get banned from that website
what about when the api returns html?
some apis may return XML, in which case you can use standard lib xml or lxml, but literally no API ever returns html
if it somehow does, run away from that website and don't turn back
uhhh hi im new here 🙂
Welcome! This channel is for talking about pedagogy. General chatter goes in #python-discussion or an off-topic channel.
unfortunately i've encountered into walmart, wayfair and other known companies returning html on bussines APIs 
are we talking about pedagogy still?
Pypi has entered the chat
Strong claims require strong proof. You state what supports your claim, you do not put somebody else down in terms of their understanding because you think differently. What is your verifiable claim that makes your view (and what exactly is your view) such that in comparison mine appears to deserve "you have no idea what you are talking about". Without substance, your claim is... just aggressive, even if stated with the disclaimer "but... you should not take offence".
It is clear, just as it is clear that you should not tell people "you have no idea what you are talking about" without substance behind your strong comment. It's a public offence and it can't be left unchallenged. I did so now and you had nothing else to say, as I expected, so it's ok now.
i agree, chatGPT is definitely not """better than the average brain""" and studenta doesn't seem to know what they're talking about
The discussion about using ChatGPT as a tutor is permanently over. Please do not continue that thread.
chatgpt_discussion_thread.terminate()
@wintry forum @twilit hill this channel is for talking about methods and practices for teaching, so be sure that all your messages here are about that. there are off-topic channels for general chatting.
yes sir, which Python projects in your view encompass a wide range of tasks that when done perfectly you can feel proud of your mastery of the subject.
that would be a topic for #internals-and-peps
In which skills are humans better than GPT on average? I think this is less than the skills in which GPT is better than humans. Stop pounding on me and provide substance to your otherwise incomprehensible claim?
The discussion about using ChatGPT as a tutor is permanently over. Please do not continue that thread.
!mute 1135518393492066324 "1 day" Everyone was asked to stop the discussion about ChatGPT as a tutor. Please do not continue discussions that a moderator has asked everyone to stop.
:incoming_envelope: :ok_hand: applied timeout to @weak mortar until <t:1692111787:f> (1 day).
Could we have a python microbit pedagogy channel ? Would like to share some of my computer-science lessons.
Suggestions go in #community-meta, but none of our channels are for posting ones own content, as that falls under advertising.
Ha ok. It was not about ads but more about sharing but I can understand
"The guardian of pedagogy channel"
hi
i need help
I'm sorry to ask, could anyone provide a more robust encryption program, please?
(Because my current program uses a brute-force method.)
your question is off-topic for this channel; try #cybersecurity
Oh, I'm sorry, thank you for your reminder.
Hello guys! Can i have a help?
This channel is for discussing python teaching methods. If you need help, check out #❓|how-to-get-help
thank you
From the perspective of advanced programmers, beginners can sometimes seem overly fixated on optimization, and often not then kinds of optimizations that advanced programmers care about.
Does anyone have thoughts on how beginners can be taught what sorts of optimizations are actually important?
The way I have gone about it in the past is by giving them the tools to figure out if an optimization makes sense. (or at least tried to)
I think it is important for a beginner to learn about Amdahl's Law and the implications behind it. But then also show examples of critical thought about if optimization actually makes sense. Doing that though, is much harder.
I have put people into a trap where they think they are optimizing something but it actually isn't and then show them an example of actual optimization.
I don't really consider optimization a beginner topic at all, and this seems more like non-pessimization, but gone wrong. For non-pessimization, there are some rules of thumb, but it won't really make sense until some explanation of both computational complexity and hardware is given. Which is also an intermediate-advanced topic. But I suppose the general thing is to just time it and tell them that in some modules you care about seconds, some milliseconds, some microseconds, some even nanoseconds. And that they should only automatically apply non-pessimization rules that don't negatively affect the code's complexity and readability. The optimizations that are most important are dependent on the requirements. On personal projects this is entirely different. But I would say that really good optimizations feel like they removed some barrier. They let you do things you could not previously do, not just like 5% faster, it feels more binary than that.
TLDR: Optimizations that let you do something you could not do before (in a reasonable amount of time).
Example: Octrees (or other space-partitioning trees) in physics engines in video games. Without them you can only have a few hundred objects at best. With them you can have millions. Importantly, this changes the types of games that can be made (e.g. something like Fall Guys which has many physics objects / players).
Other example: Fast GPU matrix multiplication (and other kernels). Without it you can only have small neural networks. With it you can have large networks. Larger networks can do new tasks that could not be done before.
I’d posit that the scope of a novice is on a single module, thus their focus will be on optimization of that scope. As their scope broadens, as would the their optimizations. Therefore, I’m not sure there’s much that may be done here, other than to help them progress to the next stage. That said: perhaps more introduction to basic performance measurements early in their work, more projects that involve measuring and comparing… and with different characteristics for small and large n.
I believe a lot of beginner optimization comes from optimizing their code rather than performance. It seems to come from a place of "There has to be a better way to do this because I'm repeating myself" or "This code seemed overly verbose for what I imagined to be a simple task"
That’s a great point. That rings true too.
@grand ice see #❓|how-to-get-help
“Premature optimization is the root of all evil.” — variously attributed to Donald Knuth or Tony Hoare
i consider to be 3 kinds of optimizations -
• readability optimization
• run-time optimization
• scaling optimization
* built-in opt'
With the simple rule of being "lazy"; unless its needed, dont optimize.
only when the need arises, like extremely slow runtime or code is hard to understand - would it require optimizing these aspects of it.
otherwise, a code that runs in 2ms versus 27μs wouldn't have much impact on the user (not a noticable differance).
keeping the code neat, and understandable to the dev, thats all.
* the 'build-in' optimization relates to "reinventing the wheel" - if there's already a function thats been made to do that specific action - use that instead; and maybe wrap around it for user's special cases.
tldr; we ain't talking about some major projects or servers that'd be released to the public; with scalability and resources in mind.
anythings fine as long as it works within normal margin; and can be understood by peirs/friends.
no need for standard code formats, docs, tests, time complexity and whatever.
keeping true to some commonly accepted conventions, and keep it understandable.
if possible, split it to functions to prevent cluttering and nesting hell.
thats it.
somewhat open-ended question - i've been reading martin fitz patrick's book on PyQt5 development and i'm starting to realize "just the one book" isn't going to be enough to get from "i can tinker a couple things" to "i should be able to, with time and effort, code any app i'm capable of imagining".
for now, the two kinds of applications i'm thinking of creating are:
- video games (2d, the "simple" visual novel / dungeon crawling kind)
- creativity software (focused on text/image, perhaps a paper doll app for instance)
both of these deal with images, so the bigger question on my mind right now is graphics. it looks like PyQt is meant to handle "the wrapping around the content", but i'm having a hard time evaluating whether it can - on its own - handle graphics. could i theoretically compose a game screen in PyQt, or should i include something else such as OpenGL for that kind of thing?
(also, is there any book recommendation around going in that direction? dynamic graphics in python, i mean)
Welcome to the python discord, this is the pedagogy channel, used by educators to ask questions of the kind
I am teaching numpy to students with math backgrounds but limited programming knowledge, does anyone have any books to recommend?
I think you will get better help if you repeat your question in the #game-development or #user-interfaces channels 🙂
I think you can just build coursework for numpy using scipy + mathematical methods for scientists book
because what it sounds like is a computational physics course, in a sense
CS61A MT1 in two weeks, besties 
sorry, what is this about?
It's about not pinging me unless you have CS61A hype in your heart, bestie @livid acorn
@queen tendon this channel is for talking about methods and practices for teaching. If you aren't talking about that, or you don't want to engage with other people about things that you say, please use a different channel.
I don't know what CS61A is.
!cban 1141977077390774282
:incoming_envelope: :ok_hand: applied ban to @valid echo permanently.
Any thoughts on pinning posts that have are solid in this channel? Is that doable? I'd like to explore teaching programming
Or maybe archiving things somehow
hi
this channel does have some pins
sidebar, I see it
Hello 🙂 tutoring question. A fresh grad just joined our team at work, needed to modify somd code and asked in what way he should do it.
I could argue for the pros and cons of different refactoring or different split into functions. So I did that out loud to explain my thinking and ended up saying something like "I would probably go for style X here".
But, was that a good way to support him? Hmm!
He also boldly jumped into vim on his first day working! 😎
Absolutely it's beneficial to explain your thinking. It helps them make their own decisions down the road instead of blindly following and not really being sure how to arrive at a solution
I think it provides a good structure, and in the meantime, they're filling in some knowledge gaps about your decisions with the interactivity of the exercise
Thanks for your thoughts 🙂
!code
I am kinda stuck on how to properly teach/explain to the non tech people about how projects can take longer than originally expected. As in, if someone says it will take a week to be done, don't start building a timeline that relies so hard on that project being done on time. Things happen and they are not predictable. And while this isn't unique to code, it happens a lot.
I have explained proper time expectations to tech people and how to properly scope out an expectation that leaves plenty of time for explosions. But I struggle to get it through to the people waiting on those projects that stuff happens.
The context here is because contracted work is taking longer than expected and someone on my side decided to build up a lot of timelines on the original delivery despite my many warnings that was a bad idea.
this question would go in #career-advice
idk. This is a question of lack of being able to teach the concept. This is a "how do you teach people how to handle time expectations from others". While it is related to a specific real current problem; that was more to give context of the issue. But this is something that comes up semi frequently and is important to teach both devs and other corp workers
You're asking how to set expectations between different teams in a workspace, and that more closely falls under #career-advice. This channel is for the discussion of how to teach the sorts of things that people come to this server to learn.
i find videos like these more teaching than someone boring ass dude reading off his script on youtube
I find videos like those loud and annoying.
Thats not even teaching theres another one that is just completely stupid and doesnt actually do anything
For laughs
Not the one I thought it was
just like single american women
Please don't shitpost in our server--especially in discussion channels.
direct any questions to @viscid mural
so in which channel do i shitpost
none--you'll have to find a shitposting server.
damn
im surprised how you quickly you responded in this channel
like lucky luke, faster than your shadow
Yes... This channel is for the discussion of methods and practices for teaching programming and CS. If you don't have anything to say about that, please use a different channel.
Can someone look at a learning resources GitHub Wiki I have been putting together? https://github.com/mikestack15/orangutan-stem/wiki/Learning-Resources
I am trying to provide a learning outline for interested data professionals that want to learn more about python, computer science, and other tools used in the field. There are some end-to-end walkthrough activities with supporting youtube videos as well if you're interested in following along! Any feedback/recommendations are appreciated
Yes.. i was the last one
im saying i had 1 look at it, all the topics etc and immediately starred it
sry..misunderstanding
@verbal solar @woven wagon this channel isn't for shitposting. please make sure all your messages in this channel are about methods and practices for teaching CS concepts.
Topic: What is the right level of granularity for a university degree? Having gotten a computer science degree with the intent of going into AI, and now having two years working in AI to retrospect, I think I would have been better served if some of my courses had been condensed to give more time for ML-specific concepts. Do those who work in cybersecurity feel similarly?
@tame dagger you mentioned this program, "BSc in Interactive Media & Game Development", as an example as an overly granular program. though if someone knows for sure that becoming a game developer is the only career outcome that would make their degree worth it for them, I think they should be able to get a degree (or other professional training) that is specifically for that.
The opinion that quite a few Unis hold here in Czechia is that a bachelors degree should be general - just the basics of the field. Any specialising onto a specific part of the field should happen at the masters level, once the student has the foundation to make an informed decision on what they actually enjoy
But the overall culture respects bachelor degrees much less than US (at least from what I have noted), so that could play into it
are bachelors degrees there state-funded?
My comment about overspecialization is: it seems predatory on high school students - appealing to problems that appear "cool" when they don't know enough to make an informed decision. They have a hard time even picking CS vs other majors.
I see what you mean
Yes, as are masters
Current topic ^ (feel free to start a different topic that is about pedagogy)
i really wanna know how can i use chatgpt to learn how to code faster without detreminting the skills of coding. Like imagine if i am a living in a period without AI , i would have developed certain skills that makes independent. I am worried that relying on ( AI ) would make me lose those skills. I might be wrong but i really want any advice
my advice is mainly not to use GPT for coding
maybe Copilot, but definitely not ChatGPT, specially not the free version
you can use it for researching things, as long as you double check everything it outputs, but I wouldn't recommend it for actually writing code
for example right now i have a project to do using django
but i just dont know how to start. like 0 idea
if i just ask it to outline to me the proccess, am i losing any skills other devs have?
yes, reading the documentation
how to do good research about the topic would be the first skill you'll lose imo
ChatGPT is so incredibly bad at what it does that using it won't lead to any shortcuts. You'll still have to do all the same work anyways
do i really need to know how to read documentations when we got chatgpt like just tells u what to do?
i mean isnt that more effecient and all devs are gonna do this
unless youre doing the most straightforward thing , chatgpt is useless
chatgpt is not a trustable source
documentation is a trustable source
chatgpt can be wrong , vague , non efficient
most documentations have an example section where you can start from
well bingai
AI tools in general cant be trusted (At todays stage)
provides accurate answers based on search webs
if GPT was able to read and summarise all projects documentations in real time, sure
that is not the case though - in theory you could feed the entire documentation as part of the prompt, but right now it relies on what it learned from the training data, which will be outdated and not work for smaller projects, and even then it is not reliable enough to use without double checking the output in that very same documentation
Not to mention that you'll probably have to write documentation yourself someday
do you agree there might be some reason why most good devs (including people who manage communities of thousands of programmers ) know something about these tools more than us ???
do you think they despise these tools for no reason ??
and before "just ask gpt to write the docs?", no. Writing the documentation requires more knowledge than just what the code does - you need to know which problems the project is trying to solve, how it is trying to solve them, under which conditions it'll work (and most importantly, under which it'll not work), what are the drawbacks of the approach, what are some alternatives etc
One way or the other, this discussion was not on topic for this channel to begin with (would fit only in off-topic)
so will it stunt my growth if i ask it to outline the code structure of my project?
How much experience do you have?
0
Then yes, it'll stunt your growth (is my opinion, of course)
i am taking a course right now
ok can you tell me how can i learn how to like organize my code? I need to create a project ( i can send the specifications if you wish ) and i do not know how to start
You're basically asking: "Should I give a 1st grader a half-broken calculator when they're trying to learn addition?"
I'd suggest opening a help thread ( #❓|how-to-get-help ): explain your project/assignment, what tools you're using (what editor/etc), and what you're stuck on.
The answer is going to be specific to whatever you're trying to do and whatever tool you're using.
ok thanks
@tame dagger last question , using it rather than stackoverflow to solve problems
would that detriment any skills
This is just my opinion but: You're just starting off. Do you want to really understand and know the subject? If so, then don't use SO or GPT. Use references/documentation such as what you find on https://www.python.org/doc/, or from a tutorial like: https://python.swaroopch.com/. It's OK to be stuck on a problem and have to think / research your way through it, or come ask #python-discussion for a hint.
i mean i do appreciate any coder with experience advice
but i am just afraid ill be left behind when there are ways to progress in coding faster. For example, i do not know how to do this requirement in my project. I am tempted to ask chatgpt ho
It's not a race. Speed isn't the goal: understanding is. If you want help with that, open a help thread, someone will surely give you the hints you need to get started!
(also, gpt is terribly flawed and gives wrong answers... but even if it only gave right answers, I'd still say this)
ChatGPT literally makes everything slower. It's a terrible system.
Which gui do you recommend for getting started in python?
tkinter
It is the standard GUI library
I dont think this question provides enough information really, and isn't being asked in the right spot either. (Edit, sorry didn't notice the channel I tabbed back into the server in and just went with answering the question)
This isn't about pedagogy.
isn't UX fundamentally a pedagogical discipline, actually? *runs
its hilarious how this channel just never has any ontopic convo like ever
There was one yesterday. Please don't make snide remarks.
hi guys i am finding a person who will study with me machine learning,my timezone is vienna gmt+2,pls dm m
Topic: Bootcamps. We usually talk about them from the perspective of whether or not they're a viable alternative to a university education, or for preparing one for a career change. Setting those aside, how do they approach teaching, if any general statements can be made about them?
how do they approach teaching
imo they almost always prioritise practical skills and real-world applications, aiming to make students job-ready in the least amount of time possible..
This means they oftentimes skim over the theoretical side of things or even straight up omit them. Eventually this means the student will need to discover and fill in the gaps themselves afterwards.
While on this topic, I recently encountered a candidate who went to a bootcamp where they did peer learning, i.e. no lecturer, no teacher, no syllabus, no thing, just student teaching each other as they start their programming journey. I originally thought this would be a disaster, but he was on par with the average candidate tbh..
what systems were in place to get students to interact with each other?
i have no idea - i didn't prod much into his time there, and i can't for the life of me remember the name of the bootcamp now..
all i remember is it's in some French city, and my google-fu is not good enough :\ nothing i tried showed anything that rings a bell
I would guess bootcamps operate is highly dependent on who is giving them
On that tpoic: I am quite curious as to who is actually teaching at bootcamps.
University professors used to have virtually no pedagogy background, this is now changing and pedagogy is becoming a standard part of PhD and postdoctor programs (at least in northern Europe)
It would be interesting to know what qualifications (formal or informal) the teachers at bootcamps have (although I expect there to be huge variance between different bootcamps!)
"Proactive learning" vs "reactive learning" to describe two differing learning styles, one in which you learn first and then apply during executing, vs learning as you attempt to execute, does not seem to be a popular concept, yet I find it to be a useful distinction
:incoming_envelope: :ok_hand: applied timeout to @ripe ether until <t:1695465586:f> (10 minutes) (reason: duplicates spam - sent 4 duplicate messages).
The <@&831776746206265384> have been alerted for review.
I recall some papers arguing against the whole “learning style” stuff. For example: https://www.apa.org/news/press/releases/2019/05/learning-styles-myth.
I mean this isn't like kinesthetic vs global here, I mean its way less boring to learn by necessity than proactively
Oh, more about motivation/interest. Yah, I’m the same. It’s hard to learn without purpose
yea it is based off 2021 data
chatgpt is fine everyone else is salty they had to learn the hard way. just not as good for obscure libraries
I just wrote a draft about this: https://nedbatchelder.com/blog/202309/the_myth_of_the_myth_of_learning_styles.html
In “Advice to beginners” I said, “Learn how you learn,” and many people stepped up to tell me that learning styles are a myth. I know the research about learning styles, but people are over-applying it to dictate how people should learn.
You should write a draft about reactive learning being amazing compared to proactive
i could add that as one of the bullets.
reload it, i added the bullet.
Hell yeah
Thank you for sharing. What comes to mind here is maybe motivation styles vs learning styles. People are motivated very differently. Reminds me of a quote from the founder of Montessori, which now I can’t find a citation for but as I recall it’s something like; we complain when kids aren’t paying attention: but it’s not that they’re not paying attention: they’re just paying attention to something they’re interested in.
I like that.
they're always attending to something
Hey lads, sorry if this is a question that is repeated a lot. But I am wondering, as I am on the beginning of my Python learning journey, if I should put additional effort into knowing the basic very well. Aka, knowing right away how to do the tasks that the Crash Course gives me, or if it's better to just move on for now, even though I only understand the basics that the the book is teaching me but I couldn't replicate it without googling or looking things up?
Yes it is
btw im also a beginner, what are good projects to practise with (so u know my level i made a kg to pounds converter)
This channel is more about approaching education as the one doing the teaching, but if you feel like you can't complete the earlier tasks, it might be that the basics will click as you proceed through the material.
Sorry, not sure if that also applies to my question, wasn't sure if this question belongs here 😅
6 down
Sure, although i feel like I kind of got my answer from the combination of yours and Stelecrus's
Sooo, thanks guys!
What you think of this book guys
https://inventwithpython.com/cracking/
for absolute beginners, who want something joyful and cool while learning Python and Programming?
My opinion is that most new programmers need to go over the material two or three times for it to sink in. It won’t all ‘click’ until you’ve had some repetition. So, if it’s not sinking in, do your best, and then try a different tutorial for the second pass. Just my opinion. (Wups, yah? This is OT)
Maybe ask in #python-discussion : you’ll find people who are learning their first language there, and people who have experience with different books.
Topic: Pedagogical simplification. Teachers commonly need to teach simplified versions of concepts to avoid overwhelming the student with the full complexity of the concept. For example, when teaching for loops, one might say that loops are for repeating a block of code for each item in a container. And while this is true, the reality is that they're for iterating over any iterable (which is a circular definition), and iterables could be a lot of things with dissimilar properties (like lists vs generators).
What's particularly of interest for me is how things can be simplified without setting up the student for future confusion when they learn the true extent of the topic. As much as is possible (and it might be that it's always possible), the student shouldn't be taught a simplified version of a concept that contradicts the full version.
Can anyone think of concepts where this is particularly difficult, and how you overcome it?
You hit one of my triggers: typical introductions to loops -immediately- dive into nested loops, the opposite of simplification. (Im stewing on the question, just the first thought that came to mind)
start with something concrete and stay close to the motivating examples
i also think it's really important to at least mention to students that "there are various kinds of loops, but we are going to start with the simplest case and build up from there"
that way they aren't blindsided by new ideas. one of the things that always drove me crazy was when i had no context for what i was learning
fwiw i don't think loops are a particularly good example, i think most people i've helped here and elsewhere usually grasp them quickly enough
sometimes simplification is also a matter of presentation rather than simplifying the actual content
it's not loops that I think are difficult to simplify--it's iterables.
ok, sure. so i'd say that you absolutely must start with 1) something the student already understands intuitively (looping for a single list), and 2) a motivating example for why you might want to generalize
it's very likely that students will already have encountered range() early on, and glossed over what it is. so now you can revisit range() and say "here's this funny range thing, it's not a list, so what is it?" and from there you can go into an explanation of how python actually works by calling next() on an "iterable" over and over
sticking to known concepts and examples i think is really valuable, gradually and carefully generalizing one piece at a time
this is something that repeatedly kicked my butt in linear algebra. we went right for the moon in some of these topics, going straight for the axiomatic definition of the vector dual space without any buildup for why you might care about this dual space thing
One I think happens a lot is with decorators - for some reason tutorials on those seem to immediately go to the standard way you implement them, with closures and nested functions. So you end up trying to simultaneously explain first-class functions, nesting, closures, possibly star-args.
that too. i know i am guilty of this as well, especially when winging off a quick example. but as with most things, it can be harder to simplify than to complicate, because in order to simplify some things to it purest essence, you must understand it deeply, and contemplate it for a long time, going through multiple rounds of revisions
it's also the downside of trying to staying focused on practical problems, sometimes there is some distance between the pure essence of an idea and its practical applications
i actually wonder if callable classes would be easier to teach than nested functions, in the case of decorators
I do think callable classes would be better to teach yeah. Definitely do each of the steps individually, not all at once.
I think this comes into the difference between people who learn a C-like language first or python first.
For someone who already understands the underlying concept of a loop, specifically a for loop with explicit bounds or conditions (for (i=0; i<10; i++) and while ...), building on this to show them that the python interpreter can iterate over iterables because iterables provide the information the interpreter needs to wrap this behavior is easy.
It's also hard to teach this to someone learning python first without either starting with a non-idiomatic example of loops, oversimplifying because python has hidden the underlying detail from them, or showing what is happening behind the curtains slightly by leaving python code for a moment to describe how iterables actually work under the hood.
I actually think python hides so much foundational knowledge that's still of importance that it can sometimes make for a poor choice of first language despite being so (relatively) easy for someone to start with because they can get what they need to done but not have learned enough from doing so to always build on that, but that's a bit more strongly opinionated, and I think there are ways that those teaching can still avoid those issues.
context for eivl
There have been many cases where I have blatantly listened to a person, or read a number, but relayed the number incorrectly, most often mixing it up with a different number I heard before, or switching specific numbers.
For example, recently I was looking at a timetable for rooms, and I read a room number "12", but it was actually "11" when I checked it again.
In order to ensure I remember a piece of information, I have to constantly repeat it to myself to juggle it in my speech center.
If I don't, it usually falls into obscurity.
This is usually a problem when you have to remember a one-time password, or follow instructions given by somebody else.
I distinctly remember a time when another student asked me to check a room number, let's say "28". And I checked room "18", returned, and then awkwardly admitted I didn't remember.
As far as I'm aware, I'm also unable to visualize images on command, or do the same with sounds.
I asked my family some questions about this, and found that my Mother gave similar answers.
I think this would also be a plausible explanation as to why I struggle to recall what people say to me, and sometimes struggle to recognize people, or draw objects.
yeah i totally belive you
Get this! I have another example!
sure, my wife has the same issue
I wrote "context for eivl" at the top of this.
for sure, sounds very plausible
In order to write your name, I had to find it, constantly mouth it, and type it.
Otherwise I couldn't.
are you able to read a word up side down?
Well, maybe? I don't consider that a quality of life skill.
Okay, just tried, I don't think I can.
i cannot at all
some can
the brain works differntly for people
my wife can read up side down
she also are not able to see the differences between a p and b
because to her mind, the letter is the same letter, so it confuses her
I'm willing to accept that I have my own skills, I just have no idea what those skills are, or if I can put them to use in the modern world.
a mind that can rotate any object in 3D, in their head have something called dyslecsia
?
Oh, I see what you mean there.
their mind just are differnt
people with adhd has problems with focus
and not problem in a negative way
i mean, unable to at will direct focus
or turn focus off
here is an example from real life
It's a problem, because the world is not typically designed to work with people with these specific traits.
im driving on the road, my wife sits beside me and said, there (on the field) is a group of deers
is this conversation continuing from another channel? can you say what the topic is as it pertains to teaching?
i have no idea to even notice that when im driving 60 miles an hour
yes
focus control and encoding information about learning
Today I went to a lecture about team exercises, and failed to confidently remember the names of the two people I met.
so what im saying is that you have to adjust how you do something to fit your own mind and not listen to advice from people that dont know there are other ways of learning
I mean, I guess that's a given.
im writing some discord commands that will edit my text and show you some C_OL on the screen
alright,, i see that i can change the word i write without much effort, just need to write the commands in anotepad
we are going to do a word reading game
Alright?
WORD
i will show a word on discord, like this above, and after 1-2 seconds i will change it to a new word. you just read them, try your best to remember them, but do not write them down
i will show something like 30 words, and your task is to try to rememeber as many as possible, 1-3 words is perfectly fine
but do not write them down, i will let you know before i begin and when im done
if that makes sense
Okay, sure. Should I give myself a period where I stop focusing on the word, to verify that I'm actually committing it to memory?
no, it will go by fast
Okay.
as fast as i can change the word on discord, doing it manually might take a few moments, but i think not longer then two seconds
ill just write up the list of words and let you know before i start to write them for you.
Please move this conversation to off-topic.
sure
What other cases can you think of for Python being a bad language for education? I think a first language should probably have static typing.
I think python is "Fine" for education with the caveat that either the person learning already has certain foundational knowledge, is the type of person self motivated to go learn why things are a certain way when it may not click from only what they are presented, or if the person teaching it takes extra care to ensure certain topics are still touched on.
I think those topics would vary somewhat based on the goals, as well as what depth they should be touched upon at different levels of learning, so it's hard to have a general reccomendation here.
To your point on static typing:
Do most developers need static types? probably at some point in their career, even if it's just enough to write a small bit of cython to speed python up.
What about library developers making sure their stuff plays nicely with type-checkers? Yeah, they need to know a bit.
Do most developers need a strong enough understanding of type theory to know why monadic designs suffer in error handling or how to design a type system for algebraic effects? No, even very skilled Haskell developers manage without algabraic effects.
I guess it matters what types of students we're talking about. Either we're talking about a hobbyist, with possibly no need for such things ... or CS majors, who will be introduced to multiple languages in their CS curriculum (most commonly starting with Python, followed at some point by C/C++), or self-taught professionals.
I don't think static typing is necessary for the purpose of learning type theory, but because it helps to make type errors more local
I don't think ones first language should have static typing to prepare them for use of a statically typed language in industry, or because there's some inherent virtue in knowing advanced type theory. I think that being mindful of what the types are of everything in ones code (or what properties everything can be expected to have, in duck typing) is critical for understanding what your code is doing, and that Python beginners struggle especially because they can't articulate what names in their code refer to beyond some general (typeless) description of what it's intended to represent.
I think C is simultaneously the best and worst language for someone to start with, but it's a really hard case to make. If I look at what I've had to re-teach habits wise on people that have been onboarded at my work that started with python primarily:
- they had weak understandings or partial misconceptions about types
- they often had poor design patterns when it came to anything concurrent
- they often reached for subclassing when function reuse was more appropriate
I didn't notice the same from new hires that had experience with any amount of functional programming or with Kotlin
In terms of Python being a bad language for education: the two areas that strike me as possibly harmful is the lack of primitives & arrays (which help a student form an intuition around the underlying system), and the lack of free threading / GIL: which interferes with certain parallelism topics. (I'm not saying it's bad, just expanding on the prompt)
The amount of abstraction and "just use this library" hampers understanding of vectorization, hardware primitives (even just knowing they are there, even if you don't need to be the one calling them directly), designing data to iterate efficiently, etc
all things you don't always or usually need in python, but that you dont even get a basis for from it
Yah, the amount of "Oh, here's a loop... but don't use it if you want your code to be fast" is probably very disconcerting to a new programmer.
are we talking about data science beginners? because I think that DS-python is like its own language
No, but the amount of "data science" code I've had to rewrite for speed is also disconcerting.
(in this discussion, I'm imagining a freshman CS major trying to gain an intuition around programming rather than a hobbyist or self-taught)
I think it applies to self-taught, as well as people learning through something like a bootcamp rather than a full degree program. The full degree program should cover the other things in some way at some point, but python still may not be best as the first language for them. I'm not sure it applies to the hobbyist or if it does, in what ways it would differ.
Some time ago probably a lady made a page where the user could guess the execution time for certain Python scripts - some kind of game, like: guess how much time takes Python to send 100 http requests. It was pretty educational. But now I can't find the page.
Maybe some of you know the link?
the "primitives" in python appear as primitives to beginners, right?
the fact that there is under-the-hood object stuff going on shouldn't matter
just keep that a secret from the beginner
If someone is a complete beginner, they don't know what a primitive is or why they should care that they're different from objects. Likewise, I don't think beginners would find it remarkable that lists and ints are both objects, if objects are just "things" according to their understanding.
BillyBobby's point is that understanding how primitives and memory-block arrays work is important for understanding how memory works in general.
i don't think understanding how memory works is important for beginner programmers
I don't entirely disagree
python is great because it lets beginners jump straight into learning programming, rather than having to learn all the under-the-hood magic we do to get the rocket ship off the ground
learn what an array is, conceptually, before you learn about how we encode it using electricity signals in transistors
The under the hood stuff does actually matter though, and when we pretend it doesn't because we are trying to keep things simpler, if there's never an effort to point out that this was a simplification, you get people who learned "as long as it works, who cares?"
At what point we say "oh it doesn't matter right now" and how we say it (or worse, don't) both matter.
The ideal would be not to start with programming at all, but to start with logic, algorithms, functions, and data structures. Jumping straight into programming isn't ideal at all except from the perspective of an impatient learner, and while I think it's "neat" that python has a lot of ways to get things done quickly, I think this makes it a worse language to learn with, not a better one.
to the point about memory layout, it matters in python code bases as well, and rears up in numerical code with numpy and with loop ordering in general. But the person who only learned python and was told they don't need to know that for python will be stymied as to why their code is so slow when they get to this point.
can you elaborate on what topics you would teach programming students before starting actual code writing?
Depends, is this part of a full course program or is this "how quickly can we teach them everything they need and will likely need"?
switch out "programming students" with "CS students"
(I'm not saying those are synonyms)
Logic, Algebra, Calculus, Statistics, Linear Algebra, Algorithms, Data Structures... Functional Analysis (I can keep going in terms of things which are useful for CS students on just the software side, and CS is broader than that)
In terms of which of those would be "before writing any code" , Logic, Algebra, and their intro level programming courses should have a primer on the importance of algorithms and data structures even without getting as deep as a full course on those would.
What I'm getting at here isn't that they need to know everything from the bottom up, but that when we go out of order for the purpose of learning, we need to be mindful of what we skip and what we tell students when something potentially important is skipped. Python makes for a much harder time of doing this both as a student and as a teacher.
students who know a bit of python already may be frustrated by the non-idiomatic python used to teach
teachers may have a hard time contriving appropriate examples of the things that are skipped because of how much python does for the user.
students may miss something that would click much better for them if it was taught when it would be relevent in another language.
python is not an ideology at the base(opinion) ... like is not better than any other language ...language agnostic programming is like the scope of thinking programs ... python is just a tool ... a bad 1 in many instances ... but humans prefer quick and dirty hence ... hence "real" machine code dont exist in python ... can i get a debate on that?
I don't think anyone is disputing that Python is a high-level language. but the nature of Python bytecode should be discussed in #internals-and-peps
...language agnostic programming is like the base of pedagogy in coding ... or maybe is the 1st course of learning (opinion)
hence "real" machine code dont exist in python ... can i get a debate on that?
if you want to debate whether or not python byte code qualifies as machine code, that is not related to pedagogy.
well quiq q is it?
I don't know.
where is the slow channel where are discussed the basics of a language?
(answered in #community-meta)
In descending order of importance (subjective):
Software Design by Example https://gvwilson.github.io/sdxpy/
Python Design Patterns https://python-patterns.guide/
Problem Solving with Algorithms and Data Structures using Python - https://www.openbookproject.net/books/pythonds/
How to Think Like a Computer Scientist: Interactive Edition https://levjj.github.io/thinkcspy/
The Architecture of Open Source Applications Vol I + Vol II + 500 Lines or Less https://aosabook.org/en/
Object Oriented Programming in Python for Mathematicians - https://object-oriented-python.github.io/index.html
Understanding Recursion Using Python - https://understanding-recursion.readthedocs.io/en/latest/index.html
Web Browser Engineering https://browser.engineering/
Software Design by Example https://third-bit.com/sdxjs/
Python for Everybody 2023 - http://do1.dr-chuck.com/pythonlearn/EN_us/pythonlearn.pdf [PDF] , https://www.py4e.com/html3/ [HTML]
Think Python 2015 (a bit dated) - https://www.greenteapress.com/thinkpython/html/index.html
Python 3 Patterns, Recipes and Idioms by Bruce Eckel https://python-3-patterns-idioms-test.readthedocs.io/en/latest/
The Little Book of Python Anti-Patterns https://docs.quantifiedcode.com/python-anti-patterns/index.html
Think Python: How to Think Like a Computer Scientist - https://allendowney.github.io/ThinkPython/ - 2024
Producing Open Source Software - Karl Fogel - https://producingoss.com/en/ - 2023
Obey the Testing Goat! https://www.obeythetestinggoat.com/pages/book.html
The Debugging Book: Tools and Techniques for Automated Software Debugging https://www.debuggingbook.org/
The Fuzzing Book: Tools and Techniques for Generating Software Tests https://www.fuzzingbook.org/
https://www.cosmicpython.com/book/preface.html
The Proficient Pythonista https://spookylukey.github.io/proficient-pythonista/ - 2025
Coding Challenges - https://codingchallenges.fyi/challenges/intro
Published Python book reviews: https://www.youtube.com/watch?v=MqywbqLmjp4
Hey there guys, i got A question, have anybody here learn from codeacademy? Cause i want to buy yearly pro plan and learn backend starting with python, i są w that there are lessons for almost anything that i would need to start looking for work but i still Wonder if its worth it so i cake here for your opinion, cause i tried their trial of pro and i like it very much
This is more a question for #python-discussion
No? If you have a topic in mind, go ahead and propose it.
Hardly. There are lots of debate about how to teach many things in Python
It's more about asking, like, what is typical Python pedagogy, since I think this is something Py does extremely well.
typical python pedagogy as compared to what?
Different people have different approaches. The biggest choice is theory first or practice first?
Sorry, I hope you don't see me as hostile?
It's that, Python is very popular as a language because it's very easy to pick up, which is a combination of language and ecosystem design as well as, I assume, a cultural focus on teaching.
Not at all, that's what this channel is for
I'm guessing the answer to your question is more, is Python being taught in a formal academic environment or an informal or personal environment?
For the latter, it's obvious that practice first would be preferred, whereas for the former, you want theory first.
Would this be an accurate assessment?
I don't think it's obvious. Different people approach it in different ways.
Obviously, there will also be situations where practice-first might be preferred academically, and situations where theory first might be preferred personally.
For instance, Python courses intended for secondary-school students, or Python courses intended to get scientists up to speed on Numpy etc for their work.
I'm also assuming the theory-first approach focuses more on sanitation, and less on practical coding, whereas practice-first can often discard code sanitation practices.
Eh, I hope I haven't caused offense, nedbat?
You're saying it's more a matter of personal taste rather than context?
yeah, how people learn can be pretty subjective
I do think that hands on stuff should be fairly prevalent regardless - you get better at programming by programming
as for how much theory and practice play in respectively in different environments, I dunno if you can really tell which ones are more prevalent.
I'm wondering if this is more situational; for instance, since it's relatively quick to pick up Python, moving into algorithms early on might be viable, and you have benchmark decorators available.
It's more, from my side, as a Haskeller, lots of stuff isn't practical fast enough on our end, and it's sort of adapted to target audience. End result with us is that the student knows FP, then walks off to a different language looking to use FP idioms.
From what I've seen in general Python channels with you guys, it seems as though a lot of the time people aren't well-equipped with theory.
FP?
Functional Programming.
A friend of mine professionally cleans up Python code by amateurs.
I.e, when the codebase is too gnarled up, he gets called in to clean it up and refactor.
I wish that was my job
what theory did you have in mind?
He likes it, because he's good at Python, he knows how expressive and powerful Python can be, and he's regularly exposed to bad codebases written by people who aren't proficient.
At least, earlier introduction to algorithmic complexity, concepts of program design, etc...
An equally valid question is why those codebases your friend works with exist in the first place
I'm guessing the people who originally made them have some particular knowledge or skill?
Yeah, I'm reexamining my assumptions.
You have no constant crises in pedagogy; end of the day, you're extremely strong in just building basic digital literacy.
So the code bases were built by domain experts who weren't necessary professional developers.
If it were done by professional developers, you wouldn't have the understanding of the domain.
Likewise, stripping out theory to minimize friction in software construction is desirable for the same reason.
The faculty at STEM universities are generally aware that the students in a wide range of fields would benefit from more programming
At the same time, it is unclear what domain courses to remove in order to make way for more programming courses.
Also: many students learn a decent amount of programming on the side, so the student body has very varying levels of programming proficiency, making it difficult to design targeted courses.
So it's interesting how you're facing different pedagogical problems than others, wherein the challenge is simply to teach in such a way that the language is compelling. 🙂
Likewise, IIRC, there's an MIT project that seems to be able to "superoptimize" Python code during compilation 🙂
As far as I've seen from US universities, they prefer a practice-first approach. The first semester freshman year CS course is: "intro to programming" (in Java or Python), with a fairly hands-on curriculum that mirrors that of AP CS or some of the popular ebooks (not very different from A Byte of Python). Theory is then followed up second semester with a DSA course.
hmm did u asked at any time what is this difference? ... this 1: https://www.digitalocean.com/community/tutorials/python-2-vs-python-3-practical-considerations-2
those days
the message you're responding to is off-topic
Yeah, be sure to read the channel description of any channel before using it for the first time.
like define pedagogy
methods and practices of teaching (this is in the channel description)
where should I move my message if this is the wrong place?
what is the difference between py2. and 3. as a programmer pov ? ... like i ask from low end
there really isn't one, since text channels aren't intended for informational content. you could post it on reddit.
i want 2 pedogizeze myself
ask in #python-discussion
i can do tiktok on som 4chan wat was ur point and what was my q?
no in my mind i teach u so pedagogy
I don't really understand what you're saying. this channel is for talking about techniques for teaching. not for the actual act of teaching.
if u cant answer u redirecting me to bs channel is not py way ...
ohh so u admins teach moron like me ... manners ?
This is the most recent on-topic message
As far as I've seen from US universities, they prefer a practice-first approach. The first semester freshman year CS course is: "intro to programming" (in Java or Python), with a fairly hands-on curriculum that mirrors that of AP CS or some of the popular ebooks (not very different from A Byte of Python). Theory is then followed up second semester with a DSA course.
If this interests you, please keep the discussion going.
please calm down
No more of this. Please stop displacing on-topic messages.
like i can do this ... like on topic :
like what is it ? like this https://www.theedadvocate.org/31-pedagogical-techniques-that-every-teacher-should-have-in-their-toolkits/
or how do u do pedagogy? ... like tell me as a child what is a teacher
... like who can see a problem there (maybe it is not):
ask a pedagogical mindset who owns ur code that is dunned in an vev .
pedagogy, code ownership, and venvs are three unrelated concepts. Please ask your questions in #python-discussion.
i dont have questions ... is just a statement
cant get what u dont get ... like there are known knowns ... ohh i know them ... is and will be a pedagogical q 4 ever ... like when u get payed 4 a line of code .. ull get it
ill stop spamming
rn
Hey, my university teaches C in the first year and then in the second semester Haskell, what do you think about this? (I think it's great and I feel like I learned a lot from that, I just want to see other people's opinions lol)
It's a University in Argentina, it's the best in Latino America, 3/4 ICPC Latam Winner. It's an interesting choice
Idk why you need to learn Haskell
tbh, learning C is necessary for every CS-major student
It is a way of seeing different programming paradigms, such as functional programming
alr
that's cool
in my country, most of the people learn C in the beginning then learn a object-oritented language next
I am a teacher and in my faculty, those students learn C++ in the second semester
I think that in the end it depends on the university, but it's true that they generally tend to teach languages that you probably won't use in your life in the first year lol
But it is interesting to learn them, it teaches you to think at a low level
trew, but since I am in AI faculty, learning C++ can still be useful
learning Assembly language can help better
Yeah, I think most universities at some point see it when they look at computer architecture
computer architecture is one of the 4 basic CS lessons
but this lesson is not easy for education bcz it demands high level equipment for the experiment
under this circumstance, most universities only offer theoretical part of the lecture
and you need to be knowledgeable on electronics somehow
all in all, the most very important and basic lesson must be data structure
bcz it lays the foundation on algorithm study and practice
and algorithm is very important in programming
What country is this? I'm always curious about different systems approach this question.
China
Interesting, what you're describing sounds more like what we'd call computer engineering in the US (C/C++ first plus emphasis on electronics / computer architecture/etc).
we share same interest somehow
but what makes me annoyed in my systems is there are some old stubborn professors just offer outdated or inappropriate textbooks to students
I've seen this too, a lot of texts still used for decades longer than they should've. Could you share an example?
there's a so called popular C textbooks which have been used for more than 3 decades
I sure hope it's K&R
and those sample codes are still filled with bug
nope, is written by a Chinese professor
named "TanHaoQiang"
so more students are forced to learn C and Python on Bilibili
It's funny, even 30 years or so ago for me, my first language in college was Pascal... then followed by C++ (and some Lisp). US system hasn't really changed much.
Pascal is classic
just realized that
some aged data structure tutorials are implemented by Pascal
Does the Chinese university system emphasize DSA at all? I ask because: Leetcode-style questions have become very popular in "big tech" company interviews. I've been wondering how that would affect university educations: as more students worry about DSA, will colleges also emphasize it more?
(the tail wagging the dog, I guess we'd say)
I don't think most of the teachers do
bcz they just teach within their teaching assignment
those students only review DSA when they have interviews
That's how it is right now for US, as far as I know, mostly a DSA class in 1st or 2nd years.... and a lot of individual studying when prepping for interviews. I've been wondering whether the "leetcode frenzy" will push its way into universities.
just realize the US system is facing up the same trouble
Oh absolutely, the curriculum's really haven't adjusted, and I think there's a fair criticism that many programs are weighted a ~~little ~~too theoretical and too little practical. Theory is important, but you don't really grok (understand) many things until you have to use it. I've interviewed many CS grads who failed fizzbuzz style questions.
fr
I wouldnt call it "trouble", DSA being taught helps avoid some really really terrible choices when it comes to performance, it's not "just theory", it's highly practical.
and the enteriprises are too mean to share the technology with campus
I will say: The leetcode frenzy has (more or less) fixed the problem of fizzbuzz failures among CS grads: CS majors now know they must practice coding, so the quality of graduates has increased.
trouble means the lectural system of DSA is terrible in my country
and they should not just focus on technique itself
I think if you're calling fizzbuzz a DSA problem and not just a "BSer filter", you're setting the bar too low.
Oh, I wasn't... I'm saying: if you study and practice DSA, then fizzbuzz won't be a problem. As a necessary side effect.
How do you think the university system should change? If you were in charge. At least in regards to DSA teaching.
I hope the university can get more funding. Then upgrade the textbook we have. Next, assign real project assignment fot students
And ofc, the quality of teaching should be part of KPI
Here, I also have to highlights an issue that most of the Chinese students and even teachers are not good at English
making them ineligible to most of the updated materials
How do they program in Python? Does it also require learning all the English phrases or is there a localized version?
they just learn the vocabs they use
they can read and write a simple sentence somehow. but they are ineligible to the English textbooks or tutorials
for those graduate students, they use translator for reading papers
functional programming is in, idiomatic haskell / traditional haskell learning emphases functional programming a lot
alr
cz for functional progamming, I know C a little bit more
and C is popular in embed system
你在什么地方?(Where are you?)
Dongguan(东莞)
how do ya know I know Chinese
深圳附近?(vicinity of Shenzhen?)
you can say so
Sorry, just practicing my Chinese. And yeah, you were discussing the Chinese educational system.
abt 60-70 km like that
more precisely, different educational system
I can see why you'd see it as significantly distant, I'm in Beijing for medical care right now.
alr
medical imaging is part of my current research topic
I hope I can publish a good paper on segmentation
Out of curiosity, are you sure it's bad all across China, since, I know, there's probably quality divergence in different universities.
what I mean is just for the majority not for all. ofc, some universities offer high-quality CS education like Havard
Or Tsinghua?
Beijing or Qinghua
or the top 2 in Shanghai or ZheJiang University
Ah, so it's more like, average unis are a bit retrograde
yup
but tbh, we should not be mean to the average unis
I mean that just in a descriptive sense
bcz high quality education is pretty difficult to be achieved
I get annoyed when systems overly emphasize top-end education. As to your preceding comment: and require resources too
yh. but in details, things can be totally different
I agree but I cannot change that
you have to know most of the well-known scholars only wanna go to the top-end unis
And I think most of the non-English speakers CS-major students are not good at English
they heavily rely on translation
Yeah, you're in a system where Tsinghua can be ranked higher than any Western university, but you also have stuff that's closer to India
I have a question: I wonder why game programming is so widespread as a "teaching method" when it's such a yarnball of complex techniques.
Personally I don't think it has pedagogical value, it's more of a long-term.. career track.
Often times motivation is the bottleneck for student learning, and I suspect educators choose game programming because they think it will be more motivating for students than other topics.
it's such a yarnball of complex techniques this can be considered a good thing, exposing students to a wide variety of techniques.
, its less that video games aren't the best beginner project, but they're a very enticing and flashy one, learning to make a game sounds much more interesting than learning to webscrape or analysing datasets
That, plus the fact that there are so many different levels of difficulty and projects that are all just "making a game" means you can make it as simple or as complex as you want - a CLI rock paper scissors counts as a game, as does a lunar lander clone, as does a 3D multiplayer game
my undergraduate software engineering course had us develop an Android app. And the instructor insisted that it wasn't a UI/UX or Android course, and that developing the app was only a means for applying the various design concepts learned in the course. but I think having to develop the app introduced way too much complexity and detracted from the actual learning goals of the course.
so I agree with you that that sort of thing is a bad teaching technique. I think it's a misguided effort to make the process more exciting for students.
There is a principle called constructive alignment which says that it should be clear to the student how the learning activities, learning objectives and evaluation are related.
In your course, it sounds like the learning objectives were not well aligned to the learning activity.
I have seen an example where pygame has been used to teach students about the traveling salesman problem, adaptive programming etc.
The students were supplied a working game, where two AIs would compete to collect the most rewards in a maze.
The students were then tasked with making AIs that, at the end of the semester, would compete against each other in a tournament.
In this case constructive alignment was achieved by supplying the students with everything they would need except the part the course was teaching them about.
It reminds me a bit about how students struggle with Calculus... not because of Calculus, but because of Algebra skills. I think the current "standard" curriculum of a 1 semester "intro to programming" class followed by a DSA class (with little reinforcement of what they learned in the intro class) is akin to pre-calc: not everyone walks away with the skills they need for the next level.
I'm not sure what I'd do differently. Would love to see more "connection" between courses, where skills are reinforced, rather than the very disjoint nature of most CS curricula.
I think it'd be pretty good to just get the mechanical aspects down first, which is very difficult to get students to do unless you gamify it... so gamify it?
I Have this prompt for an extra curricular outside university:
Activity Planning: plan a half an hour activity for a Year 10 pupil, to help them develop a skill they will need to be successful at university.
the 'skill' i want to teach them is the ability to not boil things down/ understand nuance/ stuff isn't black/white thinking. think outside of binary things. understand that shit is both logical / illogical at the same time, majority of life is inherently contradictory / hypccritical - want to teach them this? like show how everything is interlated / like yes this is academic (maths problem), but also philosophical, etc. how everything intertwines in on itself etc.
what is the name for this 'skill''?? is it called: (thinking critically???)
i feel like that's too vague / to much of an umbrella term tho i'd like a better name for it and i swear there is one i just can'tt think of it.
Two true statements can only conflict if they're stated imprecisely, so I think if you say "life is inherently contradictory" or "things are both logical and illogical at the same time", you won't achieve your actual teaching objective
im not going to say that verbatim
i was just spitballing but do u see what im tryna get at?
is the term for this lateral thinking? or do u have any idea of a better skill to teach that im missing or a better name for the skill that im tryna currently explain
critical thinking?
ya thats what i thought
critical thinking but that seems so vague icl but ya ig that's waht it boils down to
please remove your question from this channel and ask it in #career-advice
You might also call it "thinking outside the box". I would come up with a less controversial example (and this is not an invitation to discuss the topic itself in this server), but a debate in US politics that obfuscated by bad terminology is abortion. It's "boxed" as there being "pro life" (against abortion) and "pro choice" (supports abortion) sides, when in reality, people who are "pro choice" might oppose abortion in certain situations, and people who are "pro life" might support it in some of those same situations.
but i feel like critically thinking is more succint
than 'thinking outside the box'
ya thats what im tryna teach ofc but i want to also do it thru a math problem example... and then relate it to something more philsoophical etc. and abstract
fuzzy logic /j
IM NOT Tryna teach them to see patterns necessarily
i want to sorta teach the opp. like yes there are patterns and yes they are true and form the basis of logic
but sometimes there are outliers exceptions?
but then at teh same time logical shit forms into illogical shit
and it all collapses in on itself ygm
and tahts life?
maths --> logic --> illogical / abstract philosophical bullshit
what skill are they supposed to come away with? because when you say "logical shit forms into illogical shit and it all collapses in on itself", it sounds like you're going to go off the rails from whatever the actual goal is.
true. ok 'critical thinking' is the skill. the thing is it can't be too complex as they r only 13 and from disadvantaged backgroudns so i can't lose the plot it has to be something pretty easily understood but also like idk something challenging as well
do u think my activity plan idea is bad?
i shldnt try to get them to solve a maths problem and then use that to explain philosophical shit and then claim its all critical thinking lol
maths --> logic --> illogical / abstract philosophical bullshit (im spitballing ofc but)
academic school skill(math) --> philosophy (abstract - applicable to stuff outside of academic settings / general life /guiding principles)?
I would completely remove anything that might count as "philosophical shit" from your lesson plan.
I think methodical thinking, rather than critical thinking, is what you are looking for. A really good example of it is in chess. Without methodical thinking you won't get very far, your moves will be random and maybe 1 step look ahead. With methodical thinking you have a set of heuristics (that you keep checking) and planning. Methodical thinking is very useful in critical thinking (this is when you get to philosophy of reasoning (deduction, induction, abduction, analogical, fallacies, etc)).
For example a simple method in chess is to check these things in order: checks > captures > attacks/threats > defense > development of pieces. And combine that with piece values: pawn = 1, bishop, knight = 3, rook = 5, queen = 9. Then when planning ahead, compute the end result value of the moves (are you positive or negative in the end after it's all done?).
So there is a method that you follow, rather than waiting for thoughts/ideas to pop up in your mind (any method, even if not perfect, is often a lot better than none).
(For stuff such as politics you may have a method involving asking: Who is getting paid by who? What are the incentives for all parties involved? etc (maybe even some game theory if you want to take it further))
is this something that can be easily taught to 13 yr olds from disadvtanged backgrounds tho?
i dont have chess with me that i can bring and im not well versed in it
so i was thinking of trying to teach them this thru a simple maths problem cus they all need to know maths for their exams and stuff
is the writing good here?
the dashes (bullet points) need to be good as well
i need this to be concise / clear to the point - don't want a lot of words
I think it's fine, though the semicolon in the last sentence is wrong (it should be a comma).
you also switch between first and second person. Is the hypothetical follower of these instructions "you" or "I"?
where do i say you?
"How will you know if the activity has been successful?" And then later on you said "I don't have to beg for answers"
I only say I - should only be first person I think hmm
i guess i'll take out 'I' cus the lesson plan can be used by others not just myself
It's not about who can use the lesson plan, it's just about what pronoun you want to use for a hypothetical person. Some languages have a specific pronoun for this, but English does not. It's typically either "you" or "one".
For example, "One will know if the lesson is successful if one doesn't need to beg students to answer questions".
This same sentence can also be said with "you" instead of "one".
do i have to use either pronoun? rn im having zero pronouns
and it reads fine
Do you know what a pronoun is? He, she, it, they, them, you, me, are all pronouns
it doesn't have to be gramatically correct necessarily it's bullet points / brief; im refering to this lesson plan but i'll be presenting it ygm? so it's more about how i speak / present it
ok sry i mean like i just use they (third person) and they refers to pupils
I think the content is fine. Though I don't have any formal training in education--I just like to talk about it as it pertains to programming, since I do that a lot.
i need help here icl
do u understand the justification points im tryna make? but im not phrasing it right idt. and the brief definition is not brief and it's very weak..
the entire thing ideally would be a bit more concise as well (im not putting the ill say this whilst presenting ) into the activity paln im just providing you with context
whats pedagogoly
check the first message in the pins (which is the last message by scrolling down)
ok
there's a possible way to make a big app without oop?
this question belongs in #software-architecture, but the short answer is yes because "big apps" existed prior to OOP.
does anyone here have any preferred tools for teaching Git? i already refer people to the Pro Git book https://git-scm.com/book/en/v2, as well as https://learngitbranching.js.org/.
i find that some people really struggle with the concepts and need a lot of reinforcement and spaced repetition that focuses on the core mental models (dag of commits, branches are references, commit contents vs patches, etc) and tying them to the CLI commands, and i have no systematic approach for handling that.
i recently found https://i-love-git.com/ but i have no experience with it
Companion site for the book "Head First Git" by Raju Gandhi
guys I have a question, im going to present a program to some classmates and industry professionals. I was planning on getting them "hooked" to my presentation by explaining how it works, and asking them questions for them to answer throughout the presentation. What do you think of this method of presenting information and teaching it to others?
If you want to get them hooked, you need to start by showing them the problem your program solves.
I want the best resources to learn and understand python I read books but they kinda focus on what seems to be random topics like pypdf and tkinter
Or they're pretty basic
This channel is not for resource suggestions. There is a link in the channel description.
check the pins
This game helped me to understand git better.
https://ohmygit.org/
It teaches you the basic commands and workflow of git through several levels. It’s interactive, you see clearly the results of your actions and it’s using git under the hood so the "in game" git behaves like the "real" one.
thanks! i played through the beginning of it the other day but i wasn't sure how effective it would be for a beginner. one thing i found confusing and potentially misleading is that the arrows between commits seem to point forward, not backward
I see what you mean. I guess it’s a matter of viewpoint, you can view the arrows as pointing to child commits (as they do currently) or you could have them reversed, pointing to the parent (as you suggest). I think I would prefer them in the other direction too, but it doesn’t seem to be a big issue for me.
For me, the main selling point of this game is that you have a direct visual feedback of the various git commands. It helped me to get a better understanding of what happens under the hoop when I use a give git command.
Hey everyone,
I've been getting into the weeds with deliberate practise a lot and I've noticed something that's missing when it comes to discussions of teaching programming/python; a concise description of what "expert" looks like. What are the skills/abilities that experts have that differentiate them from someone like me?
I say that as someone who is trying to go from amateur to someone who can actually do something worthwhile. What makes Peter Norvig or Abelson different from a plebian like me? I've tried to look it up and I haven't found a worthwhile list/resource online. I'm wondering if anyone has thought about this here.
I'd say it really boils down to experience and exposure. They've been in more situations than you, and have the answers to more problems because of it.
Yes, that's true, but it's also true for anything. For example, I've been studying esports too and I've been taking playing FPS games seriously. I didn't grow up playing them. I first touched them when I was in my late 20s (ty pandemic); so I've come in cold.
What helped me was breaking down precisely what professional players do that normal players don't.
— Fight isolation, not just picking a fight with the enemy, but making sure they pick a fight where there is one enemy instead of many, the enemy is isolated,
— Window creation, the post professionals often "slice the pie" and they create narrow windows that allows them to do the above isolation, https://youtube.com/clip/Ugkx4fRs0VkG-U9brYFWd_TEuTHmZSW8QlFt?si=kJFLRNh-vC9IXww6 <---- example here
— Whole arm aiming, they train themselves, very deliberately to use their entire arm to aim rather than just the wrist etc. It's a sequence of, finer movements with fingers, snap adjustments with wrists, large movements with the whole arm
— Comms/Communication, working with their peers to relay a lot of information in tiny windows of time
— Movement, they learn how to "move" their character properly to take advantage of the game's physics engines and the boundaries of what it can do. This allows them to, for example, side step out of the way of someone's crosshair before engaging with them
— Using movement to aim, it's hard to always move your mouse in a deliberate way onto the enemy's head, it's easier to learn how to move in such a way that a) you sidestep them and b) your movement does your aiming for you.
[etc.]
I can go on, but as you can see these are specific skills that are things anyone can learn, you might not have the "raw aim" or talent that some of these insane teenagers have but you can learn these specific things and become better than 99.99% of people.
60 seconds · Clipped by areoform · Original video "12 Things to Learn from Demon1" by SkillCapped Valorant Tips Tricks and Guides
Wait You can developing in riot for yourself?
Could you explain what you mean?
I heard about riot develop
I'd like to ask: Are cybersportsmens developed it for theirself?
And knowing these things, breaking down the mechanics and what the fundamental skills truly are, has helped me quite a bit. I've rapidly progressed at the FPS side from someone who couldn't hold a mouse properly and aim straight to someone who can hold her own against the 99th percentile of players.
I'm not good enough to be the 99th percentile, but I've gone from the bottom 5th percentile to the 60th percentile.
I want to apply these observations to programming and becoming good at Python specifically, but there's this paradox here, there's a lot of material on learning to code etc, everyone has a theory, but there's no definition of what the precise set of skills/abilities that distinguish pros from amateurs looks like.
I don't understand. I'm sorry, could you rephrase your question a bit? I'm having trouble understanding this.
That is, they developed some of the details in the valorant with the help of riot development?
@cloud rock this channel is for talking about teaching techniques, so if you're talking about something else (game development?), please go to an off-topic channel.
No, not generally no. There's a large ecosystems of analysts, statisticians, coaches etc who do this. Riot doesn't help with such things.
What I'm trying to talk about is what deliberate practise looks like, and I've learned that for the practise to be deliberate + impactful, it needs to start with an idea of what the end state is, what distinguishes those at the peak of their craft from amateurs etc.
compared to something like getting good at an FPS, it's a lot harder to point towards specific skills that are typically associated with being called an "expert", especially since the end goal of programming is more open-ended than the end-goal of playing something like valorant
if i were to have to quantify/categorise a few key skills that more experienced programmers tend to have, the ability to communicate and cooperate with others easily, and the ability to lookup and learn things quick are probably two things associated with experience
I think you're right here, but for the sake of discussion do you mind if I digress a bit?
(for something mechanical like a FPS where peak performance is more or less clearly seen, it is absolutely easier to list specific skills. But I want to digress and point out that there are things that are likely to be stuff that ordinary programmers don't/can't do but someone like Norvig does)
I can't say I know much about Norvig, but if he's apparently someone who specialises in AI, then the big difference between his knowlege versus a typical programmer's is probably mostly just academic and theoretical knowledge around that topic
that's another thing to mention - programming and computer science is a big subject involving many specialties, so there are gonna be many people who are experts at one thing but not at others, there's less of a set path of "overall good programmer"
Well, let's take a specific example, here's a spell checker that he wrote about in Python, https://norvig.com/spell-correct.html
It includes a breakdown of the code by him.
As does this, http://norvig.com/lispy2.html
Going through that as someone who doesn't really know how to code much and isn't really good at it and is terrible/horrible at it, here's what I think he has that I haven't seen in other people,
— Fidelity & depth of modelling, he seeks to understand what he is building at a granular enough level that he's able to decompose the idea that to understand what's the most probably correction, we should understand two separate but important things, how likely a mistake is AND how common the "correct" choice is.
— He understands how and where to pare down the choices/computations his program makes, in the spellcheck example, he uses the words list to restrict the candidate model to a search through a much smaller list.
— He knows where his model is limited and where it goes wrong, in this case, it's because he's considering edit distance of one versus possibilities with multiple edit distances.
— He has a deep grasp of python as both a language and as a tool and is able to concisely put his ideas down,
This is his spell checker in its entirety,
import re
from collections import Counter
def words(text): return re.findall(r'\w+', text.lower())
WORDS = Counter(words(open('big.txt').read()))
def P(word, N=sum(WORDS.values())):
"Probability of `word`."
return WORDS[word] / N
def correction(word):
"Most probable spelling correction for word."
return max(candidates(word), key=P)
def candidates(word):
"Generate possible spelling corrections for word."
return (known([word]) or known(edits1(word)) or known(edits2(word)) or [word])
def known(words):
"The subset of `words` that appear in the dictionary of WORDS."
return set(w for w in words if w in WORDS)
def edits1(word):
"All edits that are one edit away from `word`."
letters = 'abcdefghijklmnopqrstuvwxyz'
splits = [(word[:i], word[i:]) for i in range(len(word) + 1)]
deletes = [L + R[1:] for L, R in splits if R]
transposes = [L + R[1] + R[0] + R[2:] for L, R in splits if len(R)>1]
replaces = [L + c + R[1:] for L, R in splits if R for c in letters]
inserts = [L + c + R for L, R in splits for c in letters]
return set(deletes + transposes + replaces + inserts)
def edits2(word):
"All edits that are two edits away from `word`."
return (e2 for e1 in edits1(word) for e2 in edits1(e1))
That's... impressively concise and clear at the same time.
that brevity and clearness of the code is definitely another good indication of expertise, i'll say that - being able to write so-called "clean code" that follows common conventions is usually a pretty good skill to have, though being able to define that exactly is it's own entire can of worms
yeah, let's be physicists and programmers and leave the worms for later lol (i.e. never)
The word 'expert' does not have a specific meaning. If someone claims to be an expert, it is up to you to evaluate if their claim is warranted.
You are of the opinion that norwig is an expert (I don't disagree, but it is the first time I hear the name).
You then point to specifics, to argue why he is an expert (fidelity, understanding etc.).
You asked the question: what makes someone an expert?
To me, it seems like you have answered your own question, by pointing out the reasons why norwig is, in your opinion, an expert.
However, there are many types of experts, and other people will be programming experts in ways that are different than norwig.
I'd say one overarching thing there in the spellchecker and associated write-up is how he's able to link together the theoretical side of how the program is meant to operate with the actual code of it. He's taken some knowledge of probability theory (and a bit of information theory), combined it together into a theoretical idea of how to make a spellchecker (choose the most common word that's within 2 edits of the misspelled word), and has then translated that over into fluent, easy-to-read python code
so there's probably another thing to add to the list of good overall programmer skills, being able to connect theoretical knowledge to practical application, as vague and word soup-y as it is
also like i mentioned earlier, being able to learn and pickup concepts pretty quickly is something rather important, which i'm fairly sure norvig's also showing there
No one person is forever going to be able to keep tons of probability theory and all of the knowhow on how to make an interpreter actively in their head at the same time, so I imagine the creation of that lisp interpreter involved having to do a lot of research into how interpreters actually work (which itself touches on quite a lot of theory)
unfortunately though, basically all of the skills i've been mentioning and singling out as good indications of expertise are all things which are kinda hard to specifically search out and gain, these aren't exactly directly grindable in the same way something like bettering aim is
they're all ultimately things which come with, well, experience
Is anyone using video to teach? I'm currently looking for good recording software that can e.g. zoom to a specific part of the screen (or a way to do it in post) to highlight parts of the videos.
I've been using OBS to record and Kdenlive to edit.
Both will allow you to zoom.
I'm on linux so Kdenlive was easy for me to set up, but there might be better alternatives out there, especially for windows/mac
kdenlive is pretty easy to set up on windows too, but if you don't like it for whatever reason, davinci resolve is free for non-comercial use. If you're on windows, https://learn.microsoft.com/en-us/sysinternals/downloads/zoomit is pretty nice for live presentations, can zoom in in real time and annotate the screen. I believe OBS can pick this up too.
Love the question. I equate clarity of thought and the brevity/conciseness of code with expertise to a large extent. I've been thinking about the set of questions that can be answered in many different ways so that I can bucket the style of response to each question into 3-4 bins each and then use those bins to help assess the skill level of the person taking the test.
I've just heard a quote from Leslie Lamport and thought it fit beautifully here:
"Programming is to coding what writing is to typing. Writing is a mental effort, you're thinking about what you're going to say. The words have some importance but in some sense even they are secondary to the ideas. In the same way, programs are built on ideas, they have to do something, and what they're supposed to do is like what writing is supposed to convey. If people are trying to learn programming by being taught to code, they are being taught writing by being taught to type, and that doesn't make much sense."
I love it but struggle with the last sentence... how do you teach someone to write, without first teaching them the letters and how to form them into words?
Lamport preceded that quote earlier in the video by saying "One of my epiphany moments as a computer programmer was that I wasn't writing programs, I was writing algorithms."
In this way, coding is the medium between the ideas of the algorithm and the construction of the program. "Coding" itself is easy, there's a reason experienced programmers can translate so well their knowledge from one language to another. That being said, "coding" and "programming" are separate skills. A "programmer" is a creator of algorithms. Programming is enabled by coding, so it needs to be taught. The dissonance here is the common trap subpar "programming" courses fall into, trying to teach programming by teaching coding.
In other words, you need to know how to type to write (digitally), but learning to type does not teach you how to write. Whether you are teaching yourself or others, it should be understood that learning the medium to accomplish your job does not equate to learning how to accomplish your job.
Thanks for the full context, I love this.
No problem, I love it too.
100 days of code, jobs prospection and dev roadpath
I'm currently on day 17, doing 2 days in one. I found the course pretty basic in the beggining but at my current day I found difficult doing fast as I was doing...
What the anons find of this course? Have better ways to speed up this process?
After I make all the project she put on the course is possible I found a homeoffice job as a dev?
This channel is where educators discuss how they teach. What you are asking is related to learning and career growth. I suggest you repeat your question in #career-advice
#shorts #india #shortvideo #shortsfeed #short #shortsvideo #shortsyoutube #shortvideos #shortsbeta #shortsvideos #trending #trend #trendingshorts #trendingvideo #viral #viralvideo #viralshorts #viralshort #viralvideos #youtubeshorts #youtubeshort #ytshorts #youtuber #love #like #share #shots #youcan
Pertaining to Pedagogy
Can you explain why someone would want to watch this video, and what you think about it? "drop and run" link sharing doesn't really spur discussion.
I think it's "Learn by doing" in a nutshell
random quotes or shorts without context arent that conducive to discussion for any topic
the boy on the video has not learned anything other than that his version of "boomers" are just abusive
thanks
!warn 1010614094753185952 don't recruit people here.
:incoming_envelope: :ok_hand: applied warning to @void ermine.
guys what do you think is the best way for someone to learn something new and be able to dedicate themselves in it?
This channel is for the discussion of teaching. Not studying.
oh shoot mb
then lemme change my question then
how would you teach someone something new and actually have them be curious and dedicate themselves in that subject?
You can't make someone be curious or dedicated if they aren't or don't want to be. There might be teaching techniques for maintaining or increasing curiosity.
But if this is still your underlying question, I can't answer your second question in a way that will satisfy your actual question.
what about if that person is curious about that subject. How would you teach to them to actually retain the information you give them?
By applying the material. Like by writing code that uses the concept that has been taught.
I think you are confounding things here. Curiosity in a subject has little to do with retention. They are different problems.
But yes, active application is the key in an overly short answer
To build on what I mean; curiosity can act to help with retention. And there might be correlation between the two. But there is arguable causality between the two.
oh ok
I asked my recent question because of an experiment that was done by NASA to find out how geniuses are made. and results from that experiment were that schools were giving people intelligence but decreasing the "genius" within them. So to conclude, I just wanted to know what schools are doing wrong in a pedagogical sense.
To once again oversimplify complex problems. The answer to "what schools are doing wrong" is closer attuned to "not enough resources/funding". There are flaws in school systems and their style of teaching. But the blame is not solely placed on the instructors. It is equally the fault of the infrastructure for students and faculty.
But even ignoring that. I feel like I am missing something. How does this NASA experiment have anything to do with your line of questions?
it just made me wonder, how can we develop more geniuses? if results from NASA's experiment showed that school systems teaching styles are affecting negatively to this creative part of us humans(also accounting for what you just said), then what are some ways we can teach to have an increase in more geniuses than a decrease.
sorry if my line of questioning is confusing
i will work on it