this post was submitted on 20 Jul 2024
123 points (96.9% liked)
Programming
17534 readers
96 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I'm curious why you think Python is unsuitable. Both of my kids picked up Python pretty easily.
I think there was more, but that's what I remember off the top of my head. If it was up to me then I would've used Pascal - that's what it's designed for! But at least C# has strongly-typed variables, and doesn't care about your indentation (and unfortunately there was no non-OOP language choice available - I'm not sure how this got in the curriculum when every teacher knows you only teach one concept at a time). As I said, many other teachers felt the same way, but couldn't get it past their school admin's.
Notably, when I did my C.S. degree, they knew to only teach one concept at a time. We learnt Pascal in first year, then did OOP in second year.
Python does have OOP but you are not at all forced to use it. You can write code in a functional or even procedural style.
I do hate that python doesent have proper support for typing but I think weakly typed variables will actually help beginners as it is less to think about to start off with.
I think there are pros and cons here. In other languages it is considered good style to use indentation anyway.
I'm sure it is difficult to teach a large class like that though. It was hard enough for me to learn with a much more favourable teacher to student ratio than you probably have. Sorry but honestly I do sympathise with admin as well.
Not as an individual, but I'm talking about a situation precisely where the individual choices of teachers are ignored, in some cases by school admins, in some cases by faculty choices. Fortunately I also ran a computing club, in which I was autonomous with how I ran it, and I taught my computing club students C#/MAUI... but even then still saw some of the issues you run into with teaching students. e.g. I told them to install Visual Studio ready for next week, showed them where it was, what workloads to install, and then the next week one of the students had installed Blend for Visual Studio, not Visual Studio. "Look, it has Visual Studio in the name!". (sigh)
No, that's exactly the problem to start with. Another rule of teaching (see below for the full list I'm quoting these from) is "never let the first impression be a wrong one". If you let students think they can use variables for anything, then you run into problems when they can't. This is why teaching them with strong types first is better - they learn you need to be careful with how to use them, THEN maybe you can let them have some more freedom like Python allows.
Yes, but in those languages it's optional. In Python it's mandatory, and if someone's code isn't working it's far easier to spot a missing bracket than a missing space.
It's odd to me that you're disagreeing with their actual experience teaching.
Thanks. It's a very 21st Century phenomenon that I've unfortunately run into many times
Lots of us have the experience of being the kid in that situation though. I learnt python in secondary school.
They've been through the other side of this experience multiple times though.
Which kid? The gifted one, the one who didn't understand loops and used 20 variables for 20 iterations, the one who didn't understand how to write pseudo code, the one who was dyslexic,.....?
Which Year? I didn't say it wasn't appropriate for high school, I said it wasn't appropriate for Year 7 as a first programming language.
Also, who do you mean by "us"? Programmers? Not all the kids in class want to be programmers, and this isn't a programming class - it's Computer Science. We cover topics like hardware, the Internet, Cybersecurity, the history of computers, data analytics, etc. Not only do not all of them want to be programmers, not even all of them want to be in I.T. - they're just, you know, interested in computers (or in some cases they're in the course because their parents think they should be in it - I've had a couple of those students). We only spend 6 weeks on programming (we spend 6 weeks on each topic), or sometimes we might do it twice and spend 12 weeks on it, and that's it for the year! You can't teach Year 7 kids algorithms, pseudo code, basic programming concepts (variables, branches, and loops) and OOP as well in one year. Especially when not even all of them are interested in programming. It's just one topic we cover. OOP is something that shouldn't be covered until at least Year 8, preferably Year 9 (by which stage students have decided if they want to continue on this path or not, and the ones we still have left we start getting more hard-core... which is where the "us" I presume you're referring to come in).
You can use types in Python and your tools will generate warnings
def something(a: int) -> int: return "potato"
will turn yellow in an IDE more advanced that notepad.
Most editors will also show a red line where the indentation is wrong.
Same thing still applies - you need to get it past the school admin gatekeeper.
If you're writing any language in like notepad, you're going to have a bad time. I accept your point that school administration may be making questionable choices about what software is installed, but that's not a problem unique to python.
No, but it's a bigger problem for C# than is is for Python (though this is changing now), so all the U.K.-based schools were teaching Python, rather than the more-appropriate C#. That was my original point - that's the dumb reason I had to learn Python, school admin's wanted the lower overhead of the worse language.
Why do you even have to mention OOP? C# is object oriented too. Would you start explaining OOP too when teaching C#?
Python is comparatively easier as it's nearly literally pseudo-code. There's no need to even write a main function or functions at all. It uses less characters too e.g no need for semi-colon, brackets in for loops and if statements
As for indentation being exact, IMO that's on you. Beginners should be given a proper development environment to work in that helps them as much as possible. Modern editors and IDEs point out syntax errors and indentation errors are incredibly basic. If they are working in an environment that doesn't even point that out to them, they have been setup incorrectly.
Anti Commercial-AI license
Because I was saying why it's a bad choice to teach to Year 7. I already said if it was up to me I'd teach them Pascal.
Yes, I know, but in this case it's the lesser of 2 evils, for the other reasons I gave.
And as I just said to someone else, students even struggle with pseudo code.
And I already said that's one of the drawbacks - indenting has to be EXACT or your program doesn't work anymore.
It's not on me - it's in the language itself to begin with. I have no control over it.
Now see if you can get the school admin's to install those ones. As I said, that's the root issue to begin with - the school admin's.
Now see if you can get the school admin's to fix it. Welcome to the struggle the teachers face in teaching what WE want to teach them.
It seems you did the best you could with what you had to work with. It's a shame the other users don't understand that you didn't get to choose the tools your students could use and instead went with what they, in their freedom to choose and install what they want, would have used to teach. I can imagine you only had notepad and Idle to use.
Thanks. From memory we were using repl.it, or something very similar. This made it easy for me to look at their code when they had problems (and even then, as I said to someone else, it was quite a while before I realised one of them simply had the wrong indentation on one line - I kept looking at the code and thinking I couldn't see anything wrong with it, then eventually I realised there was a wrong indentation. If it took me that long to realise, then of course that's something students are going to struggle with).
I learnt to program in python (in year 12). It was pretty good:
Yes, it's fine for Year 12 - you've already learnt all that stuff by then - it's NOT fine for Year 7 as a first proper programming language, when they haven't learnt ANY of that stuff yet.
I leant from scratch as my first programming language in year 12.
They tried to teach OOP in year 13, but I didn't really get it until university.
This was years ago at this point, I think they introduced the programming GCSE the year after I did my A-Levels.
A scripting language like python is the ideal language to start with because you can JUST learn the programming bit without worrying about OOP, project structures, compiling etc.
I was teaching the IGCSE, to students all over the globe.
But NONE of the resources which have been provided to schools do it that way - they ALL use OOP. If that's what your faculty has chosen to use, then that's what you have to use. It comes back to what I've been saying all along - the schools are dictating to the teachers what they are to teach, and it's NOT based on what's best for the students educationally, but what has the least admin overhead for them. That's the stupid reason that I had to learn Python - admin concerns!
Oh, ok, that's annoying then. One of those cases where it feels like the person putting the course together has never actually interacted with children?
Yes, that's exactly what I'm saying. The decision was made for us by school admins, NOT CS teachers. That's why it was the stupid reason I had to learn Python.
Oh, I should clarify that. Teaching Python was decided for us by admins. The course material MAY have been designed by a teacher, but then also it may have been designed for Year 9 say. It's inappropriate to be teaching it to Year 7 as a first proper programming language, but that's what we had to do (otherwise then we would also have to make all our own resources to do it, and don't forget at this point that I didn't know how to program in Python myself yet! So yes, I had to use the already made resources, which had OOP in it).
P.S. the students aren't going to have any tests where it matters until Year 10, and the curriculum even says that at least 2 languages must be taught (in my case we chose HTML as the second language, because...), and so even though many teachers would like to teach their students C#, the schools simply aren't LETTING them do that. They don't want the admin overhead that comes with teaching C#, so it's Python and.... nope, it's just Python (and so then you have teachers opting for a second language like HTML, cos they can't get their school/faculty to buy-in on teaching C#, simply because they don't want the admin that comes with it. The fact that it's a better language to learn isn't even considered).
Is the fact that C# produced executables also a problem? With python you can 'protect' non lab computers at the school by just not installing the python runtime on them. Teach them c# and I guarantee they will be making executables to cause trouble.
Generally agree with you that teachers should be able to choose at least one of the languages to teach. basic web dev stuff is probably pretty useful to them though if it includes JavaScript?
Trust me, the conversation never even gets that far.
We weren't! We were using repl.it (or something very similar). I don't know what the story was at other schools, other than many other teachers also wanted C# but had to do Python (it was when I came across this that I finally accepted defeat in trying to get another language in instead of Python. I wanted to start with Pascal and then do C#. In the end I had to do HTML and Python. i.e. the status quo).
We're supposed to be able to choose both languages, but school admins are taking away one of our choices.
I wouldn't do that at the same time as HTML - maybe later, separately. As I've said, as teachers we only teach one concept at a time.
P.S.
No, you're overestimating the students ability. I taught C# in coding club (they were mostly around Year 8), and it was a struggle just getting them to understand basic programming concepts (imagine having to explain MVVM to them - they're not good at understanding abstraction) - they wouldn't have had a clue how to turn it into a malicious exe.