Learning Objectives

Listed below are the competencies you should demonstrate by the time you've completed each class's work.

Class 1

  • Install Visual Studio
  • Open a Project/Solution
  • Create a simple Hello World console app
  • Navigate files and folders in Visual Studio
  • Explain the difference between dynamically and statically typed languages
  • Create a static method
  • Use arrays in C#
  • Explain the difference between value and reference types
  • Describe what using does
  • Use Console.ReadLine and Console.WriteLine
  • Parse data types
  • Use string methods
  • Use C# naming conventions

Class 2

  • Use for loops, for-each loops, while loops, and do-while loops
  • Use if, if-else, and else if conditional statements
  • Describe what a data structure is and why it is useful
  • Explain the differences between the collection types (Array, List, and Dictionary)
  • Create an Array, List, and Dictionary
  • Utilize List and Dictionary methods and properties
  • Iterate through lists and dictionaries
  • Format strings and escape characters
  • Use the StringBuilder class
  • Demonstrate basic working knowledge of Visual Studio IDE, including use of the debugger

Class 3

  • Describe what filters in ASP.NET Core MVC do
  • Explain the characteristics of each component of MVC
  • Create a new Web Application project in Visual Studio
  • Create new controllers and action methods
  • Explain why you have to pass another argument to render HTML when you use return Content()
  • Describe the default routing behavior and how you can customize it with [Route("..")]
  • Explain when and why you would want to use [HttpGet] and [HttpPost]
  • Handle GET requests that have query parameters
  • Handle GET requests that pass parameters via URL segments
  • Access POST parameters
  • Redirect users

Class 4

  • Explain how the View() method works
  • Explain what it means to say that Core MVC is a "convention over configuration" approach.
  • Create a new Views folder
  • Create a new Razor template
  • Describe what is provided by the _Layout.cshtml file
  • Utilize C# code in a template
  • Use the asp-controller and asp-action attributes
  • Use the ViewBag class

Class 5

  • Define encapsulation and explain how it results in better code
  • Explain the relationship between a class and an object
  • Properly use the this keyword
  • Explain and properly use access modifiers
  • Explain why fields should almost always be private
  • Describe what accessors (getters and setters) are and why they are useful
  • Explain what a property is and what code is created by the compiler when you create an auto-implemented property
  • Describe what a constructor is and how you can identify it
  • Create overloaded constructors
  • Use this() to invoke one constructor from within another in the same class
  • Utilize static fields and properties (and explain when you would want to)
  • Explain what constants are and how to declare them (and what naming convention to use)

Class 6

  • Define and call instance methods of an object
  • Define and call static methods
  • Explain why instance variables may not be referenced within static methods
  • Write a custom ToString method for a given class
  • Explain the concepts of object identity and equality, and how they differ
  • Explain the use of Equals to determine when two objects are equal
  • Explain the behavior of == with respect to objects in C#
  • Use the Single Responsibility Principle to create small, well-designed classes
  • Describe and implement the best practices for implementing Equals within a class
  • Explain when GetHashCode should be implemented within a class
  • Use the GetType method to determine the class of an object
  • Use Visual Studio's shortcuts to generate well-structured Equals and GetHashCode methods

Class 7

  • Define inheritance and explain how it works in C#
  • Use : to allow one class to inherit from another
  • Explain which fields and methods are inherited by a class extension, based on C#'s rules and taking into account access modifiers
  • Call a parent class constructor from a child class constructor using base
  • Override methods when extending a class (and declare which methods can be overridden using virtual)
  • Describe the role of the Object class in each class' hierarchy
  • Describe and use abstract classes and abstract methods
  • Explain how variable and parameter declaration relates to inheritance (i.e. how inheritance enables polymorphic behavior)
  • Use basic class diagrams to visualize and design class relationships

Class 8

  • Write LINQ queries and methods
  • Explain how the var keyword works
  • Explain what a lambda function is and how you would use it in a LINQ method
  • Define what a POCO is
  • Describe what the Model part of MVC is used for
  • Differentiate between what kind of functionality should be handled by the Model versus the Controller
  • Explain what refactoring is
  • Describe what model binding does, what its benefits are, and how to use it
  • Describe how to use a unique identifier in a class (as we did when we solved the "remove" functionality problem)
  • Explain why the names of the class fields must match the names of the form fields for model binding to work

Class 9

  • Describe how ViewModels work and why you would want to use them
  • Use tag helpers, such as asp-for and asp-validation-for in your view to utilize the ViewModel
  • Explain how you can use ViewModels to help add a layer of validation
  • Use the [Required] attribute
  • Display error messages in the view
  • Explain what enum types are and when you would want to use them
  • Use an enum type and then represent that data in a <select> element.

Class 10

  • Define what an exception is
  • Describe what happens "behind the scenes" when an exception occurs
  • Explain what the following terms and phrases mean: throw an exception, call stack, exception handler, catch the exception
  • Explain how to throw an exception
  • Describe the practices to avoid when throwing an exception
  • Explain what purposes the StackTrace and Message properties of exceptions serve
  • Describe how to use the three exception handler components: the try, catch, and finally blocks
  • Explain how to use the InnerException property
  • Create your own custom exception classes
  • Describe some of the exceptions that .NET's CLR automatically throws (e.g., Arithmetic Exception, InvalidCastException, StackOverflowException)
  • Describe the advantages of exceptions
  • Explain what the best practices are for exception handling
  • Use exceptions appropriately in your programs (follow the golden rules of handling exceptions)

Class 11

  • Define polymorphism
  • Describe what an interface is and how it enables polymorphism
  • Explain whether an interface can be instantiated
  • Implement common standard C# interfaces
  • Use the appropriate interface for collection types depending on the behavior they must exhibit
  • Describe the differences between abstract classes and interfaces
  • Explain what the benefits are to "coding to an interface"
  • Use the IComparer<T> interface

Class 12

  • Setup EntityFrameworkCore in Visual Studio
  • Define Object-Relational Mapping
  • Describe what a data layer is and how it is used in ORM
  • Explain what the acronym CRUD stands for
  • Describe the one-to-many relationship
  • Describe the many-to-many relationship
  • Explain what migrations are
  • Use the cmd.exe command prompt
  • Create, add, and remove migrations in the EntityFrameworkCore

Class 13

  • Describe the many-to-many relationship and give an example of when this may be a good way to represent data in your database
  • Explain what a join table is and how it is used
  • Define what a composite key is
  • Build model classes that enable persistent many-to-many relationships
  • Work with many-to-many relationships in the view and controller
  • Push the changes you make to objects in your program to the database

Class 14

  • Celebrate your completion of LC101!