A learning roadmap to review the basics of C#. follow: https://github.com/saifaustcse/dotnet-developer-roadmap?tab=readme-ov-file
Goal: work like a developer from day one.
- git init, add, commit, push, pull, branch, merge
- commit message rules:
feat:,fix:,refactor:,docs:,test: - small commits, one purpose per commit
- README, .gitignore, branch naming
- create a repo
- make 5β10 tiny commits
- use branches for features
- write a simple README for every mini project
- one GitHub repo with clean commit history
Goal: understand syntax and core language features.
- variables, types, operators
- if, switch, loops
- methods, parameters, return values
- arrays, strings, enums
- classes vs structs
- namespaces, access modifiers
- async/await basics
- calculator
- student management console app
- string processing exercises
- 1β2 console apps using clean C# syntax
Goal: write code with proper design.
- class, object, constructor
- encapsulation, inheritance, polymorphism, abstraction
- interface vs abstract class
- composition over inheritance
- SOLID basics
- build a simple order system
- model User, Admin, Product, Order
- use interfaces for services
- a console app designed with OOP, not just functions
Goal: understand how data is stored and accessed.
- IEnumerable, ICollection, IList
- List, Dictionary<TKey,TValue>, HashSet
- Stack, Queue
- array vs list
- basic complexity: O(1), O(n), O(log n)
- heap/priority queue if needed
- sort/filter/search data manually
- implement stack-based expression evaluation
- build a to-do list using List
- compare performance of List vs Dictionary
- small exercises showing when to use each collection
Goal: understand how .NET manages memory.
- managed vs unmanaged memory
- stack vs heap
- reference vs value types
- generations: Gen 0, 1, 2
- boxing/unboxing
- IDisposable, using, cleanup
- create objects and observe lifetime
- write code with using
- avoid unnecessary allocations
- explain why an object is collected and when Dispose is needed
Goal: store and query data correctly.
- tables, primary key, foreign key
- normalization
- CRUD SQL
- SELECT, JOIN, GROUP BY, WHERE, ORDER BY
- indexing basics
- transactions
- design a database for users, products, orders
- write queries for searching and joining data
- create relationships between tables
- a small relational database with meaningful schema
Goal: connect C# to database cleanly.
- DbContext, DbSet
- entity configuration
- migrations
- tracking vs no-tracking
- eager/lazy loading
- relationships
- LINQ to Entities
- build CRUD with EF Core
- create migrations
- query with Include, Where, Select
- map DTOs to entities
- a working data layer with EF Core
Goal: expose your backend properly.
- HTTP methods: GET, POST, PUT, PATCH, DELETE
- status codes: 200, 201, 204, 400, 401, 403, 404, 500
- route design
- request/response DTOs
- validation
- model binding
- middleware
- exception handling
- dependency injection
- create CRUD endpoints
- validate input
- return proper status codes
- handle errors consistently
- a clean ASP.NET Core Web API
Goal: run your app in a reproducible environment.
- Dockerfile
- docker compose
- image vs container
- ports, environment variables
- containerizing API + database
- dockerize your Web API
- run SQL Server/PostgreSQL in Docker
- connect API to database through compose
- the whole project runs with one
docker compose up
Goal: combine everything into one real project.
- Book Store API
- Task Management API
- Student Management API
- Booking system API
- GitHub with good commits
- C# OOP design
- collections usage
- SQL database
- EF Core
- RESTful API
- Docker
- basic GC/memory awareness
- GitHub
- C# basics
- OOP
- Data structures / collections
- Garbage collection
- Database / SQL
- EF Core
- Web API / RESTful
- Docker
- Final project