Course Content
Introducing C# and the .NET Framework
- Introduction to the .NET Framework
- Creating Projects Within Visual Studio 2010
- Writing a C# Application
- Building a Graphical Application
- Documenting an Application
- Running and Debugging Applications by Using Visual Studio 2010
Lab
- C# and the .NET Framework
- Building a Simple Console Application
- Building a WPF Application
- Verifying the Application
- Generating Documentation for an Application
Using C# Programming Constructs
- Declaring Variables and Assigning Values
- Using Expressions and Operators
- Creating and Using Arrays
- Using Decision Statements
- Using Iteration Statements
Lab
- Using C# Programming Constructs
- Calculating Square Roots with Improved Accuracy
- Converting Integer Numeric Data to Binary
- Configuring the Multiplying Matrices
Declaring and Calling Methods
- Defining and Invoking Methods
- Specifying Optional Parameters and Output Parameters
Lab
- Declaring and Calling Methods
- Calculating the Greatest Common Divisor of Two Integers by Using Euclid's Algorithm
- Calculating the GCD of Three, Four, or Five Integers
- Comparing the Efficiency of Two Algorithms
- Displaying Results Graphically
- Solving Simultaneous Equations (optional)
Exceptions
- Handling Exceptions
- Raising Exceptions
Lab
- Making a Method Fail-Safe
- Detecting an Exceptional Condition
- Checking for Numeric Overflow
Reading and Writing Files
- Accessing the File System
- Reading and Writing Files by Using Streams
Lab
- Building a Simple Editor
- Making the Editor XML Aware
Creating New Types
- Creating and Using Enumerations
- Creating and Using Classes
- Creating and Using Structs
- Comparing References to Values
Lab
- Using Enumerations to Specify Domains
- Using a Struct to Model a Simple Type
- Using a Class to Model a More Complex Type
- Using a NullableStruct
Encapsulating Data and Methods
- Controlling Visibility of Type Members
- Sharing Methods and Data
Lab
- Hiding Data Members
- Using Static Members to Share Data
- Implementing an Extension Method
Inheriting From Classes and Implementing Interfaces
- Using Inheritance to Define New Reference Types
- Defining and Implementing Interfaces
- Defining Abstract Classes
Lab
- Defining an Interface
- Implementing an Interface
- Creating an Abstract Class
Managing the Lifetime of Objects and Controlling Resources
- Introduction to Garbage Collection
- Managing Resources
Lab
- Implementing the IDisposable Interface
- Managing Resources Used By an Object
Encapsulating Data and Defining Overloaded Operators
- Creating and Using Properties
- Creating and Using Indexers
- Overloading Operators
Lab
- Defining Properties in an Interface
- Implementing Properties in a Class
- Using Properties Exposed By a Class
- Implementing an Indexer to Access Bits in a Control Register
- Using an Indexer Exposed by a Class
- Defining the Matrix and MatrixNotCompatible Types
- Implementing Operators for the Matrix Type
- Testing the Operators for the Matrix Type
- Explain how properties work and use them to encapsulate data
- Describe how to use indexers to access data through an array-like syntax
- Describe how to use operator overloading to define operators for your own types
Decoupling Methods and Handling Events
- Declaring and Using Delegates
- Using Lambda Expressions
- Handling Events
Lab
- Raising and Handling Events
- Using Lambda Expressions to Specify Code
Using Collections and Building Generic Types
- Using Collections
- Creating and Using Generic Types
- Defining Generic Interfaces and Understanding Variance
- Using Generic Methods and Delegates
Lab
- Optimizing a Method by Caching Data
- Defining a Generic Interface
- Implementing a Generic Interface
- Implementing a Test Harness for the BinaryTree Project
- Implementing a Generic Method
Building and Enumerating Custom Collection Classes
- Implementing a Custom Collection Class
- Adding an Enumerator to a Custom Collection Class
Lab
- Implementing the IListTItem Interface
- Implementing an Enumerator by Writing Code
- Implementing an Enumerator by Using an Iterator
Using LINQ to Query Data
- Using the LINQ Extension Methods and Query Operators
- Building Dynamic LINQ Queries and Expressions
Lab
- Using the LINQ Query Operators
- Building Dynamic LINQ Queries
Integrating Visual C# Code with Dynamic Languages and COM Components
- Integrating C# Code with Ruby and Python
- Accessing COM Components from C#
Lab
- Integrating Code Written by Using a Dynamic Language into a C# Application
- Using a COM Component from Visual C# Application