Study Plan | Any suggestions

I just started learning C#, now I'm at the stage of consolidating OOP (Classes, polymorphism, etc.) and studying abstract classes and interfaces. I need any advice on what I can add to my training plan or what I should remove. I'm learning C# for several directions. These are mainly development and games. As a developer, I want to make applications, services, APIs, mobile, and more. I haven't decided yet. Perhaps my first project is to start making a C# bot for my discord server, although I originally planned to start with games. Thank you for your feedback! You can also recommend any open-access resource for self-study of C#, I would be very grateful! Here's the rest of my Stage 1: 5. Collections and Data Structures:
- Arrays, Lists, Dictionaries - foreach loop for iteration - List<T>, Dictionary<TKey, TValue>, Queue<T>, Stack<T> 6. Exception Handling:
- try, catch, finally - Throwing exceptions 7. LINQ (Language Integrated Query):
- Basic LINQ queries for filtering, sorting, and transforming data Stage 2 I'll write below, the limitation, sorry for the length of the text:(
8 Replies
𝙒𝙞𝙡𝙢𝙖𝙧 𝙒𝙚𝙨𝙡𝙚𝙮
1. Delegates and Events:
- Understanding delegates, and their use in event handling - Lambda expressions and anonymous methods - Events and event handlers 2. Asynchronous Programming:
- async and await keywords - Task, Task<T>, async methods - Handling multiple threads in C# using Thread or Task - Basic understanding of CancellationToken 3. Generics:
- Generic types and methods - Constraints on generics - Collections and data structures with generics (e.g., List<T>, Dictionary<TKey, TValue>) 4. Memory Management:
- Value types vs. Reference types - Garbage Collection in C# - Dispose and IDisposable (for cleanup in managed/unmanaged resources) 5. Unit Testing:
- Introduction to unit testing with MSTest or NUnit - Writing and running tests - Using mocking libraries (e.g., Moq) 6. Design Patterns:
- Common design patterns: Singleton, Factory, Observer, Strategy, etc. - When and how to use them
leowest
leowest5d ago
Dependency Injection I dont think I saw it listed its a commonly use pattern and rather than individually learning things it would also be very good if you actually go dirty into making some $projects and actually put the things you're learning to use so u can try and solve problems that use them and actually see it working etc
MODiX
MODiX5d ago
Collections of application ideas that anyone can solve in any programming language to improve coding skills: https://github.com/dotnet/dotnet-console-games https://github.com/karan/Projects https://github.com/florinpop17/app-ideas
Pobiega
Pobiega5d ago
I'd probably move value/ref types up quite a bit, as it might cause a lot of confusion, but otherwise that seems okay. I second Leos suggestion about DI, and also suggest learning how to do settings/configuration via Microsoft.Extensions.Configuration as thats 1: very common, 2: extremely useful, 3: the defacto standard way to do that in .NET apps
leowest
leowest5d ago
oh right not really c# but have some spot for learning how to use git or versioning control app if u havent yet it will save u a lot of sleepless nights I would even go as far as saying learn it before getting into serious programming
𝙒𝙞𝙡𝙢𝙖𝙧 𝙒𝙚𝙨𝙡𝙚𝙮
thanks all! it's in my step 3 at the very end, I can attach it here. I just thought it would be too much. And I still have at least six months to go before step 3, I think Thanks a lot for the rest of the advice, at first I studied theory and practiced. I was looking for tasks, I solved them on LeetCode, recently I used ChatGpt for OOP, asking him to compose a task based on certain topics. I don't know how correct this is, but this minimal practice helps me. Although he describes the task in detail, he writes specifically what needs to be done at the code level, that is, to create such a constructor, etc. I haven't tried my hand at creating small projects yet. but I didn't know about Microsoft.Extensions.Configuration, I will definitely study it in the near future, thank you both!) I'll attach Stage3, in case someone else wants to make comments :d 1. Working with Files and Data:
- Reading/writing to files (text, binary, JSON, XML) - Serialization and deserialization 2. Database Access:
- Introduction to SQL - Using Entity Framework Core for ORM (Object-Relational Mapping) - CRUD operations with a database 3. Building Web APIs with ASP.NET Core:
- Basics of web development with ASP.NET Core - Creating RESTful APIs - Authentication and Authorization with JWT - MVC Pattern and Dependency Injection 4. GUI Development (WPF or Windows Forms):
- Creating desktop apps with WPF (Windows Presentation Foundation) - XAML basics for UI design - Handling user input and events 5. Designing and Building Software Projects:
- Project structure (folders, files) - Dependency injection, IoC containers - Version control with Git (GitHub, GitLab)
leowest
leowest4d ago
DO NOT use GPT for anything. using a tool where u can't verify the veracity of facts will do more damage then help you along the way. It advised that u keep it out and just do it all manually searching and researching your self for now. I would further split these as: - Reading/writing to files (text, binary) - Serialization and deserialization (JSON, XML) and Introduction to SQL you might as well learn a bit into Ado.net so you can understand most of the differences from it vs using an ORM and be careful with the mistake people do the most which is creating repositories while using efcore(which already gives u repositories) for item 4 this is a very resourceful website for the basics and how things works https://wpf-tutorial.com/ I would grade Dependency injection higher up specially before ASP.net core because the hosting asp.net core uses already involves dependency injection so at least having a basic concept of how it works will help u dig deeper into it there is the pattern dependency injection and there is also the microsoft library that leverages a lot of the grunt work around it so its 2 separated things to learn again git(not even github which is a platform that uses git) I would put these as priority at the top before u even learn how to code simple because these are life saving tools that help u not lose your code, compare it against older code and save your code in a way it has a history so you write a feature commit that feature oh my code doesnt work anymore look at the history see what was changed against what was working oh I see this shouldn't have been changed you fix it all working again if u dont have a versioning control like git then u add a feature, any older code is no lost so you can't even look at it to compare and has to figure things out or even start from scratch
𝙒𝙞𝙡𝙢𝙖𝙧 𝙒𝙚𝙨𝙡𝙚𝙮
@leowest Thank you for such great feedback, I will listen to your advice

Did you find this page helpful?