Course Outline Module 1: Review of Visual C# Syntax The Microsoft .NET Framework version 4.7 provides a comprehensive development platform that you can use to build, deploy, and manage applications and services. By using the .NET Framework, you can create visually compelling applications, enable seamless communication across technology boundaries, and provide support for a wide range of business processes. In this module, you will learn about some of the core features provided by the .NET Framework and Microsoft Visual Studio. You will also learn about some of the core Visual C# constructs that enable you to start developing .NET Framework applications. Lessons • Overview of Writing Application by Using Visual C# • Data Types, Operators, and Expressions • Visual C# Programming Language Constructs Lab: Implementing Edit Functionality for the Students List • Implementing Insert Functionality for the Students List • Implementing Delete Functionality for the Students List • Displaying a Student’s Age After completing this module, students will be able to: • Describe the architecture of .NET Framework applications and the features that Visual Studio 2017 and Visual C# provide. • Use basic Visual C# data types, operators, and expressions. • Use standard Visual C# constructs. Module 2: Creating Methods, Handling Exceptions, and Monitoring Applications Applications often consist of logical units of functionality that perform specific functions, such as providing access to data or triggering some logical processing. Visual C# is an object-orientated language and uses the concept of methods to encapsulate logical units of functionality. A method can be as simple or as complex as you like, and therefore it is important to consider what happens to the state of your application when an exception occurs in a method. In this module, you will learn how to create and use methods and how to handle exceptions. You will also learn how to use logging and tracing to record the details of any exceptions that occur. Lessons • Creating and Invoking Methods • Creating Overloaded Methods and Using Optional and Output Parameters • Handling Exceptions • Monitoring Applications Lab: Extending the Class Enrolment Application Functionality • Refactoring the Enrolment Code • Validating Student Information • Saving Changes to the Class List After completing this module, students will be able to: • Create and invoke methods. • Create overloaded methods and use optional parameters. • Handle exceptions. • Monitor applications by using logging, tracing, and profiling Module 3: Basic types and constructs of Visual C# To create effective applications by using Windows Presentation Foundation (WPF) or other .NET Framework platforms, you must first learn some basic Visual C# constructs. You need to know how to create simple structures to represent the data items you are working with. You need to know how to organize these structures into collections, so that you can add items, retrieve items, and iterate over your items. Finally, you need to know how to subscribe to events so that you can respond to the actions of your users. In this module, you will learn how to create and use structs and enums, organize data into collections, and create and subscribe to events. Lessons • Implementing Structs and Enums • Organizing Data into Collections • Handling Events Lab: Writing the Code for the Grades Prototype Application • Adding Navigation Logic to the Grades Prototype Application • Creating Data Types to Store User and Grade Information • Displaying User and Grade Information After completing this module, students will be able to: • Create and use structs and enums. • Use collection classes to organize data. • Create and subscribe to events. Module 4: Creating Classes and Implementing Type-Safe Collections In this module, you will learn how to use interfaces and classes to define and create your own custom, reusable types. You will also learn how to create and use enumerable, type-safe collections of any type. Lessons • Creating Classes • Defining and Implementing Interfaces • Implementing Type-Safe Collections Lab : Adding Data Validation and Type-Safety to the Application • Implementing the Teacher, Student, and Grade Structs as Classes • Adding Data Validation to the Grade Class • Displaying Students in Name Order • Enabling Teachers to Modify Class and Grade Data After completing this module, you will be able to: • Create and instantiate classes. • Create and instantiate interfaces. • Use generics to create type-safe collections. Module 5: Creating a Class Hierarchy by Using Inheritance In this module, you will learn how to use inheritance to create class hierarchies and to extend .NET Framework types.
Lessons • Creating Class Hierarchies • Extending .NET Framework Classes Lab: Refactoring Common Functionality into the User Class • Refactoring Common Functionality into the User Class • Implementing Password Complexity by Using an Abstract Method • Creating the ClassFullException Custom Exception After completing this module, you will be able to: • Create base classes and derived classes by using inheritance. • Create classes that inherit from .NET Framework classes. Module 6: Reading and Writing Local Data In this module, you will learn how to read and write data by using transactional file system I/O operations, how to serialize and deserialize data to the file system, and how to read and write data to the file system by using streams. Lessons • Reading and Writing Files • Serializing and Deserializing Data • Performing I/O by Using Streams Lab: Generating the Grades Report • Serializing Data for the Grades Report as XML • Previewing the Grades Report • Persisting the Serialized Grade Data to a File After completing this module, you will be able to: • Read and write data to and from the file system by using file I/O. • Convert data into a format that can be written to or read from a file or other data source. • Use streams to send and receive data to or from a file or data source. Module 7: Accessing a Database In this module, you will learn how to create and use entity data models (EDMs) and how to query many types of data by using Language-Integrated Query (LINQ). Lessons • Creating and Using Entity Data Models • Querying Data by Using LINQ Lab : Retrieving and Modifying Grade Data • Creating an Entity Data Model from The School of Fine Arts Database • Updating Student and Grade Data by Using the Entity Framework • Extending the Entity Data Model to Validate Data After completing this module, you will be able to: • Create, use, and customize an EDM. • Query data by using LINQ. Module 8: Accessing Remote Data In this module, you will learn how to use the request and response classes in the System.Net namespace to directly manipulate remote data sources. You will also learn how to use Windows Communication Foundation (WCF) Data Services to expose and consume an entity data model (EDM) over the web. Lessons • Accessing Data Across the Web • Accessing Data by Using OData Connected Services Lab : Retrieving and Modifying Grade Data Remotely • Creating a WCF Data Service for the School Grades Database • Integrating the Data Service into the Application • Retrieving Student Photographs Over the Web (If Time Permits) After completing this module, you will be able to: • Send data to and receive data from web services and other remote data sources. • Access data by using WCF Data Services. Module 9: Designing the User Interface for a Graphical Application In this module, you will learn how to use Extensible Application Markup Language (XAML) and Windows Presentation Foundation (WPF) to create engaging UIs. Lessons • Using XAML to Design a User Interface • Binding Controls to Data Lab : Customizing Student Photographs and Styling the Application • Customizing the Appearance of Student Photographs • Styling the Logon View • Animating the StudentPhoto Control (If Time Permits) After completing this module, you will be able to: • Use XAML to design a UI. • Bind a XAML control to data. • Apply styles to a XAML UI. Module 10: Improving Application Performance and Responsiveness In this module, you will learn how to improve the performance of your applications by distributing your operations across multiple threads. Lessons • Implementing Multitasking • Performing Operations Asynchronously • Synchronizing Concurrent Access to Data Lab : Improving the Responsiveness and Performance of the Application • Ensuring That the UI Remains Responsive When Retrieving Teacher Data • Providing Visual Feedback During Long-Running Operations After completing this module, you will be able to: • Use the Task Parallel Library to implement multitasking. • Perform long-running operations without blocking threads. • Control how multiple threads can access resources concurrently.
Module 11: Integrating with Unmanaged Code In this module, you will learn how to interoperate unmanaged code in your applications and how to ensure that your code releases any unmanaged resources. Lessons • Creating and Using Dynamic Objects • Managing the Lifetime of Objects and Controlling Unmanaged Resources Lab : Upgrading the Grades Report • Generating the Grades Report by Using Word • Controlling the Lifetime of Word Objects by Implementing the Dispose Pattern After completing this module, you will be able to: • Integrate unmanaged code into a Microsoft Visual C# application by using the Dynamic Language Runtime (DLR). • Control the lifetime of unmanaged resources and ensure that your application releases resources. Module 12: Creating Reusable Types and Assemblies In this module, you will learn how to consume existing assemblies by using reflection and how to add additional metadata to types and type members by using attributes. You will also learn how to generate code at run time by using the Code Document Object Model (CodeDOM) and how to ensure that your assemblies are signed and versioned, and available to other applications, by using the global assembly cache (GAC). Lessons • Examining Object Metadata • Creating and Using Custom Attributes • Generating Managed Code • Versioning, Signing, and Deploying Assemblies Lab : Specifying the Data to Include in the Grades Report • Creating and Applying the IncludeInReport attribute • Updating the Report • Storing the Grades.Utilities Assembly Centrally (If Time Permits) After completing this module, you will be able to: • Use reflection to inspect and execute assemblies. • Create and consume custom attributes. • Generate managed code at run time by using CodeDOM. • Version, sign, and deploy your assemblies to the GAC. Module 13: Encrypting and Decrypting Data In this module, you will learn how to implement symmetric and asymmetric encryption and how to use hashes to generate mathematical representations of your data. You will also learn how to create and manage X509 certificates and how to use them in the asymmetric encryption process. Lessons • Implementing Symmetric Encryption • Implementing Asymmetric Encryption Lab : Encrypting and Decrypting the Grades Report • Encrypting the Grades Report • Encrypting the Grades Report After completing this module, you will be able to: • Encrypt data by using symmetric encryption. • Encrypt data by using asymmetric encryption.