This year my friend told me: "Keep on creating awesome projects, but remember that the awesomeness lies mostly in building connections, people and you".
I would love to bring people together for a beautiful common goal- to learn a new programming language- C# (even with 0 xp in programming)
A little background about me: I am a software developer with almost 4 years of professional experience, software craftsman, passionate about what I do and willing to share my passion for others. I have been helping and teaching C# for over a year now (I even have a community for it). I have worked as a part time teacher as well and I think I do a good job at explaining what I know well myself.
Lessons would be live, on Twitch, via shared session of Visual Studio Live Share (and theory part in Stepik course, Google slides, kahoot). Would love if people could work in groups.
I would like to see the amount of people interested, as long as there are at least 2, I will do the lessons.
Hit me up in the comments if you are interested. I will give more details 🙂
Edit: Awesome, enough people for a group. Check back in in 10h for more details, I have my daytime job to do. I will explain in detail the flow, how we communicate and figure out what level each of you are.
Edit #2: What: C# lessons to teach beginners how to code, bootstrap them to have a good understanding of clean code, basic applications (no website development). This is the essence of work in C#.
Possible Topics (draft that is bound to change, be reduced, collapsed): [All work in console project] Chapter 1 Fundamentals of programming:
Introduction (of everything and everyone) What is a variable and how to use it? Print to console. Basic types, how to work in VS.
Functions. Read from console, make custom static functions.
String. Split, join, divide, parse, format.
Maths. Different types for numbers, rounding, root, square.
Logical statements. If and switch
Array and loops. Ways to make array, add elements to the array, iterate array (for, for each, while)
Files. Read and write from file, files processing.
Namespaces. What is a namespaces, how do we make them, using statement?
Chapter 2: Debugging
Breakpoint. How to put a breakpoint and pause execution on it, step in, step out.
Watcher. How to inspect variable values, track them.
Conditional breakpoint. How to pause on condition?
How to go back in time? Stack trace, skipping code, going to previous line.
Intermediate window. How to execute code when debugging is paused?
Chapter 3: OOP
Class and object. What is a class, how to create objects, new classes?
Encapsulation. What and when should be hidden in a class. How do we group data and logic into classes?
Inheritance. When to use inheritance, why does it matter?
Polymorphism. What is it, why is it so important. Refactor if statements.
Abstraction. Why do we need abstraction? Interface.
Reusing code- abstract class
Refactoring code- composition
Chapter 4: C#
Generic collections. How to use list, dictionary?
Custom generics. Make your own generic function or class
Ternary operator. If checks done differently
Extension methods. How to add functions to classes that don't belong to you?
Events. What are events? How to call them how to handle them?
Delegates. Action and Func. Function as an argument.
LINQ. How to process collections in an elegant way?
Enum. Named constants and categories. 9)Globals. When static makes sense and when it mostly doesn't. Constants.
Nugget. How to use 3rd party packages?
Jason. Serialization, deserialization, Newtonsoft.Json.
Chapter 5: Errors
Exception handling. How to handle exceptions?
Custom exceptions. How to create custom exceptions and handle specific?
Throwing
Logging. Logging error best practices.
[Work in console and test proejct] Chapter 6: Testing
xUnit and Tests structure. Arrange, act, assert.
Unit tests
Integration tests
Tests with input
DRY vs Damp
Chapter 7: SOLID
SRP. Single Responsibility Principle in function, class, project, solution and even sentences.
OCP. How to design classes by minimizing changes on existing stuff?
L. How to avoid creating monster classes with fake relations? 4)ISP. Don't change publisher interfaces.
Dip. Depending on abstractions.
[Work in console, class library, Wpf and test projects] Chapter 8: Desktop UI
Simple window in WPF, using designer and Xaml
Data binding. How to sync classes and UI?
MVVM. What is a model, view, viewModel? Make UI dumb.
2-tier. Split logic from UI.
Refactoring to 2-tier. Split logic from console to class library, reuse that in WPF and Console.
Chapter 9: Database
Basic terms. What is a column, row, table, primary and foreign keys?
Ways to connect to the database. Connection string, SSMS, server object explorer...
Entity Framework Core. How to create a database from models (code first)?
CRUD. Create, update, delete, insert with EF.
Testing EF.
Chapter 10: Async programming
Task. Fire and forget methods
async-await. How to wait for results of a task?
Sync async. How to get task result in sync context?
Async sync. Run sync code asynchronously
Cancellation. How to cancel a task?
Chapter 11: Patterns
Factory.
Builder.
Singleton.
Strategy.
Command
Adapter
Repository
Chapter 12: web services
Types of services. Rest and Soap.
Web API. Where to start making web service in C#?
Endpoints. How routing works, call class lib logic from there.
Postman
Post, get, put, delete. Do CRUD from Web.
IoC. Inversion of Control in startup.
Action filters. Intercept request.
Middleware. Intercept all requests/responses.
Where: Live on Twitch, using VS Live share, Google slides, kahoot, steppik.
When: 9 PM GMT +2, every Sunday and Wednesday
Requirements: Visual Studio 2019 Community edition and a microphone.
Skill: beginner-friendly
Price: free
Discussions: Discord
https://discord.gg/rCMKcUU
Tag me (Kaisinel)
Edit #3: Please DM me on discord or on Reddit if the interest still stands.
Edit #4: First lesson on January 11th (Saturday), 9PM GMT +2
https://www.timeanddate.com/countdown/generic?iso=20200111T21&p0=660&msg=%E2%85%AD%23+L1%3A+Introduction&font=serif&csz=1#