Right usage of ViewModels in MVC
In your case CoursesViewModel includes the logic of retrieving entities from db. It should be moved to a service/a repository. ViewModel should include only properties to be shown in the view and some displaying logic in order not to put a lot of server code to the view. 

public class HomeController : Controller
{
    // should CRUD products from db 
    private readonly IProductService _productService;

    public HomeController(IProductService productService)
    {
        _productService = productService;
    }

    [HttpGet]
    public ActionResult Index()
    {
        var products = _productService.GetProducts(123);
        var model = new ProductViewModel(products);
        return View(model);
    }
}

public class ProductViewModel
{
    public ProductViewModel(IEnumerable&lt;Product&gt; products)
    {
        // init viewmodel here or use some mapper
        this.products = products;
    }

    // only those properties which are going to be displayed in your view

    public int ProductsCount { get; set; }
    public decimal Total { get; set; }
    public string VatCodeApplied { get; set; }

    // ...

    private IEnumerable&lt;Product&gt; products;
}

public interface IProductService
{
    IEnumerable&lt;Product&gt; GetProducts(int userAccountId);

    // ...
}

public class Product
{
    // ...
}