System Application Development (.NET)
Syllabus and Course Manual for Class Lectures
PART I (.NET Programming Using C#)
Total Lecture Count: 10 Total Duration: 15:00 Hours (approx.)
- Introduction
- What is System Development
- Stages of System Development
- Developer Lifestyles (By Level)
- Course Objectives
- Number System & Binary Operation
- Bin, Dec, Hex, Oct
- Bit / Byte
- Power of 2, 8, 16
- Dec to Bin & Bin to Dec
- Dec to Hex & Hex to Dec
- Dec to Oct & Oct to Dec
- ASCII & Unicode & Color Code
- ASCII
- UTF8 & UTF16
- RGB & RGBA
- Concept of Computation
- Algorithm meaning
- Data Structure
- Graph
- Computational Complexity
- Standard Programming Languages
- Level of Programming Language
- Assembly
- IL
- Compilation of Programs
- Pre-.NET Compilation
- .NET Standard Compilation
- Language Compiler
- JiT Compiler
- Development Lifecycle (SDLC)
- Planning and Requirement Analysis
- Defining Requirements (SRS)
- Designing the Product Architecture (DDS)
- Building or Developing the Solution
- Testing
- Deployment / Release
- Maintenance
- Introduction to Agile
- Requirements & Key Features
- Key requirements for Development
- Proper Architecting
- Follow of Design Principles
- Practice the Design Patterns
- Computer Abstractions
- CPU
- Registers
- Main Board
- HAL
- External Processors
- Device Interfacing
- System Kernel
- OS Base
- System Apps
- User defined Apps
- Memory & Components
- Cache
- Environment Variables
- Stack
- Heap
- Text Data
- Pagination
- Summary of the Lecture
- .NET Program Execution
- .NET Project Types
- ILDASM & ILASM
- Strong Naming in Assembly
- Versioning in Assembly
- Global Assembly Cache (GAC)
- Finding procedures of Assemblies by .NET Applications
- DLL Hell & It’s Solutions
- IDE (Visual Studio 2019)
- C# 8 (Industry Standard) & C# 9 (Latest Stable)
- Summary of the Lecture
- Console Application
- Read and Write
- Built-in Types
- String
- Common operators
- Nullable Type
- Type Conversion
- Arrays
- Comments
- If statements
- Switch Case statements
- Conditional Statements
- While Loop
- Do while Loop
- For and foreach Loop
- Methods
- Methods Signatures
- Summary of the Lecture
- Namespaces
- Introduction to Classes
- Static and instance class members
- Inheritance
- Method Hiding
- Polymorphism
- Method overriding & Method overloading
- Properties
- Structs
- Interfaces
- Explicit Implementation
- Abstract Classes
- Multiple Inheritance
- Constructors
- Destructors
- Summary of the Lecture
- Delegates
- Exception Handling
- Enums
- Type & Type Members
- Access Modifiers
- Attributes
- Reflections
- Generics
- String & String Builder
- Partial Classes
- Partial Methods
- Indexers
- Optional Parameters
- Code Snippets in VS
- Anonymous Methods
- Lambda Expressions
- Func / Predicate Delegates
- Summary of the Lecture
- What is a collection
- Collection operations
- Inside Arrays
- The Array Type
- Collection Interfaces
- IList
- IReadOnlyList
- IDictionaries
- ISets
- ICollections
- IEnumerator
- IDispossable
- IEnumerable
- IClonable
- IEmutable
- Lists
- Dictionaries
- Sets Linked Lists, Stack & Queues
- Enumerators
- Ranks and Bounds
- Jagged Arrays
- Summary of the Lecture
- What is LINQ
- Extension Methods
- Aggregate Functions
- Restriction Operators
- Projection Operators
- Select vs SelectMany Operator
- Ordering Operators
- Partitioning Operators
- skip and take operators
- AsEnumerable and AsQueryable
- GroupBy
- Element Operators in
- Difference between group join and inner join
- Set operators
- Union, Intersect and Except operators
- Concat & Summation operator
- Where() & FirstOrDefault()
- ForEachAsync()
- Summary of the Lecture
- Thread Basics
- Needs of Multi-Threading
- ThreadStart Delegate
- Passing in Safe manner
- Retrieving in Callback
- Concurrent access protection
- Monitor & Lock
- DeadLock & Resolve
- Performance of Multi-Threaded Applications
- Summary of the Lecture
- Async and Await
- Task Programming
- Creating Task and Cancellation
- Waiting in Task
- Data Sharing and Synchronization
- Mutex
- Concurrent Collections
- Task Co-ordination
- Barrier
- CountDown
- Semaphore
- Parallel Loops
- Summary of the Lecture
- What are Code Smells
- Principle of Least Surprise
- Rules of Simple Design
- Explain code smells
- Long Method
- Large Class
- Primitive Obsession
- Data Clumps
- Poor Names
- Inappropriate Abstraction Level
- Introduction to Jetbrain Resharper for .NET
- Summary of the Lecture
PART II (Design Patterns for Domain Driven Design)
Total Lecture Count: 4 Total Duration: 08:00 Hours (approx.)
- Why Design Principles
- What is SOLID
- S : Single Responsibility Principle (SRP)
- O : Open closed Principle (OSP)
- L : Liskov substitution Principle (LSP)
- I : Interface Segregation Principle (ISP)
- D : Dependency Inversion Principle (DIP)
- Summary of the Lecture
- Design Patterns Introduction
- Singleton Design Pattern
- Why is singleton class sealed
- Thread Safety in Singleton
- Lazy vs Eager loading in Singleton
- Static Class vs Singleton
- Exception Logging using Singleton Design Pattern
- Summary of the Lecture
- Factory Design Pattern Introduction
- Factory Method Design Pattern
- Abstract Factory Design Pattern
- Builder Design Pattern Introduction
- Builder Design Pattern Implementation
- Fluent Builder Design Pattern
- Prototype Design Pattern Introduction
- Prototype Design Pattern Implementation
- Summary of the Lecture
- Structural Design Patterns Introduction
- Adapter Design Pattern
- Bridge Design Pattern
- Composite Design Pattern
- Decorator Design Pattern
- Facade Design Pattern
- Summary of the Lecture
PART III (ASP.NET Core)
Total Lecture Count: 8 Total Duration: 14:00 Hours (approx.)
- Creating ASP.NET Core web application
- Project files and Item Groups
- Main method and web host builder
- Kestrel Server and IIS/IIS Express
- In-Process and Out-of-Process Hosting
- Configuration files (launchsettings.json and appsettings.json)
- Hosting Environment Variables
- Middleware and Request processing pipeline
- Static Files in ASP.NET Core
- Developer Exception Pages
- Overview of ASP.NET Core MVC
- Model in MVC
- Dependency injection
- Controller in MVC and WebAPI
- Razor Views in MVC
- Customizing View discoveries
- Passing Data to Views
- ViewBag and ViewData
- Strongly typed View
- ViewModel in MVC and MVVM
- List View
- Layout view in ASP.NET Core
- Sections in Layout page
- ViewStart and ViewImport
- Routing in ASP.NET Core
- Install and Use CSL (Bootstrap)
- Tag Helpers and Their Usages
- Image and Environment Tag Helpers
- Bootstrap Navigation menus
- Form tag helpers in ASP.NET Core Application
- Dropdown and Select list Validation
- Configuration services: AddSingleton, AddScoped and AddTransient
- ORM and EntityFramework for Relational entities
- Installing EntityFramework Core (EF Core) with VS
- DbContext in EF Core
- Using SQL Server with EF Core
- Code first and Data first approaches
- Repository pattern in ASP.NET Core
- EF Core Migrations
- EF Core Seed data
- Keeping Domain models and DB Schema in Sync
- Action Methods in ASP.NET Core Controllers
- File uploading and processing
- HTTP requests: HTTPGet and HTTPPost
- Edit action with EF Core
- Delete action with EF Core
- Error handling: 404 Not Found
- UseStatusCodePagesWithRedirects vs UseStatusCodePagesWithReExecute
- Global Exception Handling
- Logging in ASP.NET Core
- Logging to file using nLog
- ASP.NET Core LogLevel Configuration
- Authentication in ASP.NET Core
- Registering New User
- Identity UserManager and SignIn Manager
- Identity Password Complexity
- Implementation of the login functionality
- Authorization in ASP.NET Core
- Redirection and Redirection vulnerabilities
- Client side and remote validations
- Extend Identity User
- Role based Authorization in ASP.NET Core Identity
- Access control of users by Role
- Delete Identity role
- Enforce onDelete No Action
- Claim based Authorization in ASP.NET Core Identity
- Authorization in razor views
- Custom AccessDenied routeClaim Policy based Authorization
- Custom Authorization Policies
- Custom Authorization requirements and handles
- External Identity Providers
- Explanation of OAuth protocols (OAuth 2.0 and later)
- Google OAuth Credentials client id and client secret
- Google authentication UI setup
- External Login Callback action
- ASP.NET Core facebook authentication
- ASP.NET Core secret manager
- Importance of email confirmation
- Enforcing on Email confirmation: Block login
- Email Confirmation
- Password Management in ASP.NET Core Identity
- Forgot Password Handle
- Reset Password implementation
- Explanation: how tokens are proceed
- Password reset token lifetime
- Custom token provider
- ASP.NET Core Encryption and Decryption
- Change password in ASP.NET Core Identity
- Add password to account with External Login
- Account Lockout in Identity
- Wrap up The Module (ASP.NET Core)