The Complete ASP.NET MVC 5 Course
4.6 (5,582 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
18,379 students enrolled
Wishlisted Wishlist

Please confirm that you want to add The Complete ASP.NET MVC 5 Course to your Wishlist.

Add to Wishlist

The Complete ASP.NET MVC 5 Course

Learn to build and deploy fast and secure web applications with ASP.NET MVC 5
Bestselling
4.6 (5,582 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
18,379 students enrolled
Created by Mosh Hamedani
Last updated 8/2016
English
English
Current price: $10 Original price: $190 Discount: 95% off
1 day left at this price!
30-Day Money-Back Guarantee
Includes:
  • 7.5 hours on-demand video
  • 8 Articles
  • 17 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Understand the MVC architectural pattern
  • Implement CRUD operations
  • Build forms with server-side and client-side validation
  • Build RESTful services using ASP.NET Web API
  • Use powerful jQuery plug-ins
  • Implement authentication and authorization using ASP.NET Web API
  • Use Entity Framework to query or update data
  • Understand and apply security best practices
  • Build and deploy applications
  • Create and customize build configurations
  • Manage client / server dependencies
  • Test APIs using PostMan
  • Use AutoMapper
View Curriculum
Requirements
  • C# (at a minimum lambda expressions, LINQ)
  • Basic familiarity with web development (HTML, CSS, JavaScript, jQuery)
Description

With over 17,000 students and 5,000+ positive reviews, this course is Udemy's most popular course for learning ASP.NET MVC! 


ASP.NET MVC is a server-side web framework for building dynamic, data-driven web applications. Since its first release in 2009, it has gained a lot of popularity amongst developers using Microsoft technologies. If you want to get employed as a web developer at a company that utilizes Microsoft technologies, you need to master ASP.NET MVC.


In this course, Mosh, author of seven 5-star Udemy courses, takes you on a fun, hands-on and pragmatic journey to master ASP.NET MVC 5. 

In 7.5 hours of high quality content (equivalent to a 500-page book), you'll learn how to build and deploy fast and secure web applications with ASP.NET MVC 5. 

By the end of watching this course, you'll be able to: 

  • Implement CRUD operations
  • Build forms with validation 
  • Build RESTful services using ASP.NET Web API
  • Use Entity Framework code-first workflow to build a model 
  • Implement security, authentication and authorization using ASP.NET Identity
  • Use powerful jQuery plugins
  • Optimize application's performance  
  • Build and deploy your applications 
  • And much more...



You'll start building a real-world video rental application within minutes. Every section includes a few bite-sized videos, and concludes with one or more coding exercises to help you master what you learn in that section. Finally, in the last section, you'll learn how to 

  • Deploy the application
  • Deploy the database 
  • Create custom build configurations (development, testing, staging, etc)
  • Store application settings in web.config and override them for different environments
  • Secure application settings and connection strings
  • And more...


Whether you're new to ASP.NET MVC or have some experience but are looking for a course to fill in the gaps, you'll love this course. On top of all the core features of ASP.NET MVC, Mosh teaches you a systematic way to build a feature end-to-end. And more importantly, he includes you as part of building a sophisticated feature end-to-end. So, he builds some parts and delegates the other parts to you. 


If you've taken any of Mosh's courses before, you know what you get. He is very passionate, clear and concise in his teaching. Every section and every lecture has been perfectly thought through to lead you on a step-by-step journey from zero to hero with no fluff whatsoever. If you're looking for 10+ hours of wasted time on the content you don't need and a rambling instructor, there are other courses you can enrol in.


PREREQUISITES

In order to take this course, you should have at least 3 months experience programming in C#. Also, any familiarity with Entity Framework will be helpful but not required. 

If you need to strengthen your C# skills or learn Entity Framework in depth, you can watch Mosh's related courses:

  • C# Basics for Beginners (essential knowledge)
  • C# Intermediate: Classes, interfaces and Object-oriented (essential knowledge)
  • C# Advanced (essential knowledge)
  • Entity Framework in Depth (nice to have)


So, if you watch all the lectures and do all the exercises, by the end of this course, you'll have the necessary skills to build real-world applications with ASP.NET MVC 5, or all your money back (within 30 days of taking the course).


So, if you're looking for an ASP.NET MVC course with 

  • A passionate coder and instructor who knows his craft
  • Perfect structure 
  • Balanced mix of theory and practice
  • Clear, concise and bite-sized videos 
  • Lots of real-world examples and coding exercises
  • Discussion of best practices 
  • World-class audio / video production


Don't look further. Enroll in the course now and learn to build and deploy fast and secure web applications with ASP.NET MVC 5.


FREQUENTLY ASKED QUESTIONS


1- Does this course cover ASP.NET Core 1.0? 

No! Once you master ASP.NET MVC 5, you can quickly get up to speed with ASP.NET Core. Mosh has a follow up course on Udemy called "Build a Real-world App with ASP.NET Core and Angular". In this course, you'll get up to speed with ASP.NET Core in the context of building a real app from A to Z. 


2- Why should I pay for this course when there are lots of free tutorials available?

Free tutorials and YouTube videos are free for a reason. They introduce you to a few concepts here and there, but soon you'll find yourself jumping from one tutorial to another to fill the missing gaps. By taking a perfectly-structured course, you'll be confident that you're in good hands, right from the beginning all the way through to the very end. You pay for saving your precious time: the time that you can spend on the things you love. 

Plus, many of these free tutorials, including tutorials published by Microsoft on the official ASP.NET website, teach you poor practices. Throughout this course, Mosh points out some of these poor practices and explains in technical terms why you should avoid them. 


30-DAY FULL MONEY-BACK GUARANTEE

This course comes with a 30-day full money-back guarantee. Take the course, watch every lecture, and do the exercises, and if you feel like this course is not for you, ask for a full refund within 30 days. All your money back, no questions asked



ABOUT YOUR INSTRUCTOR 

Mosh (Moshfegh) Hamedani is a software engineer with 15 years of professional experience, mainly in building web-based applications. He is the author of several best-selling Udemy courses with more than 74,000 students in 182 countries. His students describe him as a passionate, pragmatic and motivational instructor. 


Do you want to learn how to build and deploy fast and secure web application with ASP.NET MVC 5?

If you enroll in the course now, you'll start building your first ASP.NET MVC app within a few minutes. Join the other happy 17,000+ students who have taken this course now and get started.

Who is the target audience?
  • Developers with no knowledge of ASP.NET MVC 5 who want to build web apps with this framework
  • Developers with some experience in ASP.NET MVC 5 who are looking for a comprehensive course to fill the gaps
Students Who Viewed This Course Also Viewed
Curriculum For This Course
Expand All 138 Lectures Collapse All 138 Lectures 07:33:40
+
Getting Started
8 Lectures 29:07

A quick demo of the application we're going to build in this course. 

Preview 02:48

In this lecture, I'll explain all the building blocks of MVC architectural pattern and their responsibilities. You'll learn about models, controllers, views, routers and the benefit of MVC pattern. 

Preview 02:50

In this lecture, I'll show you the tools we'll be using to build our video rental app.

Preview 02:07

In this lecture, we'll create our first ASP.NET MVC app and I'll walk you through various files and folders in the project. By the end of this lecture, you'll know where everything should be. 

Preview 06:55

Next, I'll show you the building blocks of MVC architectural pattern in action. We'll add a model, a controller and a view to build a new page where we display the name of a movie. 

Preview 06:44

The default template that comes with ASP.NET MVC project template looks pretty boring. In this video, I'll show you how to replace it with a beautiful and modern theme.

Preview 02:50

Quiz
6 questions

A quick overview of how this course is structured.

Course Layout
01:55

Asking Questions
02:58
+
ASP.NET MVC Fundamentals
13 Lectures 40:50

A quick introduction about what you're going to learn in this section.

Introduction
00:22

In this lecture, we'll examine action results in more detail. You'll learn about various types of results we can return from our actions. 

Action Results
04:58

In the last lecture, you learned about action results, which are the outputs of our actions. In this lecture, you'll learn about action parameters, which are the inputs to our actions. You'll learn how ASP.NET MVC frameworks maps request data to action parameters. 

Action Parameters
05:54

The default route in ASP.NET MVC works for most cases, but not always. In this lecture, you'll learn how to create a custom route with multiple parameters, and how to use regular expressions to apply constraints on these parameters. 

Convention-based Routing
05:16

Convention-based routing is a poor way of creating custom routes. As the number of custom routes increases, sooner or later, it'll turn into a mess. In this video, I'll show you attribute routing as a cleaner and more maintainable way to create custom routes. 

Attribute Routing
03:28

In this lecture, you'll learn about ViewData and ViewBag and why you should avoid using them. 

Passing Data to Views
04:03

There are times that we need to pass more than one model to a view. That's when we use a view model. A view model is a class the encapsulates the data and rules for a view. In this video, you'll learn how to create and use a view model. 

View Models
03:48

In this video, we'll explore the razor view syntax in ASP.NET MVC. You'll learn how to:

  • render lists
  • render content conditionally
  • render classes dynamically
  • use comments 
Razor Syntax
04:19

In this lecture, you'll learn how you can partial views to break up a large view with a lot of mark up, into smaller, more maintainable partial views. 

Partial Views
04:15

Summary of what you've learned in this section.

Cheat Sheet
00:01

As part of this exercise, you'll create two pages, one to display the list of customers and the other to display the details about that customer. 

Exercise
02:17

In this lecture, I'll introduce you to the GitHub repository I've created for this course. With this repository, you can see my individual commits as well as solution to exercises.

Solution
01:45

Summary of what you've learned in this section and what is coming next.

Summary
00:24
+
Working with Data
15 Lectures 36:37

A quick overview of what you're going to learn in this section.

Introduction
00:31

What is Entity Framework and why do we need it? In this short video, I answer these questions.

Entity Framework
01:35

There are two different workflows to using Entity Framework: Database-first and Code-first. In this lecture, I explain how these workflows work and why I always prefer code-first workflow.

Database-first vs Code-first
03:59

We use code-first migrations to bring the database schema up to date with the domain model of our application. In this lecture, you'll learn how to use code-first migrations to generate and migrate a database.

Code-first Migrations
05:21

In this lecture, we extend the domain model of our app and introduce some complexity. Then, we use code-first migrations again to migrate the database.

Changing the Model
05:36

Sometimes we need to deploy reference data with our application. Examples of this are list of genres, or membership types supported by our application. In this lecture, you'll learn how to seed the database using code-first migrations and ensure consistent reference data across different database environments. 

Seeding the Database
04:18

Code-first uses convention over configuration. While the conventions assumed by Entity Framework work in most situations, sometimes we need to override them. In this lecture, you'll learn how to override code-first conventions using data annotations. 

Overriding Conventions
02:38

Now that you've learned the fundamentals of Entity Framework, it's time to replace the hardcoded data in our application with real data fetched from the database. This lecture shows you how.

Querying Objects
04:28

Sometimes we need to load an object with its related objects. This is referred to as eager loading. In this lecture, you'll learn how to use eager loading to load load customers and their membership types. 

Eager Loading
02:38

When using the code-first workflow, we use Package Manager Console quite often. In this lecture, I'll show you how to create a custom shortcut to quickly open up Package Manager Console.

Shortcut to Package Manager Console
01:00

Summary of what you've learned in this section.

Cheat Sheet
00:02

In this exercise, you'll slightly change the domain model of the application and use code-first migrations to bring the database up to date. Next, you use another migration to update existing reference data in the database.

Exercise 1: Add membership type to list of customers
01:38

As part of this exercise, you extend the customer details page and show various attributes about a given customer. You'll also add the Birthdate property to the Customer type and again use code-first migrations to bring the database up to date. 

Exercise 2: Add birthdate to customer
00:56

In this exercise, you replace the hardcoded list of movies with the movies in the database. You'll also introduce a new type (Genre) and populate the corresponding table using code-first migrations. 

Exercise 3: Display the list of movies and their details
01:29

Summary of what you've learned in this section and what is coming next.

Summary
00:28
+
Building Forms
12 Lectures 43:21

A quick introduction about what you're going to learn in this section.

Introduction
00:16

In this video, you'll learn the mark up we use to build modern and responsive forms. You'll also learn about common HTML helpers like LabelFor, TextBoxFor, DropDownListFor, CheckBoxFor, and so on.

The Markup
07:39

In this video, you'll learn how to override the labels in your forms using the Display annotation.

Labels
02:56

Rendering drop-down lists requires a little bit extra work. This video teaches you how to encapsulate your data in a view model and render a drop-down list using @Html.DropDownListFor and SelectList.

Drop-down Lists
07:33

In this video, you'll learn what model binding is and how it works. 

Model Binding
03:48

Our form is ready. Now it's time to save the data. This video shows you how to persist data using Entity Framework.

Saving Data
01:26

In this video, we'll re-use the form we created earlier to edit an existing customer. 

Edit Form
05:43

In this video, I explain the issues with TryUpdateModel in ASP.NET MVC and why you should avoid it. You'll also learn how to update data using Entity Framework.

Updating Data
07:23

A quick summary of what you've learned in this section.

Cheat Sheet
00:01

As part of this exercise, you'll build a form to add / edit movies. 

Exercise
02:00

One of the common mysterious exceptions with Entity Framework is DbEntityValidationException. In this video, you'll learn what this exception is, how to find the actual source of the problem and how to resolve it. 

Troubleshooting Entity Validation Errors
04:06

Summary of what you've learned in this section and what is coming next.

Summary
00:30
+
Implementing Validation
13 Lectures 41:07

A quick introduction about what you're going to learn in this section.

Introduction
00:24

In this lecture, I'll show you the 3 steps you need to follow to add validation to your forms.

Adding Validation
03:27

Validation errors are black by default. In this lecture you'll learn how to apply a style to them to make them stand out.

Styling Validation Errors
03:25

This lecture lists the standard data annotations that you can use in your ASP.NET MVC applications.

Data Annotations
01:05

Standard data annotations are good, but not enough. Sometimes you need custom validation. In this lecture, I'll make up a business rule for our application and show you how to implement a custom validator for one of the fields in our form.

Custom Validation
06:24

In this video, you'll learn a technique to remove magic numbers from your code and improve its readability and maintainability. 

Refactoring Magic Numbers
03:28

As a usability best practice, it's good to display a summary message on top of a form with invalid fields. This lecture shows you how.

Validation Summary
04:05

Client-side validation is not enabled in your ASP.NET MVC applications by default. In this video, I'll show you how to enable it. 

Client-side Validation
05:35

In this video, I'll show you a security vulnerability in our form that allows an attacker create customers on behalf of a user without their knowledge. This is referred to as CSRF or Cross-site Request Forgery. Once you understand how it works, you'll learn how to prevent it.

Anti-forgery Tokens
04:51

Summary of what you've learned in this section.

Cheat Sheet
00:01

In this exercise, you'll add validation to add/edit movie form.

Exercise
01:41

In this video, I introduce you to what I call "pure view models". You'll also learn a few simple ways to refactor your code and make it cleaner and more maintainable.

Code Review
06:11

Summary of what you've learned in this section and what is coming next.

Summary
00:30
+
Building RESTful Services with ASP.NET Web API
12 Lectures 38:59

A quick introduction about what you're going to learn in this section.

Introduction
00:20

In this lecture, you'll learn about HTTP services or Web APIs and their benefits along with some real-world examples.

What is a Web API?
03:44

In this lecture, you'll learn the basics of RESTful convention for building http services or web APIs.

RESTful Convention
01:47

In this lecture, we'll build an API for CRUD operations around customers. 

Building an API
09:21

In this lecture, I'll introduce you to a very useful, simple and lightweight Chrome plug-in for testing Web APIs. 

Testing an API
03:58

There are two issues in the implementation of the API we've built. The contract of this API is fragile and can break easily. Also, there are security holes in this API. So, in this video, I'll show you how to use a data transfer object to resolve these issues.

Data Transfer Objects
03:57

Mapping domain objects to DTOs and vice versa can be tedious. So, in this lecture, I'll show you a simple convention-based mapping tool AutoMapper. 

Auto Mapper
07:31

By default, ASP.NET Web API uses pascal naming convention in the JSON objects returned from Web APIs. But using objects with pascal naming convention is ugly in Javascript as we use camel casing in Javascript. In this lecture, I'll show you how to enable camel casing in Web API.

Using Camel Notation
02:09

While we can simply return types like Customer or IEnumerable<Customer> from our APIs, to better confirm with RESTful conventions, we need more control over the generated response. In this lecture, I'll show you how to use IHttpActionResult to achieve that. 

IHttpActionResult
04:51

A quick summary of what you've learned in this section.

Cheat Sheet
00:01

As part of this exercise, you'll build an API for CRUD operations around movies.

Exercise
00:44

Summary of what you've learned in this section and what is coming next.

Summary
00:36
+
Client-side Development
13 Lectures 36:03

A quick introduction about what you're going to learn in this section.

Introduction
00:33

In this lecture, you'll learn how to use jQuery AJAX to call an API. We'll use this technique to delete a customer.

Calling an API Using jQuery
06:47

The native confirmation box in JavaScript is pretty boring. So, in this video I'll show you how to display beautiful and modern Bootstrap dialog boxes.

Bootbox Plug-in
03:36

A simple change in how you handle events in jQuery can have a noticeable impact on how much of the browser's memory your application uses. This video shows you how.

Optimizing jQuery Code
01:29

In most applications where we display tabular data, we often need to implement searching, sorting and pagination in our tables. In this video, I'll introduce you to DataTables plug-in, which gives you all this functionality without writing any additional code.

DataTables Plug-in
05:32

While you can initialize a DataTable using the existing data in the DOM, it's better and more efficient to load it using data from an API. In this video, we'll configure our DataTable to use the customers API as its data source.

DataTables with Ajax Source
06:45

Sometimes your APIs need to return hierarchical data. This video shows you the necessary steps required to do this.

Returning Hierarchical Data
03:37

When using DataTables plugin, you shouldn't remove rows from the DOM, because the data is still in the internal list of DataTable. In this video, I'll show you how to properly remove a row.

DataTables: Removing Records
02:09

In this video, I'll briefly discuss a couple of things about performance of data tables when dealing with a large dataset, as well as refactoring our JavaScript code.

DataTables: Discussion Points
02:08

What are single page applications and what advantages do they provide? This video gives you the answers.

Single Page Applications (SPAs)
02:31

A quick summary of what you've learned in this section.

Cheat Sheet
00:01

As part of this exercise, you'll add DataTables to the list of movies. You'll also use Bootbox and jQuery AJAX to delete a movie.

Exercise
00:22

A summary of what you've learned in this section and what is coming next. 

Summary
00:33
+
Authentication and Authorization
13 Lectures 45:23

A quick introduction about what you're going to learn in this section.

Introduction
00:21

In this lecture, we'll explore the authentication/authorization requirements for our application.

The Problem
00:58

There are various ways to authenticate users in ASP.NET MVC apps. In this lecture, I'll show you various authentication options and I'll explain when to use each.

Authentication Options
02:33

ASP.NET MVC applications use a framework called ASP.NET Identity for controlling authentication and authorization. In this lecture, I'll give you an overview of the architecture of ASP.NET Identity.

ASP.NET Identity
04:13

In this lecture, you'll learn how to restrict access to certain actions to authenticated users. 

Restricting Access
03:14

In this lecture, I'll show you a reliable workflow for seeding your database with users and roles. With this workflow, you can deploy your application to any environments (testing, staging, production) and they all will have the same default users and roles.

Seeding Users and Roles
08:44

In many real-world applications, the roles a user has determine what they can see and perform in the application. In this lecture, you'll learn how to restrict managing movies to admin users. 

Working with Roles
06:08

The IdentityUser class that comes with ASP.NET Identity is very basic. In most real-world applications, you need to add additional properties to this user. We refer to these extra properties as "profile". In this lecture, you'll learn how to extend ASP.NET Identity users and capture extra properties during the sign up process.

Adding Profile Data
04:22

In this lecture, you'll learn about OAuth protocol and how it enables you to let users log in using their Facebook, Google, Twitter and other social accounts. 

OAuth
03:22

In this lecture, we'll extend our application and enable users to log in using their Facebook account. 

Social Logins
09:16

A chat sheet for quickly reviewing what you've learned in this section.

Cheat Sheet
00:01

A few exercises that help you master what you've learned in this section.

Exercise
01:31

A quick overview of what you've learned in this section and what is coming next.

Summary
00:40
+
Performance Optimization
13 Lectures 38:54

A quick introduction about what you're going to learn in this section.

Introduction
00:20

In this lecture, I'll introduce you to three-tier architecture and the impact of performance tuning in each tier. 

Overview
04:50

This lecture provides various strategies for optimizing performance at the data tier. 

Data Tier
04:45

Glimpse is an extremely useful and popular profiling tool amongst ASP.NET MVC developers. In this lecture, I'll give you an overview of using Glimpse.

Glimpse
06:33

In this lecture, you'll learn how to cache the output of actions (HTML) so subsequent requests are served from the cache. 

Output Cache
04:53

Sometimes you need to store data (instead of HTML markup) in the cache. This lecture shows you how.

Data Cache
04:16

A common misconception about asynchronous programming in .NET 4.5 (async/await) is that it improves the performance of an application. In this lecture, I'll uncover this misconception.

Async
03:03

In this lecture, I'll introduce you to debug / release builds and their differences.

Release Builds
00:38

In the old days, session was a popular storage for temporary data during user's browsing session. These days, session does not have much place in modern, scalable apps. In this lecture, I'll explain why. 

Disabling Session
01:52

In this lecture, I'll show you a few techniques for optimizing performance at the client tier. 

Client Tier
04:52

Sometimes during development, you may get unexpected results from your actions. This could be due to browser caching. In this lecture, I'll show you how to disable caching in Chrome Developer Tools. 

Chrome Developer Tools Tip
01:15

A cheat sheet to quickly review what you've learned in this section.

Cheat Sheet
00:01

A quick summary of what you've learned in this section and what's coming next.

Summary
01:36
+
Building a Feature End-to-End Systematically
16 Lectures 01:00:03

A quick introduction about what we're going to build in this section.

Introduction
01:12

In this lecture, we'll examine the New Rental use case in detail. This will guide us in the right direction to implement this feature. 

Understanding the Problem
04:35

Our domain model currently doesn't support rentals. So, in this lecture, we'll examine the necessary changes we need to make to the domain. As an exercise, you're required to make these changes in the code and bring the database up to date using code-first migrations.

Domain Modelling
02:41

In this lecture, we'll review my code for updating the domain and bring our database up to date. Next, as an exercise, you'll implement the happy path for our API.

Building the Simplest API
01:29

Our happy path is ready. Next, we look at the availability of movies as part of our rental process. I'll show you two different solutions to determine availability of movies and compare them side by side. Finally, as an exercise, you'll make the necessary changes in the code to add support for determining availability.

Adding the Details
04:54

In this lecture, we'll look at various edge cases for our new rental use case. I'll show you two ways to handle these edge cases (defensive and optimistic). You'll see the difference between these two approaches in action.

Edge Cases
05:41

In the previous sections, we used HTML forms to send data to the server. In this section, we're going to use a different approach: we'll use AJAX. As part of this section, I'll show you a great technique for creating HTML markup fast. It's called Zencoding!

Building the Front-end
06:09

We have a basic form. Now, it's time to add details. In this lecture, you'll learn how to add autocompletion to a text box using Typeahead jQuery plugin. 

Adding Auto-completion
08:51

The user should be able to select multiple movies. As they look up movies in the suggestion list, we should add them to the page. We need to update the DOM. In this lecture, you'll learn how to do this. I'll also briefly talk about data binding, what it is and how it helps us write cleaner, more maintainable and testable code. 

Updating the DOM
03:08

This lecture is all about HTML and CSS techniques to improve the look and feel of our form. 

Improving the Look and Feel
03:45

In this lecture, we'll modify one of our APIs and add support to filter records. As an exercise, you'll make a similar change in another API endpoint. 

Filtering Records
02:25

Our form is almost ready. In this lecture, you'll learn how to submit data using AJAX to our API. 

Submitting the Form
03:05

In this lecture, you'll learn how to use the jQuery Toastr plug-in to display toast notifications. 

Displaying Toast Notifications
01:24

And finally, we'll implement client-side validation using jQuery validation plugin. You'll learn how to create custom validation rules and plug them into your forms. 

Implementing Client-side Validation
04:54

In this lecture, we'll review my code and fix a couple of small bugs in our form. 

Code Review
03:54

A quick recap of the systematic approach to build a feature end to end.

Summary
01:56
1 More Section
About the Instructor
Mosh Hamedani
4.6 Average rating
30,570 Reviews
89,914 Students
14 Courses
Passionate Software Engineer and Best-selling Author

Moshfegh Hamedani is a passionate and creative software engineer with a strong focus on pragmatism and simplicity. He started programming at the age of seven on a Commodore 64. Later, during his high school years, he started learning C and C++ . In 2002, along with the first release of .NET, he shifted his focus to C#. Since then he has been involved in the design and implementation of numerous software projects, including modern web applications, mobile apps, desktop applications and frameworks.

Aside from his career as a software engineer, he truly enjoys sharing his knowledge with others. Since his early twenties, he has been teaching courses and running workshops on C#, ASP. NET, object-oriented programming and clean coding. He is author of 6 best-selling courses on Udemy and more will be coming soon.

Mosh has a Master of Science in Network Systems and a Bachelor of Science in Software Engineering. He is also a Microsoft Certified Application Developer, Technology Specialist (Web Applications) and Professional.

Outside the software world, Mosh is a photographer, a pianist and a passionate Latin dancer.