#pedagogy

1 messages Β· Page 2 of 1

gentle hound
#

I found that intellisense and stuff like that is generally just in the way for me as a beginner

#

Just as you wouldn't activate Co-Pilot for somebody new to coding, you would let them explore their code without pop-ups, who have little to do with their early progression stages.

It just confuses.

sage jasper
#

i think intellisense will probably overboard a brand new beginner, but a beginner that has done perhaps a project or two would probably benefit, once they have their bearings a bit in the language

misty dirge
#

@crimson nymph @south shore @restive prawn this channel isn't for programming questions. see #β“ο½œhow-to-get-help

The ongoing topic is if code completion tools are good or bad for beginners.

twin egret
#

a simple code completer, that just adds an additional parenthesis, quotation mark, etc. whenever you type an opening one, and shows a list of all the attributes of an object when you type ., wouldn't be that bad for someone whos fairly familiar with the general syntax of the languages, and the built-in types and stuff

#

i will say though, that maybe stuff like VSCode/PyCharm's auto-importing autocomplete stuff might be a little too much, since that can sometimes lead to someone importing some function from the wrong module, which is something i definitely find happening sometimes

#

also, as a little tangent, i'm not a fan of how pycharm defaults to giving tons of style-related warnings, which can be mistaken by some new programmers for actual error messages. sure, learning good style conventions, and how to follow PEP8 can be good, but its not important when the focus is on learning the language first and foremost

noble aurora
#

pycharm aims to be usable for actual development work out of the box, so that's not really their fault

narrow hare
#

Programming teacher here β€” doing C teaching professionally though I lean (euphemism) towards C++, which I have decades of experience with. Is it recommended for a teacher, who's starting to give courses to (poly-tech') engineering students, to start Python with the internals, e.g. the id function, the internal structures of objects, how memory is allocated/used, rather than plunging into simple examples and learning how to write good code first, for example watching Raymond Hettinger's tutorials (which have been enlightening to me, to say the least, when I started)?

#

You'd guess my opinion is made but I'm open to criticism and would gladly revisit my ideas.

stone juniper
#

these are non-software engineers?

narrow hare
#

exactly

#

They learnt a bit of C, a bit of Java, C# as well.

#

They took courses in construction, materials, electronics...

#

that's not even how broad the matters are in about 5 years.

stone juniper
#

personally I would stay away from python internals completely
python can be a very powerful tool for engineers, but it's designed to smooth over the rough edges for you

#

especially things like memory allocation

narrow hare
#

That's what I thought πŸ™‚

#

I wanted to know if it was just me, if I was off.

#

Turns out I'm not, apparently πŸ™‚

stone juniper
#

if they have a small amount of experience in other languages, you might want to show them this talk so they dont trip over how references in python work
https://www.youtube.com/watch?v=_AEJHKGk9ns

"Speaker: Ned Batchelder

The behavior of names and values in Python can be confusing. Like many parts of Python, it has an underlying simplicity that can be hard to discern, especially if you are used to other programming languages. Here I'll explain how it all works, and present some facts and myths along the way. Call-by-reference? Call-by-v...

β–Ά Play video
narrow hare
#

Fact is I'm not the teacher who's assigned the courses. It's one of my colleagues.

#

I'll bookmark that video for sure! Thanks for the link.

distant reef
#

I always felt that learning about and implementing datastructures in C++ was going up, like... here are the basic tools and now I built something that's a cool combination of those tools. It felt empowering and cool. Going from Python and learning about things like deques or trying to create a linked list with a dictionary always felt like stepping down, like I have these awesome powerful data structures and I'm making a weaker one, felt like a canned exercise.

I probably wouldn't use Python to teach DSA, honestly.

misty dirge
#

and I think it can also work in reverse: implementing a linked list in Python with a pythonic API can teach you a lot about Python OOP/dunder methods

distant reef
#

I suppose it would depend on the implementation being taught. Coming up with a linked list as a standalone class would probably educate someone more than someone like us who would just cheat and use a dictionary, lol

#

Or at least someone like me*

long narwhal
#

