You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1. Introduce myself, the course, get to know each other, our backgrounds and experiences, explain
the Lithuanian market for .NET developers.
2. Explain the structure of the course.
3. Install Visual Studio 2019, get familiar with the development environment, create a new project.
4. Get familiar with debugging technique.
Homework/Project
Main: Hello World in Visual Studio.
Extra: Enter your name or surname in Console window and print out a full sentence.
Extra: Enter your date of birth and produce age.
Extra: Console Calculator.
Links
Visual Studio 2019 - https://visualstudio.microsoft.com/vs/
Hello World program - https://en.wikipedia.org/wiki/%22Hello,_World!%22_program
Developer salaries - https://docs.google.com/presentation/d/1keUGzMCqV3oedd2x9sPMTa3x2TP9iLDNWWy2OHqxF-c/
Lesson 2
Aim
1. Get familiar with Object-oriented programming (OOP).
2. Get familiar with basic programming concepts in .NET: arrays, lists, loops, if statements, operators and etc.
Homework/Project
Main: Console Shop Project.
Extra: Upload it to GitHub.
1. Continue learning C# programming, inheritance, encapsulation, abstraction and etc.
2. Introduce NuGet packages library.
3. Introduce web scraping via ScrapySharp NuGet package.
Homework/Project
Main: Job advertisement scraper.
Extra:
Links
NuGet 101 - https://docs.microsoft.com/en-us/nuget/what-is-nuget
Web scraping - https://en.wikipedia.org/wiki/Web_scraping
Web scraping in c# - https://www.scrapingbee.com/blog/web-scraping-csharp/#making-an-http-request-to-a-web-page-in-c
ScrapySharp - https://github.com/rflechner/ScrapySharp
Week 2: MVC + Razor, API technologies.
Lesson 1
Aim
1. Introduce MVC design pattern and Razor.
2. Explain Project folder structure.
3. Introduce sending data to the controllers.
4. Explain Routing concept in MVC.
Homework/Project
Main: Registration form application.
Extra: Back-end validation and attributes.
1. Introduce WebAPI and differences from MVC.
2. Explain REST API software architecture.
3. Sending parameters (FromBody vs FromUrl).
4. Test it via HttpGet, HttpPost, HttpDelete, using Postman.
Homework/Project
Main: 'Minima' shop Warehouse RESTful API system for three items: bread, milk and cake.
Extra: 3 items should reuse the same code, generic controllers, repository.
Extra: Add Swagger to API.
Links
What is an API? - https://www.youtube.com/watch?v=s7wmiS2mSXY&ab_channel=MuleSoftVideos
REST API - https://www.restapitutorial.com/
Week 3: Databases
Lesson 1
Aim
1. Create a database on your local machine, setup MS SQL.
2. Create schemas, tables, test data.
3. SQL statements: SELECT, UPDATE, INSERT, DELETE.
4. SqlConnecion with .NET Core.
Homework/Project
Main: Introduce customer object in 'Minima' application.
Upgrade existing application to be able to filter by the customer.
Extra: Upgrade the database with millions of records and observe the performance.
1. Introduce Entity Framework Core, its benefits over plain SQL.
2. Get familiar with DbSets, Linq.
Homework/Project
Main: Upgrade 'Minima' to use EF Core and Linq instead of SqlConnection.
Extra: Research IEnumerable vs IQueryable and apply proper usage.
Links
EF Core - https://docs.microsoft.com/en-us/ef/core/
LINQ - https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/
Lesson 3
Aim
1. Introduce Foreign Keys, Indexes.
2. Explain Stored procedures, functions.
3. Explain SQL clauses: Joins, Group By, Aliases.
4. The issues with Big Data and efficiency.
Week 4: Code-reusability, Architecture and Design patterns
Lesson 1
Aim
1. Understand Domain-Driven design (DDD) and apply it's architecture.
2. Introduce an interface and its power through Dependency Injection (DI).
3. Repository and Service coding patterns.
Homework/Project
Main: Upgrade existing 'Minima' project to employ Customer and Product service, inject them as services.
Refactor database access to use Repositories (Generic repositories + Unit of work).
Extra:
1. Introduction to Asynchronous Programming: Async/Await.
2. Extension methods, Helper classes. When to use static classes.
3. Shared project, common packages patterns.
Homework/Project
Main: Employ the principles above to the current project.
Extra:
Week 5: Automated testing, Test-driven development (TDD)
Lesson 1
Aim
1. Introduction to Test-driven development (TDD).
2. Understanding Unit tests.
3. XUnit testing framework, Facts/Theories.
4. Architecture for testing frameworks.
Homework/Project
Main: Adding unit tests for existing projects.
Extra:
Links
Unit testing - https://softwaretestingfundamentals.com/unit-testing/
Test-driven development - https://en.wikipedia.org/wiki/Test-driven_development
Lesson 2
Aim
1. Integration testing.
2. Mocking services with Moq.
3. Replacing Database with In-Memory Database for testing.
Homework/Project
Main: Adding Integration tests to current projects.
Extra:
1. This is a revision session with those who need more help.
2. The experienced ones will work on GildedRose Refactoring Kata.
Homework/Project
Extra: GildedRose refactoring Kata
Links
GildedRose Kata - https://github.com/emilybache/GildedRose-Refactoring-Kata
Refactoring Katas - https://kata-log.rocks/refactoring
Week 6: Working in teams, team project.
Lesson 1
Aim
1. Understanding Git, branching, merge-request, conflicts.
2. Scrum, sprint methodologies.
3. Divide into teams and work together to simulate real-life scenarios.
Homework/Project
Major project: a Bank application. Be creative!
Suggestions: be able to register and login (ignore security for now),
Top up with the single click. Be able to send money to other account.
Extra ideas: investing, be able to request money. Be creative!
1. .NET Framework and other technologies that are still being used in the industry.
2. Project setup with .NET Framework and OWin.
3. OData Web API.
Homework/Project
Main: Setup Odata API on .NET Framework.
Extra:
Links
.NET Framework - https://dotnet.microsoft.com/learn/dotnet/what-is-dotnet-framework
Odata API - https://www.odata.org/
Week 10: Microservices
Lesson 1
Aim
1. Microservices vs Monolith Project structure
2. Docker and Docker-compose technologies
3. Packaging applications and dependencies (Mssql) into runnable Containers.
Homework/Project
Main: Host you application with Docker on Heroku.
Lesson 2
Aim
1. Events in C#, Producer/Consumer patterns
2. Messaging technologies in Rabbitmq,
3. Event Sourcing.
Homework/Project
Main: Create 2 services which use RabbitMq
Lesson 3
Aim
1. Wrapping microservices with Ocelot Api Gateway.
Homework/Project
Main: Dockerize Ocelot Api and employ it with microservices developed earlier.
About
A teaching plan for c# specialization course for BIT institute