Skip to content

iamhenriquemachado/cs-notes-and-code

Repository files navigation

C# Notes and Code Reference

Welcome!

C# Notes and Code Reference is a structured learning repository that combines concise notes, code references, and practical challenges to help you build a solid foundation in C#. The goal is to provide a hands-on learning experience without overwhelming you with unnecessary complexity.

If you're new to programming, it's normal to feel lost among endless tutorials, extensive documentation, and conflicting advice about what to learn next. I've been in that position myself.

This repository was created to provide a clear and practical learning path. Instead of passively consuming content, you'll learn by studying concepts, exploring code examples, and solving challenges that gradually increase in difficulty. By the end, you'll have a stronger understanding of C# fundamentals and the confidence to start building your own applications.

Before you dive in, here is a quick reality check on what you will (and won’t) find here:

  • Focused, but no exhaustive: This isn't an intimidating, 1,000-page encyclopedia of every obscure C# feature. It’s a curated, summarized collection of the most critical built-in functions, syntax, and concepts actually used daily in real-world enterprise projects.

  • Embrace the struggle: Do not just copy and paste the code. Read the concepts, look at the references, and then write your own code. You will fail. You will get compiler errors. Write it again, break it, fix it, and figure it out. That is exactly what learning to code is supposed to feel like.

  • The 30-Day Path (just take your time): While this is structured as a 30-day learning path, everyone's brain works differently. It might take you longer—it certainly did for me, and that is perfectly fine. Take your time to learn, relearn, and consistently compound your knowledge by applying concepts from earlier days to later challenges. Just be sure to not move to the next challenge without having a understanding the concept of th day clearly.

  • If you feel stucked on the problem, try this: Don't be afraid to look for help when you're genuinely stuck. However, try to use AI as a mentor, not a typewriter. Instead of asking it to write the code for you, use this prompt:

    "I am facing [insert your problem] using C#. I want you to help me figure out the solution, but do not give me the code. Just give me the logical pathway and the concepts I should consider to solve this myself."

    You'll be amazed at how quickly this builds your critical thinking and debugging skills.

How to Use This Repository

This repository is designed to be clear, direct, and structured. To get the most out of it, you should follow the topics in order from top to bottom.

The structure is simple:

  • Daily Folders: Each day has its own dedicated folder.
  • The Guide: Inside each folder, you'll find a reference-and-challenge.md file—this is going to be your best friend.

Why I Built This Repository

This repository started as a personal code reference and a place to dump my notes for future projects. As I worked through these concepts, I realized how powerful it is to learn things in the right order. Reusing what you learned the day before to build out your own logic is an amazing way to learn how to code faster and deeper.

Because this approach worked perfectly for me, I thought: "Why not make this public and help other Junior Developers learn C# through a structured pathway?"

That's exactly how this repository came to life.

Inside the Markdown File:

  1. Concept Explanations: A straightforward breakdown of the C# features you need to master that day.
  2. Curated Links: Resources and documentation I personally researched and selected while learning these features myself.
  3. The Challenge: A practical problem you need to solve to solidify what you just learned.

Table of Contents

Phase 1 · Syntax, Types, and Programming Logic

Phase 2 · Object-Oriented Programming

Phase 3 · LINQ, Delegates, and Asynchronous Programming

Phase 4 · Integrated Project

Start Learning Here

Follow the roadmap in order. Each module builds on concepts introduced in previous days.

Phase 1 · Syntax, Types, and Programming Logic

Day 1–2 · Syntax, Types, and Programming Logic

Quick Introduction: This first module introduces the building blocks of C# programming. You'll learn how to work with variables, primitive types, user input, operators, conditional statements, and basic program flow. These concepts form the foundation for every project you'll build throughout the roadmap.

➡️ Start Here

Day 3–4 · Control Flow and Loops

Quick Introduction: Learn how programs make decisions and repeat actions. You'll work with conditionals, loops, switch expressions, and logical operators to build interactive console applications that respond to user input.

➡️ Start Here

Day 5–6 · Methods and Static Classes

Quick Introduction: Discover how to organize code into reusable methods and static classes. You'll learn method signatures, parameters, return types, overloading, and exception handling while creating your own utility library.

➡️ Start Here

Day 7–8 · Collections and Data Structures

Quick Introduction: Learn how to store, organize, and retrieve data efficiently using the most common C# collections. You'll work with lists, dictionaries, hash sets, and iteration patterns that appear in almost every application.

➡️ Start Here


Phase 2 · Object-Oriented Programming

Day 9–10 · Classes, Properties, and Encapsulation

Quick Introduction: Enter the world of object-oriented programming by creating your first domain models. You'll learn classes, constructors, properties, encapsulation, and how to organize application logic through proper separation of responsibilities.

➡️ Start Here

Day 11–12 · Inheritance and Polymorphism

Quick Introduction: Learn how objects can share behavior while still maintaining their own specialized implementations. You'll work with inheritance hierarchies, abstract classes, virtual methods, and runtime polymorphism.

➡️ Start Here

Day 13–14 · Interfaces and Dependency Injection

Quick Introduction: Understand how professional applications achieve flexibility and maintainability through contracts and abstractions. You'll implement interfaces and explore the foundations of dependency injection.

➡️ Start Here

Day 15–16 · Generics and Repository Pattern

Quick Introduction: Learn how to write reusable code that works with multiple data types. You'll explore generics, constraints, interfaces, and the repository pattern, which is widely used in enterprise applications.

➡️ Start Here

Day 17–18 · Exception Handling and File Processing

Quick Introduction: Robust applications must handle unexpected situations gracefully. This module teaches exception handling, custom exceptions, validation strategies, and file processing techniques.

➡️ Start Here


Phase 3 · LINQ, Delegates, and Async Programming

Day 19–20 · LINQ Fundamentals and Data Queries

Quick Introduction: Learn how to query, transform, group, and aggregate data using LINQ. You'll discover a more expressive and efficient way to work with collections without relying on manual loops.

➡️ Start Here

Day 21–22 · Delegates, Lambdas, and Events

Quick Introduction: Explore the functional side of C#. You'll learn delegates, lambda expressions, event-driven programming, and how functions can be treated as first-class building blocks.

➡️ Start Here

Day 23–25 · Async/Await and HTTP APIs

Quick Introduction: Modern applications constantly communicate with external services. In this module, you'll learn asynchronous programming, API consumption, JSON deserialization, and concurrent execution with tasks.

➡️ Start Here


Phase 4 · Integrated Project

Day 26–27 · Project Architecture and Domain Modeling

Quick Introduction: Apply everything you've learned by designing a complete application architecture. You'll structure projects into layers, define domain entities, and establish clear separation of concerns.

➡️ Start Here

Day 28–29 · Business Rules, Reports, and Integration

Quick Introduction: Expand the integrated project by implementing business rules, reporting features, LINQ queries, exception handling, and external service integration.

➡️ Start Here

Day 30 · Review, Refactoring, and Next Steps

Quick Introduction: The final module focuses on improving code quality. You'll review previous work, refactor implementations, eliminate technical debt, and identify the next areas of study in your C# journey.

➡️ Start Here


Recommended Learning Process

For every module:

  1. Read the concepts.
  2. Study the reference implementation.
  3. Take notes.
  4. Complete the challenge without looking at the solution.
  5. Refactor your code.
  6. Compare your approach with the reference project.
  7. Move to the next topic.

Good luck, and remember: consistency beats intensity. A little progress every day compounds into expertise.

About

A practical C# learning roadmap with notes, code references, and hands-on challenges designed to help beginners build real-world programming skills.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages