I have some background in Python and Bash (this is entirely self-taught and i think the easiest language from all). I know that C# is much different, propably this is why it is hard. I've been learning it for more than 4 months now, and the most impressive thing i can do with some luck is to write a console application that reads 2 values from the terminal, adds them together and prints out the result. Yes, seriously. The main problem is that there are not much usable resources to learn C#. For bash, there is Linux, a shit ton of distros, even BSD, MacOS and Solaris uses it. For python, there are games and qtile window manager. For C, there is dwm. I don't know anything like these for C#, except Codingame, but that just goes straight to the deep waters and i have no idea what to do. Is my whole approach wrong? How am i supposed to learn C#? I'm seriously not the sharpest tool in the shed, but i have a pretty good understanding of hardware, networking, security, privacy. Programming is beyond me however, except for small basic scripts
Why you need or want to learn C#? I think depending on the answer we can find a good starting point on how to approach your learning because is not just about the language, also about the ecosystem.
Because it is required in my school. And we barely have any classes, even then, the teacher is not really good at teaching it. He thinks we will learn by copy-pasting it from the board. This is literally what we have to do in class. And for some reason, he is the principal
Do the other students feel the same way? It might be worth starting a study group amongst your peers to help one another out.
Have you reached out to your teacher? they should be able to either help you catch up or steer you towards resources that better suit your pace/ learning style.
Yes, they do but we are not a good community, they are not really helpful. The teacher is the principal. He barely has time to come to the lesson, i doubt he has the time and intrest to care about students who can't understand what is going on. Plus he is not that approachable person, very strict and not that helpful
Ok, so if is for school, what is the context? Is a class about C#, about OOP, or programming languages, or creating a website or creating a videogame. I'll try to cover different focuses.
C#, if is just about the language, I'd think is a bit strange, I feel that at school level you want to relate a programming language to a more fundamental concept that you can find in other languages as well, rather than sth this specific. Anyway, things like memory management: memory allocation, value/reference, garbage collection, or things like async/await, Tasks, LINQ, polymorphism, the different types and keywords and the .NET framework are important at this level.
C# is a multi paradigm language so you can implement stuff mainly in OOP, but also functional, imperative and others, I'm going to assume that the idea is to use it more as OOP, if you have used already OOP in Python you just need to find what are the features and constraints of C# around this compared with Python.
A console project may help you to understand these concepts, but at the end it will depend in what you want/need to learn to focus on what kind of project is better to implement for learning.
If is just the concepts in OOP in C# any simple project can help you on that, for instance you can use a Code Kata and you can add specific requirements about covering OOP concepts so you force you to learn and practice that, even if is over engineered.
If your plan is more related to a project implementation, that's a different story, because now you have to consider not just the building process, but also the deployment process, so not just about the language, and in this it matter less some specific stuff about the language and more about how to implement some stuff using already libraries, so is more about putting things together having in mind good practices, and also how you pack the binaries and distribute them. Other stuff, where the app will run, how do you monitor your app while is running, do you need persistence? Do you need logging, do you need security, etc.
The class is: algorythms and data structures. The teacher teaches just that, instead of C#. The most we had to do with c# is copying something from the whiteboard. Yet, there will be a c# test and everybody is terrified, me included. I never used python as OOP. In python we only do reading from file and creating own functions, these are the most advanced things. I don't understand why we have to learn 2 languages at once, even 1 is a very big task for someome who is completly new to programming, and that's how i began, and i'm still propably. And for first i just need it to work and to understand it, nothing special