@narrow hare
You can look at it from the other side, and ask what the engineering faculty want from you.
Most likely this is to teach the students programming in order to turn experimental/simulated data into results for a thesis.
I find that understanding python internals are not necessary for this but a basic understanding of numpy and matplotlib is.
Ideally, you find some problem/equation the students are familiar with from a different course but which is difficult to approach analytically.
I started with the following topics when teaching senior material science students with little programming experience.
(I used the structure factor (https://en.wikipedia.org/wiki/Structure_factor) as an example for point 1-4.)

  1. Working with text files (reading tabulated constants)
  2. Organizing the data as it comes in (data types: list, dict, tuple)
  3. Turning an equation into code (functions and scope)
  4. Visualizing (matplotlib)
  5. Array slicing and multidimensional arrays (numpy)

For me the biggest challenge was teaching them how to break down a bigger problem into manageable parts they could solve on their own, but I think your experience as a teacher may help you here πŸ™‚

#

Also: I had great success playing the pep8 song in class

misty dirge
keen nova
#

hahaha that's lovely @long narwhal

#

surprisingly not the first time I've heard of that happening, Kelly Paredes from Teaching Python said the same thing

narrow hare
#

Thanks a lot @long narwhal

viscid plank
#

hello how do I regex that only validate with this path
/home/example.sh

stone juniper
misty dirge
#

Topic: is Python a good language for learning traditional data structures and algorithms?

weak mortar
#

hey

#

anyone?

stone juniper
#

and then pointers of course

misty dirge
#

@stone juniper I agree re hashmaps. what if we narrow the scope to only graph traversal algorithms?

stone juniper
#

i think that does actually work, since they aren't tied to the underlying computer architecture as much

#

like graphs already have to be abstracted

misty dirge
#

So, yes for algorithms that operate on abstract data types, and no for algorithms that operate on low-level abstractions for the computer architecture.

#

We did it, Scofflaw!

#

but now I need a new topic.

stone juniper
#

lol that's the problem with this channel, we're just too dang good at pedagogy

misty dirge
worldly dewBOT
#

:ok_hand: Added we’re-too-good-at-pedagogy to the names list.

distant reef
misty dirge
#

unless an algorithm's efficiency is predicated directly on how efficiently it can find things in memory, I think C is too low-level.

distant reef
#

It's definitely low level and that makes sense, but for me it's more of the motivation. When you're at the level of C and learning about/working with new datastructures and algorithms, it's motivational and exciting, look at all these new awesome things you can do with the language. It's inherently motivating to learn

Once we go to Python, it feels like taking a step back. Why do I need to learn sorting algorithms when sort() exists? Why do I need to learn hashmaps and chaining when dictionaries exist? Etc. I have no inherent motivation to learn these things now and they're less likely to stick with me in my mind.

misty dirge
#

(and when I say "memory management" in this context, I don't just mean allocating and deallocating memory, but also organizing how memory is accessed in the code.)

distant reef
#

Ahh, okay I see what you mean. Okay, I think I'm in agreement with you then. For learning the higher level/general concepts like greedy algorithms Python is fine.

misty dirge
#

consensus restored!

long narwhal
#

Imo the best language for learning an algorithm is the language the student is most confident in. I have been thought algorithms entirely in pseudocode, which worked well for a mixed class.

toxic rover
#

Do DSA courses have an unstated secondary purpose in university programs? Prepare for X, really learn to program, building a mental model of machine memory, things like that?

noble aurora
#

you're expected to know to program prior to a DSA course. that's not to say you won't pick up more detailed explanations of things, but there's no time spent on how to write the code, you're just given the assignment

misty dirge
stone juniper
#

imo as with most classes, the value comes from exercising your brain in a new way
when starting to learn DSA you need to learn the new constraints you're working with; your pseudocode can't say find x because that's begging the whole question

#

people do memorize sorting, graph search algorithms, etc, but imo that's borderline worthless

#

in pragmatic terms, the biggest use of a DSA class for most programmers (other than passing stupidly-organized interviews) is teaching them to avoid walking into combinatorial explosions

#

or at least recognizing when they do

misty dirge
#

Aren't you the one who said that you were a math major who was content to learn non-useful theory stuff?

stone juniper
#

yeah

misty dirge
#

but I agree that memorizing the algorithms isn't useful, and learning about the scalability of optimization problems is.

stone juniper
#

i once helped someone trying to optimize their fantasy football team, their approach was to generate every possible team and then take the best one
i did some envelope math and found that my computer wouldn't quite finish the calculation before the next season started

misty dirge
#

would it finish before the universe ends?

stone juniper
#

yeah it was only like a year and change

#

their question was "why doesnt my program end?"
that person could've benefitted from exposure to the basic principles of designing algorithms

misty dirge
#

when I took DSA, we had an assignment where the naive solution was O(n!), and the efficient solution was O(n^3). and for one of the test cases, n=30

#

and a few of us had inadvertently done the factorial solution, and found ourselves in that same boat.

#

also mine was both factorial and recursive, so I was probably headed towards not having memory.

stone juniper
#

just tail-call optimize it and then you can sail on to the end of the universe

misty dirge
#

we had to do it in java because fuck you. I don't think java has TCO.

toxic rover
#

When I say unstated secondary purpose, I mean not on the syllabus. So for example an organic chemistry course is actually a filter course for premed programs.

#

I think the primary purpose of a DSA course within an undergrad program is exposure to the idea of structured data beyond the primitives provided by the language. It's not totally obvious that you can do these abstract things.

misty dirge
# toxic rover When I say unstated secondary purpose, I mean not on the syllabus. So for exampl...

the DSA course at my university was also regarded as a weed-out course, and this was realized with a rapid pace at which new algorithms were presented. It was also a prerequisite for all the concentration-specific courses.

But if those are the kinds of secondary purposes you have in mind, it's also largely about fulfilling accreditation requirements. DSA is such a strong tradition within computer science that I can't imagine an accreditation board ever removing it, even if the underlying learning goals of DSA (understanding time and memory scaling) can be taught in other ways.

distant reef
misty dirge
distant reef
#

Ah okay

pine stratus
# misty dirge So, yes for algorithms that operate on abstract data types, and no for algorithm...

Looking at the DSA channel here, Python works really well for being close to pseudocode for abstract algorithm implementation. Such as converting from CLRS (except for the 1 indexing thing, in that regard Lua might be even better). The C programming language also just has an awful standard library that was made for a machine nobody uses anymore in a time when people were still figuring out this programming thing (much more than now). C requires one to go get an actual useful standard library (that someone else made or their own), one which has things such as dynamic arrays and hashmaps. After getting that, it's pretty similar to Python (except things are not hidden from the writer, such as references (pointers)).

#

(C++ provides these basics (dynamic arrays and hashmaps is basically all that is needed) which makes it much easier to get started with doing anything)

#

(I think at some point understanding how things like dynamic arrays work (why they need to do what they do (the idea that physical constraints and the way memory works (and artificial constraints) change the way algorithms need to work in the real world)) is important and would be done with something like C)

pine quartz
#

I see 3 main things you'd want to take away from a DSA course:

  • Understanding the different complexity classes, how to recognise them and to catch that kind of blowup early.
  • Getting an overview/understanding of the various kinds of data structures (arrays, linked lists, hashtables, trees, graphs, etc), what they're good/bad for, and the kind of classic algorithms have been built for them already.
  • Understanding how core algorithms work on the inside (sorting, hashing, text searching) so you appreciate how expensive they would be, and how they can be optimised if you know certain things about the input.

In general I reckon it's about giving you an overview so you know when to reach for what data structures or algorithms, and when it'd be a bad idea to reach for a different one...

rigid locust
#

hey guys can i make a chatting app like discord or whatsapp just by using python and javascript

#

or do i need other languages

stone juniper
frozen basin
#

can anyone help me to creak placement coding round please?

subtle owl
misty dirge
steep prawn
#

Hello Guys , anyone can help me out with commit history between Jenkins builds

misty dirge
noble aurora
#

in terms of practical purpose, the most useful part is the exposure to different dsa imo. recognizing that you might be able to use a certain data structure for a task can make your job much much easier and faster. same for algos.

distant reef
pure fog
#

it's probably less useful in python than in something like C

#

i certainly appreciate having a baseline set of knowledge around those topics, even when I'm just writing scripts

misty dirge
pure fog
#

and only by convention: higher level programming languages tend to have those things in the standard library already, so you don't need to implement them yourself. but if you are working in C, chances are you are doing something lower level, and you probably specific needs, and you probably need to implement your own thing to meet your specific needs

pure fog
#

does anyone have a good article that talks about the "library" vs" application" distinction? doesn't have to be python-specific, but it would help if it was.

winter spear
#

Like I had to write a json parser for a microcontroller

#

There's plenty of fast open source ones but we needed limited functionality and be as small as possible

#

We also knew our json schema and the parser was tailored to just that

winter spear
distant reef
pure fog
distant reef
misty dirge
distant reef
#

Ah, gotcha

#

I suppose most of my stance then is on the foundational elements of things like greedy algorithms, linked lists, heaps, etc.

misty dirge
#

You think that greedy algorithms should also be taught in C? Because the point of greedy algorithms is understanding how the nature of the problem allows you to make certain assumptions. Ie that the locally optimal decision always leads to the globally optimal result.

#

Which I don't think benefits from being learned in C.

distant reef
#

I suppose it would depend on the nature of the specific algorithm. Any algorithm that was part of the stdlib for instance I would easily prefer to be in C

#

So maybe not with the pure conceptual things like greedy algorithms, although I don't think there's any downside to teaching it in C

misty dirge
distant reef
#

That's a fair point

winter spear
subtle owl
#

<@&831776746206265384> ads

copper cosmos
#

I found this recent talk about a grade school curriculum insightful and engaging: https://youtu.be/fmF7HpU_-9k

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...

β–Ά Play video
misty dirge
copper cosmos
#

Full localization of the built commands , even with Arabic and Hebrew.

Also, a structured progression toward full Python over the course of one academic year

distant reef
#

What topics are covered? Is it from no programming ability or does it assume past experience with other programming languages?

heavy trench
#

Bit off topic but I got a competitive itch recently, does anyone know if there is like a leetcode type website where you get ranked, sorta kinda like chess.com

upper flint
#

Codewars or Advent of Code?

heavy trench
#

Ye I was looking at code wars, seems super interesting, I always thought it was one of those more like, casual prepare for interviews type beat, just w a community, that second one tho, never heard of it

sweet dove
#

dudes, ima need to bring a language for my school to consider teaching soon, we want to think about replacing C#, right now candidates are kotlin, go, Rust (im against it as it will be the first language introduction to computer science and I think having a borrow checker and a strict compiler to deal with might be a bit much to start with), we will also teach python as a second language and assembly 8086 for some god forsaken reason, anyone have another suggestion?

#

so far rust/c/c++ are out as they are too steep a learning curve I think

vale current
#

I agree with that, yeah. Rust isn't the best option for new programmers

sweet dove
#

we also want something compiled as they will learn python for their second lang (more for teaching networking, file stuff etc)

#

kinda pointless to teach ruby/lua/pearl and then also python

#

#why_cant_we_just_teach_befunge_smh

vale current
#

You did rule out C, but perhaps it would be alright? It's not as "heavy" of a language as C++ or Rust

sweet dove
#

Im not sure as admittedly I use rust for my low level needs

#

is it actually new programmer friendly or is it like c++ filled with bit shifting to print to screen?

vale current
#

I wouldnt say it's friendly, but it's a much smaller language. There isn't much to C, so you can go over what it does have fairly quickly. Because of that, though, you need to put more work and build more stuff up yourself

#

whose your audience? High schoolers? Or is this in uni

sweet dove
#

would it be a suitable asm 8086 replacement? or am I still cursed to teach it?

#

high school, never programed in their life
mostly good in math

vale current
#

if your going to be teaching asm, perhaps having some prerequisite knowledge of lower level details in a higher level language (C) would be worthwhile

sweet dove
#

I am pushing to swap the asm 86 to asm 64 might change my angel to asm64/C

#

what I need right now tho is a good compiled starter lang

pine stratus
#

Ruby is pretty nice for beginners.

fallow terrace
# sweet dove dudes, ima need to bring a language for my school to consider teaching soon, we ...

I know I mentioned this, but I'll elaborate here: I suggest a declarative, functional programming language, such as Haskell. You've already chosen Python, which will introduce students to imperative, object-oriented programming. These would provide something on the opposite end of the scale. This is beneficial for a couple reasons:

  • It's an entirely different model of programming: you don't have familiar concepts like mutable state or loops. That's good to expose people to. Programming shouldn't all be pushed into a single way of solving problems, and teaching in a multi-paradigm approach can encourage using the best tool for the job.
  • You mentioned that your students are pretty good at math. Many functional programming languages express computation in a way that resembles mathematical expressions.

On the other hand: it's entirely different. I know I mentioned this as a pro, but it could also be a con, too. It might get confusing to use two languages where the same problem is solved wholly differently.

sweet dove
fallow terrace
#

Haskell definitely has AOT compilation. I think Scala has support for LLVM too? I haven't used Scala, so not sure.

sweet dove
#

tbh I realy want to also add a small "lets solve this question in asm, c, c#, python, haskell, prolog, apl" thing to our school but we just don't have the time T_T

sweet dove
pine stratus
#

If they are complete beginners I would not discount Scratch.

#

It eliminates a whole class of errors that beginners can run into and get blocked by.

misty dirge
#

@fallow terrace is Haskell statically typed? I think CS students should start with a statically typed language

sweet dove
fallow terrace
pine stratus
fallow terrace
#

ooh yeah, static typing is another big one

#

dependent types and algebraic effects in haskell when

pine stratus
#

One nice way to transition is to go to Python and use turtle.

sweet dove
vale current
#

oh yeah, would lisps be a reasonable option to start with?

pine stratus
#

For LISP languages I would recommend Clojure to start.

misty dirge
pine stratus
#

(Except that never happens because LISP programmers format their code)

sweet dove
# fallow terrace lisp?

I actualy considered Clojure but I think that lists are not the best first concept to teach

misty dirge
fallow terrace
pine stratus
vale current
sweet dove
pine stratus
#
(defn -main ; name
  [& args] ; (variable) parameters
  (println "Hello, World!")) ; body
``` Typically it looks like this, and at most like 4 )))) at the end.
#

There is a huge stigma and many misconceptions around LISP languages.

sweet dove
#

lisps are good

#

so far im still looking at kotlin and go as the front runners with Haskell still needing a bit more research thenks πŸ™‚

pine stratus
sweet dove
#

yea

pine stratus
sweet dove
#

while I do know that nim is good, I need a more popular/older language so that if my students want to continue learning they will have an overabundance of options

#

for example I can't tell them to practice in codewars or leetcode in nim

#

as im preety sure it's unsupported

pine stratus
#

They could compile and copy paste the output C code into those websites though.

sweet dove
#

id like to avoid that step if possible

pine stratus
#

Do they not have Nim? I don't think it's that obscure.

fallow terrace
#

isn't Nim fairly python-like?

sweet dove
#

it's not abscure, it's new

#

and not uber popular like rust, so it's adopted slower

pine stratus
sweet dove
fallow terrace
#

i'd avoid teaching a language too python-like, personally. it seems like you're already trying to teach a wide variety of things (given 8086 asm), so it seems almost redundant.

#

what's "too python-like" is up to you

sweet dove
#

also true

pine stratus
#

For absolute beginners I would stick to just 1 thing though. Most of them will probably get hung up on just the compiler's errors and syntax for a while.

sweet dove
#

we teach c# for the first year then we teach python and actual use second year

pine stratus
#

Feels like the opposite way around I would do it.

#

Hedy was linked to in a video just prior in this chat. It helps with getting over those compiler errors and syntax issues mentioned.

sweet dove
#

third year is specialized so, either js html and design for the frontend thing, backand is about networking sql and a few frameworks (usualy flask), and the "cyber" (white hat hacking but fancy sounding) is asm, sql and some other fun stuff

pine stratus
#

I would have at least 1 more year of non-specialized.

#

It's worth going slow in the beginning.

sweet dove
#

head teacher is controlling that, im under one of the teacher's under him

#

and the major is ranked as the best programing course in the country for a few years already so whatever he is doing is working

pine stratus
#

There will be some students that are really into it though too, and those can probably skip 2 years.

pine stratus
sweet dove
noble aurora
#

squiggles point is valid though. it clearly could be a variety of factors, such as how good a teacher he is

sweet dove
#

the head teacher is only teaching about a 15th of the lessons, we are about 10 teachers

pine stratus
#

Potzko's point is very valid too, it's about not breaking what appears to be working. That is up to the person to decide. I'm a risk taker, so i'm biased in that way (I try to wiggle out of local maximums).

oak breach
steady badger
#

Hello everyone. I'm going to teach Python to a group of total beginners. I don't intend to prepare them for any exam or certification, just make them able to start coding. My audience will be a few adults (1-5) of any age that don't have any previous programming experience. Could you suggest me anything that i could use as a reference? I don't have problem on explaining any specific topic but i want to have some guide/reference like a book. I think of using the "A byte of Python" from here: https://python.swaroopch.com/ which is concise which gives me "space" to teach on my own way and also covers everything important. But do you have any other ideas?

neon pasture
#

!resources we do have a list of a bunch of resources, automate the boring stuff is good, what you linked is also good

worldly dewBOT
#
Resources

The Resources page on our website contains a list of hand-selected learning resources that we regularly recommend to both beginners and experts.

sweet dove
ripe helm
ripe helm
sweet dove
sweet dove
ripe helm
#

Ohhhhh, I did not get that, Kotlin is a great choice then, especially for how well it works with Android development. Cool, then yeah anything niche and functional probably wouldn't be the best choice, also I do think that smart and interested programmers arrive at advanced things without being prodded into them

sweet dove
#

it's just my luck out of 6 languages out of which I know 5 the only one I didn't know won T_T

ripe helm
fleet pulsar
#

I'm not sure if kotlin is beginner friendly enough, the syntax and some of the concepts can be confusing at times. I view it as a sort of "Java with hindsight" aimed at people who are already familiar with programming and see java's flaws, so they know what problems different features are supposed to solve

misty dirge
orchid swift
#

its really good

#

whoops nvm

#

i just read above discussion

sharp scroll
#

@torpid prawn Have you read the mathematicians lament?

torpid prawn
#

cant say i have

sharp scroll
#

By Paul Lockhart. 25 pages explaining the faults of our education systems perspective on teaching math

#

Super inspirational, at least for my life

torpid prawn
#

interesting

sharp scroll
#

Free online. A really beautiful read nonetheless. Written super nicely.

torpid prawn
#

oh nice. ill see if i can find some time for it this week

sharp scroll
#

Let me know what you think. The first page seriously hooks you on.

torpid prawn
#

do you think this approach would solve the overall issue though? i think maybe this + more technology foundation could help?

sharp scroll
#

It points out the problems. Hard to provide solutions without going completely unorthodox. We just don't have the data to try out the new things, and it's unreasonable to expect such a radical change from teacher union.

More technology foundation will definitely help, just a matter of giving that opportunity to kids everywhere peepocheers

torpid prawn
sharp scroll
#

The book attempts to allude how math is an art. But how can you teach art is a whole question in itself

#

You can give the tools, but not everyone is going to be an amazing artist.

torpid prawn
#

oh wait you were just replying back to my message lmao. i thought you meant something else lol

#

true

sharp scroll
torpid prawn
#

maybe it needs to be some extracurricular program since i feel like teachers just dont have capacity / resources / training

sharp scroll
#

So our current system kinda gives everyone a shitty alternative, which the worst mathematically creative student will still be able to gain something from learning math in our school system. The question comes with how hard we cap the ability for mathematical growth in kids

torpid prawn
#

theyre also vastly underpaid

torpid prawn
sharp scroll
#

Yep... lorsob

torpid prawn
#

like i had a great calc teacher

sharp scroll
#

I had a great dad. peepocheers

torpid prawn
#

and he had a masters and everything but like i knew he was super underpaid

#

nice! thats awesome to hear

sharp scroll
#

Spent hours and hours up at night to formulate teaching me calculus at a young age.

#

Really all the credit goes to him.

torpid prawn
#

did he also introduce you to programming or just logical thinking and you picked up programming on your own?

sharp scroll
#

I picked up programming out of my own interest.

torpid prawn
#

nice! i think some credit also goes to you then since thats not easy even with some background in logical thinking

pine stratus
# sharp scroll It points out the problems. Hard to provide solutions without going completely u...

It also hints towards https://en.wikipedia.org/wiki/Constructionism_(learning_theory) (as seen in the example of how to teach euclidean geometry the right way (euclidean geometry is essential IMO (directly following Euclid's Elements), and it having been removed from multiple school systems (but especially from the US school system (starting in the 70s)), has caused multiple generations to have missed out on essential mathematical development))

Constructionist learning is the creation by learners of mental models to understand the world around them. Constructionism advocates student-centered, discovery learning where students use what they already know, to acquire more knowledge. Students learn through participation in project-based learning where they make connections between differ...

#

"Constructionism advocates student-centered, discovery learning where students use what they already know, to acquire more knowledge." is a pretty good "essence of".

#

And "Students learn through participation in project-based learning where they make connections between different ideas and areas of knowledge facilitated by the teacher through coaching rather than using lectures or step-by-step guidance."

#

Euclidean geometry happens to be all about construction (all the way from basic rules (it's how all the proofs go, they start from what they already know at that point and then build visually, intuitively)), it fits it.

sharp scroll
#

Ok I need to go to a PC and type shit KEK

sharp scroll
# pine stratus And "Students learn through participation in project-based learning where they m...

This sentence has problems. There's many people who do CS in high school that aren't able to get the "art" behind programming and classes are generally fueled with doing projects with current knowledge (you'll see many people in help channels unable to grasp the art that are doing CS everyday.)

When I was referencing earlier how we'd have to go through unorthodox methods to cultivate maximum output (not in programming in particular) I was thinking of Sudbury schools. The issue is being told the correct way to do things. The issue is not having room to make errors.

pine stratus
#

My teacher had me keep a notebook with my own proofs in it and I would then use those to construct more proofs. By the end I had my own little Euclid's Elements.

#

So I happen to have had a very good teacher.

sharp scroll
#

If we looked at our education system as reward/punishment system (like RL KEK) we're rewarding getting good grades, and punishing bad grades. Therefore, actions like doing extra studying on things that won't be on the test, will be punished as that will not provide you a better grade.

You can almost argue that our current education kills our students' curiosity to figure things out themselves, because curiosity is punished.

#

Then you look at the average person in America. They don't have curiosity of the world around them, there's generally no drive to know more about the world they live in. Whether that's physics, mathematics, economics, history, people will only learn what gives them reward (raises, etc.) and punishment (loss of time I guess? idk).

#

Our whole system from top down is created to punish the average person.

pine stratus
#

CS and math have a culture that is not being communicated without randomly having a good teacher. Part of both of those cultures includes a philosophical basis (means of reasoning ("critical thinking")) that some pick up implicitly, but perhaps it should be explicit (and it requires practice).

sharp scroll
#

Yep, and that's where we destroy the art behind it. We teach the right concepts, we teach one or two perspectives on a concept that has infinite perspectives. We don't reward a student for discovering these other angles.

#

Between two people, would you hire someone that failed 1000 times to get to the right answer, or hire someone that was told the right answer?

The first person not only has figured out hundreds of ways to go wrong, but also probably found suboptimal solutions and was able to get to the optimal solution. And it is only the first person that has the tools to take that step forward from the current optimal solution to something better

#

Not hiring specifically, can be more general.*

#

We destroy the art in STEM because we punish artistry.

#

Just how teachers punish students on tests who use their own methods to solve math problems.

#

Educators say one thing, and teachers say another. They are all wrong. The only people who understand what is going on are the ones most often blamed and least often heard: the students. They say, β€œmath class is stupid and boring,” and they are right. - from mathematician lament

pine stratus
#

While the idea of tests and such for certification is fine IMO (for hiring reasons), I believe that it should not be mixed with learning. That is, schools should not have tests other than for one to examine one's own ability (for reflection (not used to "move on" to the next stage)).

sharp scroll
#

Yeah I see the benefit in that

pine stratus
#

And this kind of is an issue I take with universities, which is that they have become the new trade schools, used to get a job. IMO universities should not be for getting jobs.

sharp scroll
#

But I think for this industry in particular, one of the biggest reasons I love this industry is project's role in getting that first job.

pine stratus
#

(especially if they are going to cost that much to many people, doing stuff not directly useful for getting a job is a huge waste of money)

sharp scroll
#

On an additional note, we punish the idea of being uncomfortable. And we see this super often with people who aren't able to get out of tutorial hell.

#

But that's probably not a societal thing. I personally find the fun in being in an uncomfortable situation where things can go wrong any moment (in terms of programming), but that's maybe me just fucked up in the head YEgrey_agonyLaugh

sharp scroll
pine stratus
#

As a researcher I see the fear put into other researchers by the school and publishing systems. It severely limits progress and it keeps me up at night, thinking of where we could have been by now.

#

They encourage safe, incremental improvement. No room for failure, when in research it's like 99% failure (which is why it's "research", not "production"). But failure is knowledge gained, which is the whole point...

sharp scroll
#

Public schools have the issue of having to make an environment where the bottom student can still thrive. At least colleges are able to set their own minimums, but sucks that they still have these problems as well :c

subtle owl
#

There is a lot of room within it

pine stratus
# subtle owl It is what you make of it

Yeah there are many paths. I just don't like the idea of "everyone needs to go to university." I don't take issue with individuals in it and what they get out of it.

#

More about providing alternatives. Right now it's all been funneled into one thing (which is causing (or comes from) supply/demand issues).

subtle owl
#

that depends on the country. In EU there can be quite a clear separation career paths depending on how many years you put in it

pine stratus
#

Yeah I needed an asterisk on that.

serene plank
#

Also mostly like where I am, rather then skills they be looking at whetever the person finished a computer eng degree or not

#

Like the job market where I am has a big chunk doing like that. I'm tired to study in the uni because I studied a different major

long narwhal
#

I don't think it is true that "everyone needs to go to university" or "doing stuff not directly useful for getting a job is a huge waste of money"
In the career-discussion channel there are frequently teenagers asking if they should go to university and the reply is consistently yes but is is often answered by users who did not attend university and can attest to how that is the more difficult route and hampers career development later.
Normally a university program will include topics that are not immediately relevant for the first jobs the students will have, but they might need it to see the context of the work they are doing, or it may become highlyrelevant for a subset of the students as they advance their careers.
I have not yet found a use for the management courses I had to take, but I strongly suspect I will in a few years, and I did find a use for the course on electrical circuits.

It is relatively easy to be an autodidact programmer, but what you can do with that programming strongly depends on what other skills you possess, and many of those (such as advanced math) are difficult to learn on your own.

long narwhal
copper cosmos
sweet dove
# copper cosmos This is a super interesting discussion that I kind of wish was a thread (to make...

update on the school language thing:
reminder: school wanted to check the option of replacing C# as the first language to teach our students, we wanted out language to be compiled as we teach python second year.
we had a meeting and chose kotlin with C# and go being runner ups from about 12 languages:
here are my summarized notes for the top 3 as well as a few other
C# -> while the language is great assuming the use of modern features, the language is not optimal for teaching a new programmer because most online free material is still teaching it as "Microsoft java" as a result most students got stuck writing some really ugly code to "work around the language". the language itself is fine now, but the worst past versions are holding it back
go -> great language all around with good free resources and good community, extra research into go oop needed(?)
kotlin -> great language all around with good free resources and good community, with the extra punch of basically one in 5 students wanting to make an app
we agreed to start teaching it in 2 years in addition to C# and phase out C# in 4 years assuming everything goes to plan

C/C++/Rust:
while these languages are great options for experienced programmers memory management is not something we want to teach very early,
fortran:
not sure why this was an option but I had to share that someone wanted to teach people Fortran in 2024
Haskell:
while the language is very good we do want to use the oop experience the students get from their first language to teach python and some of the more advanced material in it (my favorite python mantra is in python everything is an object and I just realized it's kinda hard to use without knowing what are objects, also I know technically some things are but it's oddly useful for teaching)

however I probobly won't be teaching there for that long as I still need to go to uni/find a real job sometime soon so if you want an update in 2 years ill have to ask one of the other teachers πŸ™‚

pine stratus
pine stratus
arctic marlin
#

Is there a collection of "best of" mailing lists from somewhere?

#

This is really one of the single best paragraphs about technology I've ever read. Not sure if this is the best channel, but it's quite remarkable.

arctic marlin
#

If you aim for "low hanging fruit," producing the most citations you can in a 6 week research project, you'll never produce anything worthwhile. The system is a massive pyramid and not a friendly place.

Repeatedly risking your entire career multiple times in a row, to produce genuinely original work, is not for the faint of heart.

pure fog
#

i think "programming koans" and "gems from the old mailing lists" are interesting teaching tools

#

i always found it enlightening as a learner to understand what came before, and how the current agreed-upon practices and standards came about

#

interestingly, i don't think lisp programmers write code like that anymore

#

i don't even know what that would look like in lisp... (sort (chop (compress x)))? i think that would be considered bad style for exactly the same reasons guido considers it bad style

#

in scheme of course you have the ! naming convention for "in-place" methods:

(begin
  (compress! x)
  (chop! x)
  (sort! x))

as well as julia:

compress!(x)
chop!(x)
sort!(x)

in python i sometimes use _inplace to indicate such methods, rather than requiring the user to rely on the type signature or docs:

compress_inplace(x)
chop_inplace(x)
sort_inplace(x)
winter spear
#

I'm a big fan of methods returning new instances instead of in place ops

#

Like pandas style is so freaking intuitive. Never use inplace=True. They just need to get their copy on write semantics working

pine stratus
pine stratus
pure fog
# winter spear Like pandas style is so freaking intuitive. Never use `inplace=True`. They just ...

They just need to get their copy on write semantics working

well that's the issue. to do this everywhere you need some pretty advanced data structures and/or compilation techniques, and even then there are performance hits.

there are some really cool paradigms like "functional but in-place" and "tail recursion modulo cons" as implemented in the Koka compiler, but that's still research language stuff and not something you can expect to see in e.g. clojure soon.
https://www.youtube.com/watch?v=6OFhD_mHtKA
http://jamesrwilcox.com/tail-mod-cons.html
https://www.microsoft.com/en-us/research/uploads/prod/2020/11/perceus-tr-v1.pdf

also, R has copy-on-write semantics for a lot of data structures, and it kind of sucks when working with bigger amounts of data. like it or not, pure functional programming is not "native" to our computers, and you need special compiler support to really make it effective.

00:00:00 - Introduction.
00:01:57 - Part 1: Koka: Demo, Performance, Status, Syntax, and Effect Typing.
00:35:04 - Part 2: Introduction to Algebraic Effect Handlers.
00:58:47 - Part 3: Theory of Effect Handlers and Efficient Compilation using Evidence Passing.
01:23:45 - Part 4: FBIP: Functional But In-Place algorithms and Perceus Reference Coun...

β–Ά Play video
pine stratus
# pure fog > They just need to get their copy on write semantics working well that's the i...

Yeah functional programming and other such high level approaches are things that require more work from the implementation. They need to be mapped to what the computer actually wants. They trying to juggle the reality of how the computer works, and humans writing correct understandable code. Not sure if pure functional is really an option in the end, but I think most code could be functional-ish and would only really benefit from it.

pure fog
#

that i agree with. it probably does students a disservice to introduce them to mutable data structures early in their education

#

mutability should be an optimization, not your default paradigm

pine stratus
#

Yeah I think it can be seen by when someone writes in a LISP for example. If they are just not even thinking about optimizations I think it becomes clear why they really like it. Not inplace is just very natural, just chaining things together, non-destructively. And ideas such as monads to help with that chaining idea even more (web dev seems to have moved almost entirely to this, but it's limited by language design (still better than not doing that)).

#

Not inplace design has also filtered backwards somewhat into languages such as C. In modern style there is the "pointerless" style which avoids pointers/inplace as much as possible, until it's actually needed.

#

Because it makes the APIs a lot more elegant.

arctic marlin
#

In place and immutable is largely the same thing.

#

Whether it's mutation of a variable or chaining returns, ultimately you have cause and effect. Operations and relations.

The key is that, immutable operations have a smaller scope of prior state, effect, response.

Vs side effects, which impact the file system, all sorts of rubbish.

#

Which is why what Guido said was so spot on. Domain specific languages inherently add "more complexity" vs the standard library. Expression based programming limits cause and effect to the standard library.

winter spear
pure fog
arctic marlin
pure fog
#

if i see frobs >>= unfrobnicate and i have no idea what unfrobnicate means. the monad laws are way too general for me to establish a mental model of un-frobnication

#

that's a big teaching issue in functional programming specifically, i think

#

the cognitive load gets really high, and the tooling just isn't there to support you

#

types don't help with cognitive load when they're heavily abstracted

arctic marlin
pine stratus
# arctic marlin Pure functional is possible. The issue is... knowing Scala/Haskell programmers,...

Yup, it's related to why LISP is not used all over the place. It attracts the type of programmer to metaprogram everything they want (or just in general make very abstract things). I think Clojure is the closest to breaking out of that. The language needs to attract people that make useful libraries for getting things done and not abstraction hell. It also does not help that in languages such as Haskell many developers start using their own symbols to mean different things, and if there is one thing we learned from C++ it's that operator overloading abuse is bad (and if you want that, then just use APL).

pure fog
#

fwiw idiomatic lisp nowadays does not look like that. much like how idiomatic python is not aggressively duck-typed anymore.

pine stratus
#

Yeah which is why I mentioned Clojure, it's pretty tame and easy to follow.

pure fog
#

i mean common lisp specifically

pine stratus
#

And since it can call into Java it solves some the library issue.

#

Common lisp is fine too, it's just a bit weird with tooling.

pure fog
#

lisp also is held back largely by its tooling, and the fact that you need good tooling for even basic productivity

pine stratus
#

Or lack of it.

pure fog
#

yea, that. python is in a pretty good place, especially now with vs code and microsoft being so pro-python

#

although from what i see in this server, vs code is not that easy to configure to work with virtual envs. so many questions about it here

pine stratus
#

I think the fact that many are unfamiliar with how to even properly format LISP code kind of shows there is a lack of good tooling for guiding on such things.

#

((((((And results in this misconception))))))

#

And not everyone uses emacs or vim.

pure fog
pine stratus
#

In my experience it's usually like this: ```clojure
(defn qsort [[pivot & xs]]
(when pivot
(let [smaller #(< % pivot)]
(lazy-cat
(qsort (filter smaller xs))
[pivot]
(qsort (remove smaller xs))
)
)
)
)

#

() is like {} in C

#

(Petition for Discord to add rainbow parenthesis for LISPs)

fallow terrace
#

first get them to actually syntax highlight LISPs on mobile >.<

pine stratus
fallow terrace
#

it's a wholly different client. it's a mess.

arctic marlin
fallow terrace
#

that's what you're intended to do. that's not duck typing, that's type inference.

arctic marlin
#

Tooling kinda is everything. IMO, you simply cannot do anything without a tooling community behind you... Scala/Haskell communities are simply too academic and developing tooling is beneath them.

pure fog
#

if you use paredit or parinfer, this is completely effortless and the )s just melt away. but if you don't, it's a nightmare

pine stratus
#

I don't do }}}} in C either.

pure fog
#

the hanging braces are pretty typical in c-syntax languages. they're frowned on in lisp because they would be literally everywhere all the time if you used them

#

since this is #pedagogy , what do you think of python's whitespace syntax from a teaching/newbie perspective?

#

i sometimes see people get confused about it in ways that would be more difficult in a {} language

pine stratus
#

I think both can cause problems. It's a text problem in general.

#

But it can make it less cluttered for non-beginners.

fallow terrace
void glade
#

someone help me

#

It's not right?

misty dirge
misty dirge
pure fog
#

(what if this channel was renamed to #teaching? it might cut down on offtopic messages from people who don't know what "pedagogy" means and just see "programming")

pine stratus
misty dirge
pure fog
pine stratus
#

"Teaching methods"

misty dirge
#

#pedagogy-no-questions

pine stratus
#

"#pedagogy-you-are-asking-in-the-wrong-channel"

fallow terrace
pure fog
#

oh yeah the 3.11 errors will be great for beginners

#

(once they learn to actually read error messages anyway)

pine stratus
fallow terrace
pine stratus
#

Personally I would like to see a non-stacktrace plain text message at the top with a snippet containing the error and surrounding lines. With plain English (/ multiple languages). The more complicated stack trace follows.

pure fog
#

i always hated how the error message was at the bottom

#
ValueError: you broke it.

Traceback:
    ...
pine stratus
#

Surrounding lines to make it easier to spot.

pure fog
#

the surrounding lines thing can be overboard though

#

usually set --tb=short in pytest because the default "long" output is way too long

pine stratus
#
--------------------------
def foo(x)
  x = 10
    y = 20 <-- here
  z = 30

--------------------------
fallow terrace
pine stratus
#

A little window pointing to where and a message with it.

#

(Only like +- 2 lines around)

#

But either way, I think the main error should be at the top. And maybe even a blank line in between to really get their focus on it.

distant reef
winter crest
#

Hi, I am a senior high school student, and I'm teaching myself how to code. In an attempt to be work ready before college.

Currently, I know how to use python, I understand the basics/fundamentals.

Questions:

  1. How do I get motivated to learn, If I don't want or haven't found any topics for me. (But I have decided to do backend dev)
  2. After the basics, what should I learn next?
  3. Any self teaching tips?
sharp scroll
#

Uhh for #1, why did you start programming to begin with?

winter crest
winter crest
sharp scroll
viral heath
#

I am teaching some kids 11-17 year olds in a club to code in python, but I don't know what project to teach them first.

I was thinking maybe pygame (snake or pong), some ethical hacking (spamming scammers with false information, maybe selenium or requests), or perhaps automation of school work :)

winter crest
#

automation of school works sounds fun

viral heath
#

Tho how im gonna do that no idea

#

Maybe convert text to a word document, sort files for them

sharp scroll
#

You can probably start with like math assignments

misty dirge
viral heath
#

Something like this, tho since i recorded that i learned to make requests.

sharp scroll
#

God I hope the information in that video is not real..

viral heath
misty dirge
#

Anyway, the topic is "What are good programming activities for teens with no programming experience", and I think Turtle is a go-to for that.

viral heath
#

Never heard of turtle before, what is it ?

misty dirge
#

!d turtle

#

that link isn't very helpful if you haven't heard of turtle, I guess. but it comes with Python, and it lets you make simple animations by programming instructions

viral heath
#

sounds interesting, the thing is that they signed up for "advanced" coding, so this is a little simple but definetly something i'll look more into.

misty dirge
#

so they do have prior experience? what experience do they have?

viral heath
#

Some off they do, I've taught all of them basic fundamentals.

For statements
If statements
While loops
Strings and intergers
Arrays

misty dirge
misty dirge
viral heath
#

I'll have a look into it

copper cosmos
pine stratus
#

Mindstorms is from the creator of the original turtle in software (Logo), Seymour Papert.

#

Turtles are a class of educational robots designed originally in the late 1940s (largely under the auspices of researcher William Grey Walter) and used in computer science and mechanical engineering training. These devices are traditionally built low to the ground with a roughly hemispheric (sometimes transparent) shell and a power train capable...

#

Mindstorms: Children, Computers, and Powerful Ideas is a book by computer scientist Seymour Papert, in which he argues for the benefits of teaching computer literacy in primary and secondary education. It was published by Basic Books in 1980, and republished in a new edition by Basic Books in 1993.
The Lego Mindstorms programmable construction s...

misty dirge
pine stratus
#

As in no inputs?

ripe folio
#

The computer only does as it is told, period.

candid dew
#

Skrerederere

ripe folio
#

This is something to grasp in of itself, where beginners run into the issue of the computer not doing what you want it to do

misty dirge
pine stratus
#

Closest we have to solving that is the auto coders like copilot.

misty dirge
pine stratus
misty dirge
pine stratus
#

I think there is, but it depends on how far you want to take it. Could go all the way to path finding and such.

#

And it can also teach some mathematics in the process. Specifically some trigonometry and linear algebra (just the basic idea of vectors and matrix transforms). And some mechanical knowledge*.

#

IMO it transfers well to just software, no robots, because if one starts in just software and is greeted by a terminal it can be hard to get a feel for what is happening, it requires printing what is happening (or learning to use a debugger, etc). Robotics sort of give real life print (seeing something happen) debugging for each action taken.

#

I find that that initial hump to get over is serviced well by robots (and not getting stuck on syntax and other compiler errors which Mindstorm's visual programming language avoids).

#

Plus making it less boring for many, which might make it worth it on its own.

#

A really cool way to get into algorithms is to make a robot that sorts some colored lego bricks. If their implementation does not work (or does), it can be seen visually how it's functioning.

misty dirge
#

I removed four off-topic messages. Please refer to the channel description, and DM @viscid mural if you have any questions.

main axle
#

should i place a max time for every programming problem? Because the longer time I spent, the less likely i am to solve that I just cannot think of any alternative ways of solving or ways to debug. and it is frustrating that it dissuades me.

noble aurora
#

yes, it's not useful to just sit and bang your head against a problem if you fundamentally know the techniques

misty dirge
fluid bluff
#

Guys, what is fundamentals important for be a good developer?

#

learn about hardware, architecture of computers, OS,know how things work behind
, work in make much difference?

fallow terrace
#

i don't think those ideas should be taught in introductory programming. they may be interesting, but that seems like a great way to overwhelm new students with "irrelevant" details when they're just getting started.

lapis frost
#

anyone can help me at c++?

fluid bluff
#

or learn algorithm, data structure, programming language and then focus on the fundamentals behind the scenes?

fallow terrace
lapis frost
fallow terrace
#

of course, there are certainly fields where knowing about that is necessary.

fluid bluff
fallow terrace
#

i find their python roadmap quite weird. i definitely wouldn't teach a class from it.

fluid bluff
#

in whats topics?

fallow terrace
#

topics on the roadmap?

fluid bluff
#

yes, because i am following the roadmap of python kk

fallow terrace
#

it introduces algorithms and data structures before classes and modules, for one. the best ways to model and understand those data structures often involve those latter two.

#

i have a ton of other complaints, but i don't want to diverge from this channel's topic.

fluid bluff
#

so, my ideia is study for roadmap python and after study for roadmap backend

waxen shoal
#

Hey guys. A buddy of mine who just started learning Python reached out to me about tips on how and where to start properly. As i do not have a full overview of available tools and platforms for learning Python, im reaching out to you guys. As of now he’s on the Mimo app doing the Python course everyday, but he is not sure if he is doing himself the opposite of a favor about creating the fundament like that. Paraphrasing him: are your thoughts on the Β«bestΒ» (in a technical-pedagogical) method for learning Python, when its something that is done consistently an hour every day at the evening?

misty dirge
waxen shoal
#

You’re right about that! I had a look on the site and forwarded it. Its a great site for my own part as well (nice sorting filter). I totally agree about the processual-applicative factor, though it seems he was preoccupied with an idea about starting with the Β«rightΒ» premise. The guy probably has a hangup coming from the amount of time he has versus his goals

summer laurel
#

please anyone give coding courses please

misty dirge
versed phoenix
#

Use Spike instead of Ev3

vale current
#

So I raised a discussion elsewhere, and it turns out that it might be fitting for this channel - what sort of things would yall like to see in a language designed purely for teaching programming?

One point raised was the use of introducing a good REPL early on in the process. Maybe one with the ability to load scripts into the REPL (like Haskell's ghci) could be helpful. You'd be able to write actual scripts, and then poke around and mess with them in the REPL.

#

e.g I might have ```
fun some_function()
blah some code

some_var = some_value
in an imaginary language, and in the REPL you'd have something along the lines of

:load some_file.blah
some_function

#

but concerns might be confusion between using the REPL, and moving on to actual scripts

elfin nacelle
#

i agree with the concerns. as it is, i strongly discourage jupyter for similar reasons. it introduces extra complexity and new common pitfalls due to how code is run

misty dirge
#

As we discuss this, remember that since we're talking about a language that's just for education, we can suspend practicality.

I would want the language to be statically typed with an option to validate types before runtime. And I would want it to support multiple paradigms. At least imperative and some elements of functional. I'm not sure how I would want OOP to appear in the language, if at all, since there's so much debate about which elements of OOP are useful and how languages should express them.

sharp scroll
#

Start coding.

#

Growing a reliance on tutorials will screw you long term.

vale current
pine stratus
# vale current I was imagining a language more functional in nature, for the reason that at the...

It sounds like you want DrRacket. https://www.youtube.com/watch?v=l6VuYdQHhE0

At code clubs for young people (6-16 year olds) people typically start with a block-based programming language such as Scratch. When they are ready they move on to a text-based programming language, usually Python.

But what about Racket? It’s got a great environment, it’s good with graphics, pretty concise (so not too much typing) but I’ve not ...

β–Ά Play video
vale current
fallow terrace
#

to the extent of my knowledge, those are necessary for the sake of "formalizing" IO

#

but if the goal is teaching, you don't need a rigorous explanation for everything

noble aurora
cinder vortex
#

yeah i would recommend taking on a mini-project

#

try learning the csv module

#

its a good starter to databases and helps you understand how to parse data

weak mortar
#

Alright

misty dirge
vale current
slender galleon
#

made tictactoe in python took me 2 hours

misty dirge
steep kindle
#

hello

#

does anyone think they could help me

#

i was watching a youtube video on how to make an app and i followed everything but it keeps crashing

noble aurora
ebon portal
#

okay

#

i need to fix my shit idc what anyone thinks im going to totally immerse myself in programming i have a lot of time on my hands now and honestly i need the best resources so i can fully immerse myself

#

best books, websites, tutorials, podcasts, magazines, news articles and forums

#

i need total immersion. I need to force myself to use python as much as i can anything that will make me program.

#

any suggestions i dont care what they are just go. Your best resources not just for learning but for anything and everything

#

even small things idc

misty dirge
#

@ebon portal keep in mind that this channel is for talking about teaching techniques, not for giving tailored learning advice to learners. but I don't think this "hard core" approach that you want to take will actually have better outcomes than just practicing programming daily/a few times a week.

ebon portal
#

yes i want to practice programming daily

ebon portal
ebon portal
misty dirge
ebon portal
# misty dirge have you been reading elon's twitter, or something?

listen can i just do things the way i want? every single MEGA successful person ever has worked long crazy hours and hasn't deviated from the task at hand. I do not care what elons expectations are for his employees all i know is that as an individual i have set some standards and expectations for myself and as far as im concerned i can do whatever i please regarding myself as person with expectations providing its not harming others if you dont have any good resources to recommend then just please be quiet and stop fixating on my obsessions' and let me be the master of my own choices.

worldly dewBOT
#
Resources

The Resources page on our website contains a list of hand-selected learning resources that we regularly recommend to both beginners and experts.

noble aurora
lyric rover
misty dirge
noble aurora
pure fog
#

it is widely accepted that mutability and side effects can cause serious reasoning difficulties in larger codebases, but pure functional programming comes with its own set of problems, and the industry has clearly decided that mutability and un-checked side effects are the lesser evil

lyric rover
pure fog
#

since this is a pedagogy channel, i think that's a particularly difficult thing for beginners to work with

#

even experienced programmers struggle with it. it's a completely different skill set to some extent

#

that said, i think this is mostly an indictment of functional programming education. i think more emphasis on idioms is required

#

cs 3110 is a great example of how to do functional programming education right imo, and puts most other resources to shame

#

and i think the reason is that it spends a long time and a lot of effort encouraging you to get comfortable with the idiomatic usage of functional programming basics, rather than push you through to advanced constructs and high levels of abstraction early on

#

(this is perhaps in part due to ocaml being somewhat less abstraction-friendly than haskell)

lyric rover
subtle owl
polar finch
#

I'm a totally noob. Personally I find oop harder to wrap my head around, and for a long time I had a tough time understanding why and when you'd want to use a class/inheritance

#

Idk if it' a good way to learn but I find it's most helpful when looking at oo code I don't understand to make or draw a simplified flowchart of the classes, functipnd ect and how they interact

#

The value of oop only really sunk In when I saw some poorly written code that had everything on one script with no classes and seeing how much of a mess it was, to read and test parts of it.

long narwhal
#

I think perhaps there is a distinction between teaching python as a tool to accomplish some task, and using python as a tool to teach programming.
I have taught python to research scientist as a tool for data analysis, and in this application OO interfaces are so ubiquitous I talk about it very early.
By OO interfaces I mean things such as string.replace, numpy arrays, and the OO interface to matplotlib.
I give a short introduction to custom classes, but do not expect my students to actually make any.
The use case for my students barely extends beyond pure data classes, and dictionaries serve them well as an OO approach to data management without the added complexity of full classes.

On the other hand, if I was using python as a tool to teach programming I think I might spend more time focusing on FP, and delay with OO concepts.

misty dirge
#

@misty swan @winged shadow doesn't look like this is on topic

winged shadow
#

Yeah, which is why we decided to move to another server, apologies for the spam – initially we were going to be talking about some principles and design choices

misty dirge
winged shadow
#

πŸ‘

lyric rover
long narwhal
# lyric rover Finding your posts valuable. In some cases, even data scientists need to def cl...

I think one of the most interesting parts of the python discord is that you get to see the breadth of applications in python.

Let me share where I am coming from: My field is in material science, and the amount of data generated by scientific instruments (electron microscopes, advanced X-ray sources, etc.) has increases by orders of magnitude over the last decade. Software has not kept up, so programming is in many cases the only tool available to access the data and it turns out that it is easier to teach sufficient programming to material scientists, than it is to teach sufficient material science to programmers, thus me teaching.
One of the datasets I work with is a 200 gb array of intensity values. The array has 5 dimensions, 2 in real-space and 3 in reciprocal space (Fourier transform of real space). Approaching this data requires a very different strategy compared to 200 gb of images from the Amazon rainforest. As as an example, we largely do not use machine learning, because we have physical models which we can directly compare our data to.

I agree with you that OO is quite practical for many data scientists, but in my specific field this is less true that in many others.

odd mirage
long narwhal
#

I did not use any online resources, partially because I did not find any that were suitable for the work my students would be doing, and partially because I wanted to give them examples that were relevant in our field.
My students were a mix of PhD candidates and postdoctors, which is quite different from first year students.
Will your students go on to a programming/CS degree, or are they engineering students in a different field?

I am sure there are others in this channel that teach first year students, and can give you advise regarding online resources.

odd mirage
hallow patrol
#

does anyone know brainfuck?

fallow terrace
#

many do. what does that have to do with this channel?

lyric rover
vale current
eager narwhal
#

What is better, an one liner or a 4 line code with a comment?

eager narwhal
lyric rover
#

You got to show the code for others to say which is better.

#

If it is not doing something useful, or not even correct, why it is going to be good?

vale current
eager narwhal
#

ok

wide shell
#

I teach both an intro to programming (with Python) course, and an intermediate Python course using curriculum that I developed. The intro course ends with students building a small project. I encourage advanced students to use the pygame package to build interactive programs - typically games. The students get to understand the use of objects in the pygame environment.
The intermediate course is focused completely on OOP. The general approach is to first explain the basics of OOP, classes and objects with many small examples. Then I use the pygame package to explain the core tenets of OOP. I provide a package of GUI elements that I have written, so the students can see how to use OOP to build these GUI elements. Their final project is to build a game that uses multiple OOP constructs. Students seem to enjoy this approach very much.

arctic lion
#

i feel like i'm missing a step in the 'layers' of programming ability. Self-taught. I can 'script' in languages i'm barely familiar by figuring things out like the basic structure of this languages if/else/for/etc like powershell, etc. I can program pretty well in python, I understand objects and scope decently well, i have a harder time following, say, decorators or the various versions of * / ** before/after variables... but the most recent 'big steps' I've found are UML diagrams and design patterns... Still learning on those... but anyway, that's all the leadup to my actual question.

#

what are the kinds of keywords/phrases I need to be googling? I seem to have outgrown 'learn python' in it's basic form, because it's not the language I need now but the design. But 'software engineering' is too much of a buzzword to find the signal in the noise, and I'm just not sure where to go and what to google for materials on learning the 'next step'

#

UML and design patterns are tools, but what's the name of the field that studies it and how / where do I learn more in that direction?

misty dirge
arctic lion
#

Understood. Thanks!

wide shell
#

Hey @misty dirge, are you still collecting things that are difficult to understand in Python. If so, I have one more for you.

misty dirge
wide shell
#

Maybe so. I recently had a class where the main topic was encapsulation. I discussed direct access vs getters and setters. I finished with a discussion of Python properties as a sort of compromise. There is probably a good reason for this, but it's difficult to explain to students why the setter has a decorator that is named @variable.setter, but the getter has a decorator named @property.

It would be much easier to explain if the getter was named @variable.getter

misty dirge
wide shell
#

Do you know of any reason why it couldn't be called @variable.setter ?

misty dirge
wide shell
#

Unfortunately, I gotta run. Family obligation. I'll check back later today. I look forward to hearing what you think.

sullen rapids
#

rip

long narwhal
# odd mirage They are in geodesy and geoinformatics, none of them will go on to programming/c...

I don't know how much you have thought about or are involved with the rest of the study program.
My experience is that many engineering students study python in the first semester, and then use if very little until they have to plot or somehow visualize data in their thesis. (This is a big improvement over the situation when I started, when we learned Matlab.)
I want to note that this is often a non-trivial task, as the data is often not available in a convenient format. I use a table of x-ray form factors as an example (https://smilgies.github.io/dms79/x-rays/f0_CromerMann.txt), and reading this (as with much output from scientific instruments) requires writing a custom parser. Creating a plot that clearly communicates important aspects of a dataset is also non-trivial, particularly as there is a large amount of syntax involved in specifying all the different aspects of a plot (figure size, dpi, axis labels, data labels, axis ranges, suitable colors, linestyle&linewidth, scatter plot vs line plot, uncertainty, etc. )

If I was teaching first year engineering students, I would set these things as desired learning outcomes, and try to structure my teaching with that in mind.
(I hold the firm opinion that it is better to teach the OO interface to matplotlib, because this interface makes it much easier to produce high-quality figures. Mixing the functional and OO interface causes much confusion, and I find it better to avoid the functional interface entirely [although students get confused anyways as they use online resources].)

That said, I am just a semi-random voice on the internet. If you want advise as to what the students should learn, you should ask your local PhD candidates what they wish they had learned.

winter spear
wide shell
#

Thanks for checking. Do you think it would be possible to allow @variable.setter as an alternative. Of course @property would still be needed for backwards compatibility. But I think @variable.setter would be both clearer and much easier to teach.

winter spear
winter spear
neon pasture
#
class X:
    x = property()
    @x.getter
    def x(self):
        return 1
    @x.setter
    def x(self, v):
        print(v)
```this does IIRC work, but I would stick with teaching the traditional style, even if it is perhaps less intuitive
winter spear
#

You could, inside the class def, instantiate a property, bound to any name, then do @variable.getter, etc on any argument-less method in the class def and get same result

winter spear
neon pasture
#

could try explaining it as something to the tune of: "since you almost always want the getter set, python has a shortcut where you can directly create the property with a getter, and optionally add a setter and deleter"

winter spear
#
class X:
    x = property()
    @x.getter
    def foobar(self):
        return 1
    @x.setter
    def bah(self, v):
        print(v)

I think it's important to know that the methods you decorate also can have any name

#

Tbh when I first started, property confused the heck out of me

#

For that reason

neon pasture
#

you need the same name in all cases otherwise you get incomplete properties assigned to various names

winter spear
#

I'm wrong

#

But if you pass them as fget etc in the direct Instantiation you do not i.e. property(fget=foo)

#

@neon pasture actually no...property implements __set_name__ which will enforce the name at the end of class creation no?

def __set_name__(self, owner, name):
        self._name = name
#

So while getter and setter may create a new type and override the name, __set_name__ will enforce the original at the end right?

#

I'm on mobile or id check in the repl

neon pasture
desert ingot
#

Does anyone have good links or sources for python: classes, objects, files

#

I think I got the hang of writing classes + methods but I want to thoroughly get the grasp of Object Oriented programming by practicing on my classes + file reading/writing exercises

misty dirge
#

when you say you want to learn "object oriented programming", what did you have in mind? because OOP encompasses a number of design concepts, some of which Python doesn't embrace.

desert ingot
#

That would be helpful as well. Suppose if you have a main program, separate to a class program, with a txt file all in one.

#

And you want to read inputs from the main, using a class program to take those inputs and put them onto a file. Would I be right to see the class as a form of bridge?

misty dirge
#

not sure what you mean by a "class program". the main design paradigm in Python is procedural, and classes are there if your procedures are easier to conceptualize in terms of a custom type of data.

#

by saying "class program", it sounds as though you think of classes as executable units (a la Java and it's "main methods"), and that's not really how Python works.

floral beacon
#

Does anyone know of any games that make use of Python as a mechanic (like inputting stuff into a terminal to solve a puzzle or get past a boss or smth)? Doesn't necessarily have to be one that teaches you Python, more I'm looking to practice what I've learned in more flexible ways than my textbook practice assignments.

#

Like 90% of the programming tag on steam is drag-and-drop or graphic based logic-type puzzles which I don't want/don't enjoy/don't find useful

misty dirge
#

@floral beacon this channel is not for resource suggestions

floral beacon
misty dirge
stone furnace
#

i am new to discord, how do i use it??

misty dirge
steep halo
#

i like the concept but I think i need a little more help

pure fog
remote turret
#

okay thank you

unreal hamlet
#

Why the help system changed? I don't like the new one :(

misty dirge
winged sigil
#

start by thinking about what you want. make a step by step process of what has to happen to get from where you are to where you want to be.
then research steps you aren't familiar with or look for alternative routes. the rest will come over time.

#

this gives you a better sense about how each line communicates with eachother and how the code will function, allowing you to tackle more complex situations with ease

distant reef
#

Welcome to the life of a developer...

#

The actual typing out the code is the least I do in a day

lyric rover
#

that is not bad, as long as the 'how' can be transferred to knowldege, not just a one time thing.

jovial spire
#

Hey guys

#

Idk if this is the right place to ask this but

#

Has anybody done cmu cs academy

#

If so, could you prove me with answers?

misty dirge
jovial spire
cinder vortex
#

to what extent should i learn before i can start teaching programming to kids and/or teens?

ripe folio
#

Interesting, I actually really like this question. In my opinion, you should probably get quite far before you start teaching (note: there's a difference between teaching and helping) even if they are just kids or teens.

I think you should start by just helping others - this server is a great place to start. You'll learn more yourself and figure out what sort of explanation people tend to understand. The reason I think you should get quite far, is that the more you know and deeper understand the language, the easier it will be for you to reword explanations for things so that they understand.

For example, if you need to explain a topic you only understand on a shallow level, then say your student is not able to grasp the explanation that you were given. Without a deep understanding you will not be able to explain things differently so that this student understands

pure fog
#

+1, i think this server has been a great way to learn how to teach to some extent

#

not just answering questions, but also reading other people's answers to questions and observing what works and what doesn't work

flint goblet
# cinder vortex to what extent should i learn before i can start teaching programming to kids an...

I disagree with Bluenix. Granted, I have zero experience or evidence on which to base my opinion, but: I think you need to know just a little bit more Python than you intend to teach. Instead of becoming a Python expert, you should become a teaching expert. I have no idea how to do this πŸ™‚

But teaching is a skill of its own, and is orthogonal to -- and IMHO, way more important than -- knowledge of the subject being taught.

pure fog
#

e.g. it's harder to use the socratic method if you aren't deeply versed in the subject. but you can more take the approach of being a fellow learner

flint goblet
#

you can start with the socratic method, and when the student reaches the limit of your knowledge, switch to fellow-learner mode πŸ™‚

long narwhal
#

On a related note, I believe there are many online tutorials of poor quality because the authors believe themselves able to teach when they barely understand the contents themselves.

flint goblet
#

I believe there are many online tutorials of poor quality because the authors believe themselves able to teach when they, in fact, do not know how to teach (or write).

fluid bluff
#

Guys do you make resume when are studying a book?

misty dirge
vale cedar
#

I wanted to start with learning data science but I am literally confused where to start with. Note that Idk python

fluid bluff
fluid bluff
sharp scroll
#

Typically to retain book stuff, I take notes to the point I don't really ever need to go back and view the notes again. Since the material been through my head so many times while taking notes.

fluid bluff
#

so

#

what i make is summarize each topic in the book

sharp scroll
#

I like to think that most books are aiming to express a single idea.

#

Using your notes to be able to link all these individual topics, to make up this idea is what I try to do with my notes. Not necessarily just summarize every section, but try to connect all the pieces together.

fluid bluff
#

the pieces more important ready?

#

because in programming you dont remember the code of head, so i create a note for each thing that i will study

#

but i will focus in the parts more important of book.

sharp scroll
#

I mean books where you're just picking up syntax moreso than the theory, then yeah there's not really that single idea the book is trying to express per se. So most programming language books can be considered a syntax glossary in a way.

Kinda was more leaning towards more theoretical books.

#

If you're just aiming to pick up the syntax of a language, like how to make variables, create functions, create classes, etc. That's definitely piece by piece stuff. But the next level of how to use these tools cohesively, in an effective and efficient design, that's moreso authors trying to express how their way of design is better than the alternatives.

fluid bluff
#

understand

#

what many page you read for minute?

#

and you can absorb this content?

sharp scroll
#

Uhhh, I don't really go by pages just because different books can have radically different amount of words per page to begin with.

#

I'm average though (or I'd like to think) in terms of wpm

fluid bluff
#

in first time?

sharp scroll
#

It depends on the type of book really. Novels/Stories/History, I just read for fun the first time, and then I go back to fill in the blanks. For more STEM books I spend like 1/3 the time reading, 2/3 the time note taking, then once I've finished like my session of reading for the day, I go back to the notes and try to reorganize it, make it make sense kind of thing.

#

The notes make my reading take a while, especially because for STEM books I almost never go back to read a second time.

#

Other more interpretative books I may intend to read multiple times.

fluid bluff
#

ready, me too

#

most of the time is taking notes

#

but do you prefer see course or read a book in programmation?

sharp scroll
#

Yep. WPM in writing is typically slower than in reading.

sharp scroll
#

Books also just happened to be super accessible for me. Since I moved to San Jose (in Silicon Valley), nearly every library has a fuckload of technical books.

fluid bluff
#

cool

#

i want read books fisical but in brazil just pay

#

and for read i use on oreilly

#

but read on pc is tired

sharp scroll
#

Courses are generally not complete in terms of ideas. And way too many of them are made by people with a criminally low amount of professional experience. I just kind of cringe now thinking about courses, because the books are generally made by people with decades of experience, and it being reviewed by dozens of people with the similar level of experience.

#

That being said, some books are also made by low experience people. Like CTCI, was made by a person with 3 years of total developing experience over 15 years ago. Which makes sense when you look at the book and how shallow the book is in terms of DSA theory.

fluid bluff
#

yes, agree

#

about courses in general, some are good, but others pass content very weak and use much copy for sell.

sharp scroll
#

If you are interested in a certain programming book (or multiple), you can ask me for PDFs for them. I have like, quite literally hundreds of thousands of PDFs of programming books. Hundreds of 2023 pre-releases as well.

fluid bluff
#

but now i have a list for read books

#

what i need is just read kkk

sharp scroll
fluid bluff
#

what area of programming do you like?

sharp scroll
#

Hmmm, I've been really interested in AI/ML the past couple of months.

#

But have been reading a lot more networking related stuff for work recently.

fluid bluff
#

cool, i like IA and ML

#

I'm studying with an IBM course

queen heron
#

I've always had 2 goals when following any tutorials/books.

A) Try and recreate the exercises afterwards without looking at the book to see how much I retained
B) Try and expand on the exercises to introduce my own ideas/features

#

I've found this has helped me greatly

fluid bluff
#

cool friend, i will follow your leads

queen heron
#

"Don't practice until you get it right. Practice until you can't get it wrong"

arctic pike
#

How important is contributing to open-source projects, and how often should you?

flint goblet
#

How important is giving to charity, and how often should you?

misty dirge
#

@arctic pike @flint goblet this isn't about pedagogy

flint goblet
#

indeed

ripe folio
fallow terrace
#

because you need to be able to explain things in ways that work with a number of different people who think differently

distant reef
#

I think there are concepts that you'll never have to know, no matter how much Python you know. You can still use Python to teach those concepts, but in that sense you'd have to go beyond what you'd ever need to know in Python

lyric rover
#

If someone doesn't know Python very well and try to teach me Python, please get off my way, no matter how much you know about teaching.

sharp scroll
#

Sounds like the average high school teacher.

lyric rover
#

make sense. πŸ˜„

misty dirge
echo maple
#

Hi all! Would you guys be able to recommend some Python books that you guys found valuable? I'm looking for something that talks goes deep into Python internals as well as the "right" way to code in Python. Something that ties things to lower level stuff - compiled code, hardware will be great as well, but more of a bonus. Thanks!

vale current
#

I think, at least, it depends on what you're trying to teach. You don't need to know all of the ins and outs of python to be able to teach it, at least in my opinion. Teaching is also a nice way to get to learn more about the concept yourself.

misty dirge
fluid bluff
#

Guys anyone know any channel on youtube that have videos about python advanced or intermediare:

#

I was taking a course at O'reilly and my free trial ran out.

misty dirge
#

@fluid bluff this channel is not for resource suggestions. please do not ask for resource suggestions in this channel again.

fluid bluff
#

sorry

worldly dewBOT
#

:incoming_envelope: :ok_hand: applied mute to @regal shore until <t:1670171993:f> (10 minutes) (reason: duplicates rule: sent 4 duplicated messages in 10s).

The <@&831776746206265384> have been alerted for review.

weak mortar
weak mortar
sly sleet
#

I have been using it for maths and learning DBMS, it's gives very very accurate answers

#

That and very easy to understand

#

Great for preparing for exams

noble aurora
#

that seems contrary to general accepted practice

stone juniper
#

it's only a language model; it doesn't know anything about whatever you ask it
it should be perfectly happy to give you nonsense answers if it decides they're consistent with something it read somewhere else, not necessarily even a text on the topic you're asking about

sly sleet
idle bay
#

HI. im new to learning python and coding in generall. i think my way of lerning is bye doing. But for my question: im struggling to find the metod/function to even try to write the code. in my head i know how to solv it but i dont know how to solv it in code

sweet yarrow
#

how do you solve it?

sharp scroll
#

Try looking at the source code of the function.

misty dirge
leaden spruce
#

Apologizes

slate pike
#

hello, I'm new to machine learning and would like to get help on how I can start with it please

misty dirge
weak mortar
misty dirge
green axle
#

I consistently loose when playing lotto... I must be good!

sly sleet
floral phoenix
#

Hello, I'm currently learning python. I do understand the definition of function, loop ect.. But when asked to practise I rarely complete the exercise and it unmotivate me? Do you have any tips to improve logic and not loose motivation ?

sullen stirrup
#

@floral phoenix - I like using Code Katas as a learning tool since it lets you solve small, complete problems. Pick one problem, then try and solve it. If you can't figure it out, google the answer then try implementing it (not just copy/pasting, but actually solving it using the solution as a base)

floral phoenix
sullen stirrup
#

check out Codewars.com or leetcode.com for two examples of the idea, but it's basically just short problems where you solve a puzzle for arbitrary input/output

winged cairn
#

@floral phoenix i know the feeling

#

Same here

sullen stirrup
#

I think the trick is just to like, start small - don't go 'I'm going to solve twenty problems!'

floral phoenix
floral phoenix
sullen stirrup
#

I also would recommend trying out maybe Automate the Boring Stuff - it's a good course,available free online in txt form and covers a lot of real world stuff

floral phoenix
sullen stirrup
idle frigate
#

say I have a project

#

is it good practice to only have 1 class or 1 function per file?

#

I feel like it's easier to track what comes from where and how each class and function relates to the others

subtle owl
compact sedge
#

reply to this with the best python reference book or cheatsheet you have used or still using

misty dirge
#

(CC @sullen stirrup)

sullen stirrup
#

Apologies

ember quarry
#
Please express your opinion on the following case: Your CEO recently became
aware that your company has an extensive dataset of past online customer pur-
chases and would like the company to develop an online product recommenda-
tion system. The CEO asked the data science team leader to present a detailed
work plan including resources (employees, computer resources) and a very accu-
rate timetable with the expected required duration of each activity until a work-
ing system is operational.```
Would you guys say the CEO shouldn't do this?
misty dirge
ember quarry
misty dirge
ember quarry
misty dirge
#

@ember quarry I thought this was #career-advice--please remove your messages from this channel and ask your question there.

ember quarry
#

ok

misty dirge
#

Does anyone have a programming pedagogy topic in mind? (Not a resource request?)

slim heron
#

Hello, I'm a teacher and will be teaching year 12 and year 13 programming next year. Can anyone recommend a place to get lesson plans that align with a certain curricular which are easy to follow?

slim heron
sage jasper
#

reminder, this channel is for the discussion of pedagogy (teaching)

subtle owl
#

!rule 6

worldly dewBOT
#

6. Do not post unapproved advertising.

soft heath
#

I have been seeing people during AOC use data classes. Never used one myself, but it seems very similar to the idea of a struct. Is that the case? Or do data classes have more/less functionality etc?

misty dirge
weak mortar
#

Hello, Any good suggestion for udemy Python program for beginners

soft heath
pulsar wedge
#

help me in fisxing this plz

misty dirge
pulsar wedge
#

ok

jovial sun
#

what does this channel mean?

#

ah i read the desc

jovial sun
#

this is the perfect place for me to rant about programming topics amazing

misty dirge
jovial sun
#

ay

#

am i not allowed to say oop is bad and this is why?

#

whatver your gonne say you should prob add it to the description of this channel

misty dirge
# jovial sun am i not allowed to say oop is bad and this is why?

this channel is about teaching techniques. not programming paradigms.

if there's something specific about a course that you're taking that you dislike, you can talk about how you think that course could be improved. (from the perspective of the techniques the instructor is using. not "it's too early in the morning" or "I dislike the instructor personally")

misty dirge
jovial sun
#

dont they go hand in hand, a programming paradigm is a set of rules to solve a problem, i think teaching people about diffrent set of rules to solve a problem fales under teaching techinques

misty dirge
#

whether you like it or not, OOP is widely used in industry, and therefore students need to learn it. this is a channel where you can talk about methods and practices for teaching it, and other programming concepts. not for debating the validity of said concepts.

jovial sun
#

lets say that you need to learn it, that still doesent mean that oop is a good programming paradigm it just meanst its widely adopted

misty dirge
#

this channel isn't a place for debating that, is what I'm saying.

jovial sun
#

isent that kind of odd? because nobody will have the same ideas about a topic if everyone is just gonne present there ideas and nobody is allowed to have discussions about which idea is better how can anybody improve there ideas, if they are not allowed to get critizism

misty dirge
#

this channel is a place to debate whether or not a given teaching technique is good or bad. but OOP is not a teaching technique--it's a programming paradigm.

jovial sun
#

can you define teaching technique in your own words?

misty dirge
#

the approach that an instructor uses to convey a new concept to a student.

jovial sun
#

yea your right that doesent fall under that

#

what a shame, is there a channel about that?

misty dirge
#

not really. sometimes programming paradigms come up in #internals-and-peps (which used to be called advanced-discussion)

jovial sun
#

btw even tho this is programming pedagogy can i use math as a methaphore?

#

for example in elementry school they teach multiplication by letting you remember all the solutions in a given range of nummbers instead of learning the fundemenatl way of how multiplication works

#

prob gonne use algebra 1 as a methaphore

noble aurora
#

as long as it's related to the topic

wicked epoch
#

Is this the right channel to ask this question about me and my learning?

misty dirge
glad cradle
#

Hello! Is this the right channel to ask questions and help for my uni project ?

sharp field
#

im trying to learn python whats wrong here? yes im addicted by the luau because i like making scripts for roblox games to troll little kids.

plush laurel
sharp field
misty dirge
amber nacelle
#

hi

#

guys I need your help, I want to create a class 12th project on topic bank management sysstem by connecting python and mysql

#

can anyone help???

fierce mesa
#

Hello, I am learning Python and have a problem but I don't know how to formulate it in Google to get some help to get unstuck in my blackjack game assignment : I have a Player class that has a check_score(self) method. When I call that method from a function player_turn(player) the result of the score is doubled... So a player who draws cards for a result 15 in the class, becomes 30 when passed inside a function... I don't know how to get unstuck...

hazy dust
#

How do I write this in python please help??

analog thorn
#

how do I write this in python please help?

stone juniper
#

same to you @hazy dust

desert patio
#

that was 5 days ago

topaz turret
#

Is there like a "reading list" for people who want to become better mentors/teachers in programming? Considering building a better reading list that actually would start with Math pedagogy since it seems like that's more of a beaten path, per se

stone juniper
stone juniper
#

this channel is for discussion about how to teach computer science

dusty topaz
#

oh, sorry

simple fiber
#

[HELP]
Hello, I am learning python now.
I've built a very simple python backend for test but it occurs CORS POLICY ERROR.
for python developer, it's very simple and basic problem but for me it's very difficult.
How can I solve this problem? Please help me.
this is my simple backend.

from simple_http_server import route, server
@errant ledge("/isvalid", method=["GET"])
def index(email, password):
return {"res": "hello world!"}

server.start(port=9090)

which code should I add?
Please help me.

stone juniper
stone shore
#

Does anyone here know of one or more good dataset(s) to teach a (set of) lesson(s) on data collection, cleaning, visualisation, analysis, and preferably also linear regression?

amber zealot
#

guys how to print node values level by level in binary tree . eg : values in nested list according to its level

weak mortar
#

bonjour y a t'il un module python qui permet d'interprΓ©ter le langage des signe
hello is there a python module that can interpret sign language

zinc horizon
# amber zealot guys how to print node values level by level in binary tree . eg : values in nes...

probably want to implement a variation of breadth-first traversal: https://www.geeksforgeeks.org/level-order-tree-traversal/

sharp sparrow
#

Greetings. How do those of you who teach, teach multithreading and multiprocessing? Are there any good teaching materials other than the regular docs?

misty dirge
coarse quest
#

I'd teach the general concept first. Not docs stuff. You need to understand what is a process, what is a thread, what each has access to... etc before you actually learn how to use them. Understanding underlying stuff is very important to use those properly, to know where to use them, to avoid some mistakes

snow mirage
#

But it really depends on what level you're teaching. I think for beginners / people that haven't head to deal with multithreaded programming before, it's important work out what parallel execution means, maybe by reviewing on how a computer operates on synchronous code first.

#

And also, don't skip terminology or dumb it down. Alot of student's i deal with have no idea what an "execution context" is, but variations of this term are used alot

teal briar
#

does anyone know altair python?

stone juniper
sharp sparrow
stone vortex
#

hey guys can anyone suggest a good website for data structures algorithms

misty dirge
worldly dewBOT
#
Resources

The Resources page on our website contains a list of hand-selected learning resources that we regularly recommend to both beginners and experts.

quiet plover
#

I'm looking to begin learning a new lang, I started learning Python ~5 years ago, I've babbled a bit in Javascript/Node but never found myself past the basics or ever really needing to use it. I'm looking towards a C Objective language, so anything like C, C#, C++
I'm hoping to be able to create mobile applications / possibly games, etc. But also hopefully still be able to do what I already could with Python.
Any advice I can get would be super helpful

stone juniper
quiet plover
#

man

wheat schooner
#

This is Turkish Python!

weak mortar
#

I got the wizard book for Christmas, looking forward to reading it

sudden estuary
#

i didnt know this existed

misty dirge
# weak mortar

I heard about this book for the first time a few weeks ago. I'll be interested to hear what you think

lapis cove
#

guys need help with python code? anyone here?

misty dirge
rotund fjord
# weak mortar

I loved how the dude on this picture looks so much like Hermes Trismegistus, quite apropos imo! May your studies bring you joy and wisdom!

tacit perch
vast otter
#

Hello, can anyone indicate a website where I can practice basic Python?

sharp sparrow
sudden estuary
#

I think i got it locked down

#

The only issue is my students are non fluent in English

#

And its a bit difficult translating to arabic all the time

#

So instead i use analogies that way they get the bigger picture

main axle
#

am i stupid for having to spend hours just to solve one question from a coursera course? This is what I have been experiencing since i picked up python 2 to 3 months ago

main axle
jovial quest
#

depends on the question
if its "write this game with a gui in python" probably would take a beginner ~2-3 days
if its "write a number guessing game in the console in python" i'd suppose ~15m

stone shore
jovial quest
stone shore
#

I've given students all the parts and they still took more than 15 to complete things like this

#

And I'm talking adults

hallow aspen
#

It isn't really about age, more about experience with programming

#

If someone just started, it will take them more time

stone shore
ancient orchid
#

/imagine

silk beacon
#

hey how can i make that "1" not print there

#

and at the end

true nova
#

you can print before the for i in range and after

silk beacon
weak mortar
#

guys help

#

i want to make a quiz but i don't know the problem
iit's a question if the answer True it's Great job but if not try agein.
but that not work :/

#

any advice pls?

true nova
weak mortar
distant lava
neat canopy
#

@distant lava hello

distant lava
#

ok sorry

neat canopy
ancient stone
#

Hey all! I’ll be teaching a higher ed course next semester on python/analytics. I see @slim heron basically asked my question earlier this month - but is anyone aware of good intro python course materials / course shells / slides / etc. ? I am aware of Python for Everyone which is alright-ish

#

R has a much more refined resources in this area with R Studio’s data science in a box, and with Wickham’s R for data science book / lecture materials.

misty dirge
sweet yarrow
#

otherwise you'll get a mix of "I already know three programming language sand advanced stat" to "what is a variable?" type peoples

low crater
#

how can i learn programming structures like facades, proxies etc..

sweet yarrow
sharp mulch
#

Hello All,

I hope this is a good channel for this topic. I'm trying to teach myself github best practices. I've confirmed the following as necessary topics to master:

  1. Enable MFA for the account
  2. Use branch protection rules
  3. Use a security scanner on your code.

I'm trying to learn more about #2. Specifically what I've done is I've created a github repository and pushed a project from my WSL machine. I then setup a branch protection rule with a name pattern that exactly matches "main" which is the name of my branch. I also selected "Require approvals" as set it to "1" and I've also set "Require review from Code Owners". After making this change I'm still able to push from my WSL machine as an anonymous "root" user. Therefore my questions are:

What mistake did I make?
What resources is anyone else aware of that I can use to learn github best practices?

ancient stone
ancient stone
ancient stone
#

I found a Redditor (marko_knoebl) who has posted their slides for python courses.

https://marko-knoebl.github.io/slides/#python

Not really as extensive as I was looking for but probably the best resource I've found so far. Hope it helps anyone in the same spot!

pallid ravine
#

I am learning python
so I have some example
i can`t solve it

stone shore
thin vigil
#

hey

hallow saffron
#

I have a problem in RStudio

#

can anyone help me

bold sierra
#

Hi what is keyerror 6

mossy beacon
#

hey is codecademy better than like exercism to learn python as begginer

jovial quest
obtuse wadi
weak mortar
#

@stone shore You're a teacher? :p

stone shore
weak mortar
#

@stone shore What kind of assigments do you give em? πŸ™‚

stone shore
#

But all the assignments are during the training hours for my cases

weak mortar
#

oh

tiny wadi
#

How useful/useless is this - found it in a pile of old books.

misty dirge
tiny wadi
#

It’s only future is to be recycled then it seems πŸ˜‚ thanks

muted geyser
misty dirge
jovial quest
lime loom
#

Any tutorial/tip on how to understand def function better?

dense bear
#

Anyone want help in any Python project related to machine learning, analytics work, college project/assignements
just message me

stone shore
merry willow
# lime loom Any tutorial/tip on how to understand def function better?

You can look into stack overflow for examples and understanding on def some_function(blah, blah):
or make your own example too:
def isPrime(n): for i in range(2,n): if (n%i) == 0: return False return True
any number divided by itself or 1 is a prime number so like 2 is or 3, and 5 etc...we are looking at the remainder thats what the % (modulo) does if its == 0 then its not a prime number.

trim sable
#

is

coarse quest
# muted geyser what are the differences between 2.2 now? I am more familiar with python 2.7 up

2.7 is already pretty close to around early 3. As in, it implemented a lot of python 3 changes as optional stuff so people could make code compatible with both python 2 and python 3 for easier migration.

But as for changes...
2.2 was released in 2001. That's 20+ years.
2.7 has been released in 2009, and has finally been dead for 3 years (finally because people kept saying they didn't have time to migrate etc, so it was moved back and back).
2.7 released together with 3.1.
We're at 3.11 now. So 5 py 2 versions + 10 py 3 versions
So there are a looooot of changes. Python 2.2 didn't even have bool type, it was introduced in 2.3.

I started python during 3.4 (and 2.7) time, I only know the bool thing as trivia tidbit, but here it shows very well that 2.2 didn't have much we know now

trim surge
merry willow
weak mortar
#

Hi! These are my queries:

  1. Principles of parallel programming in Python
  2. What are the differences between concurrent and parallel programming?
stone juniper
lime loom
#

Seeking for any help in ros2 foxy/humble environment. Im facing a problem i cant find any info on google about if anyone has experience in such environment please DM me.

cloud flicker
#

while 1: or while true:
Which is best?

golden orchid
#

while 1 fewer keys; while True better semantically. The latter is used in stdlib now.

wild crescent
#

Neither are different in terms of performance if that's what you're asking

desert patio
wild crescent
#

Wat πŸ‘€

desert patio
#

1 needs to have .__bool__() checked

wild crescent
#

They produce the same bytecode though

desert patio
weak mortar
#

ahoye

#

guys i have a code

#

and i need views

stone shore
tough grail
#

Is there a similar discord server for bash? I have some questions about bash I can't seem to figure out just from googling

tough grail
#

Thanks!

fluid drum
#

Guys is python for everybody course found on coursera a good course, or you have another suggestion, i already watch the first part out of 5

#

But i need to make sure i will be at good stage if i continue

plush laurel
coarse pecan
#

How do i find team members for my project?

cloud flicker
#

A not right channel to ask, B you ask programmers in correct place or hire them on a freelancing site or setup job listing.

stone juniper
#

this channel is for discussion about how to teach computer science, but you can find out how to open your own help thread in #β“ο½œhow-to-get-help

honest nacelle
#

Oh sorry : (

rustic warren
#

hi i need help

pseudo wharf
stone shore
# rustic warren

Hi, this channel is for discussion on how to teach. For python related help you could check out #β“ο½œhow-to-get-help. But this seems to be c++. It might be best to look for a server that focuses on that language as I'm not sure that you'll have much luck in the off topic channels with this

misty dirge
#

Has anyone ever used this? https://en.m.wikipedia.org/wiki/POGIL

Process Oriented Guided Inquiry Learning (POGIL)is an activity-based, group-learning instructional strategy. The main objective of POGIL is to help the students to master the discipline, content, and develop essential learning skills simultaneously.
POGIL was devised in 1994 to better teach general chemistry. Today, POGIL is implemented in a wi...

noble aurora
#

yes, though not for programming

#

it was used in my ap bio class. personally I found them terrible. they force you to slow down for everyone in your group when done properly, and not working in a group defeats the purpose

#

though judging from that alone, it is probably helpful for the people you might be slowing down for

civic marsh
#

though personally im not a fan of these new "activity based" or "project based" learnings that schools are doing

#

i always feel like i learn best when a teacher just lectures

misty dirge
#

we used them in my first two CS courses. and I liked the structure of the worksheets, but forcing it to be a group thing with a "reflector" and a "spokesperson" seemed bloated. and a bit pretentious.

#

though we did have one whole thing about modulo, which I think was a waste of time.

vale current
noble aurora
noble aurora
fallow terrace
#

i think programming is something in which you have to actually apply your learning to get a thorough understanding. there are so many different ways you can combine different programming concepts/ideas that you only ever get a feel for if you use them.

noble aurora
#

that's also true for solving math/stem problems

fallow terrace
#

i don't disagree there, wasn't sure if robin was referring to programming or general

civic marsh
#

I meant for non programming, should've clarified

#

Subjects like math or science I find lectures work for me

#

But of course that's probably not the case for everyone

vale current
#

For math, I find practice helps a lot

#

but to add to that, watching someone else do it (in this case, a teacher) is also super helpful

native hearth
stuck surge
#

my bad

void shard
#

should functional concepts (like first class functions, closures, list comprehensions, etc) be taught before oop

vale current
#

hmm, in my opinion, I feel basic use of classes in your code would be better introduced before more nuanced (if that's the right word here) features like the ones you've mentioned. Closures and first class functions would also pair well with being taught alongside decorators.

fleet pulsar
#

I think decorators should follow higher-order functions. You could introduce them with map and filter, provide some practice to get people used to the idea that no special syntax is needed and functions are simply objects, just like ints or lists, by reimplementing map, filter and some simple things from itertools/functools (reduce, for example). This is also a good place to mention those modules as well as list/dict/set/generator comprehensions as the generally preferable modern alternative to map-filter chains. Follow that up with the idea that since functions are regular objects, you aren't limited to accepting them as parameters, but can also create and return new functions. Practice could be a simple composition function, a reimplementation of functools.partial to introduce *args, **kwargs, and an implementation of functools.cache to finally drive home the idea of a wrapping function

#

After that point you can simply mention that decorators are syntactic sugar for passing a function or class to a higher order function and saving the result, so it doesn't look like magic

ripe folio
# fleet pulsar I think decorators should follow higher-order functions. You could introduce the...

Hmm, I disagree. I think it is easier to explain to someone how they can create functions inside of functions, rather than explain how functions are also objects and can be assigned attributes, etc.

I believe that most people are able to buy an explanation like "You can define functions inside of other functions" and that "Decorators replace the function they're placed on". The map reimplemenation and explanation of higher-order functions can be done later in my opinion

#

When I've explained decorators I usually start by showing examples of factories (creating functions inside of functions) such as:

def printer(message):
   def inner():
       print(message)
   return inner

run = printer('Hello')

run()
run()

After this, you can continue explaining usages for wrapping functions (I use the example of converting arguments from strings to ints for arithmetic functions) and finally use the decorator syntax.

winter spear
cold hound
#

I need help, I need this code port to fetch the drop down variables, I would like it to be the .

stone shore