Home
Assignments
Fundamentals of IT
Programming Concepts 1
Programming Concepts 2
Programming Concepts 3
Object-Oriented Programming A
Object-Oriented Programming B
Object-Oriented Programming C
Object-Oriented Design A
Object-Oriented Design B
Object-Oriented Design C
Advanced .NET Programming A
Advanced .NET Programming B
Advanced .NET Programming C
Content
Fundamentals of IT
Programming Concepts 1
Programming Concepts 2
Programming Concepts 3
Object-Oriented Programming A
Object-Oriented Programming B
Object-Oriented Programming C
Advanced .NET Programming A
Advanced .NET Programming B
Advanced .NET Programming C
Topics
Glossary
Links
Canvas
Socrative
Feedback System
NTC Slack
NTC Email
Software Installations
Programming Concepts 3
Review
Fundamentals of IT
Programming Concepts 1
Programming Concepts 2
Chapter 3.1 - Validation
3.1.1 Choosing a Validation Strategy [14 minutes]
3.1.2 Common Data Validation Techniques [14 minutes]
3.1.3 Fail Fast Design [15 minutes]
3.1.4 Evaluating a Validation Design Against Constraints [14 minutes]
3.1.5 Validation vs Normalization [14 minutes]
3.1.6 Checking for Null, Empty, and Whitespace Strings [14 minutes]
3.1.7 Combining Multiple Validation Rules [14 minutes]
3.1.8 Converting Text Input With TryParse [15 minutes]
3.1.9 Normalizing Letter Case With ToLower() [14 minutes]
3.1.10 Normalizing String Input [10 minutes]
3.1.11 Protecting Applications From Invalid Input [10 minutes]
3.1.12 Removing Leading and Trailing Whitespace With Trim() [10 minutes]
3.1.13 Replacing Hardcoded Validation Values [10 minutes]
3.1.14 Reporting Validation Errors to the User [10 minutes]
3.1.15 Testing Boundary Values [14 minutes]
3.1.16 Validating Before Changing Object State [14 minutes]
3.1.17 Validating Numeric Ranges [15 minutes]
3.1.18 Reading Boolean Input From WPF Check Boxes [15 minutes]
3.1.19 Reading Input From WPF Text Boxes [15 minutes]
Chapter 3.2 - Exception Handling
3.2.1 Exception Propagation [10 minutes]
3.2.2 Understanding the Purpose of Exceptions [15 minutes]
3.2.3 When Not to Catch an Exception [10 minutes]
3.2.4 Catching Specific Exceptions [10 minutes]
3.2.5 Deciding When to Throw and Catch an Exception [11 minutes]
3.2.6 Handling Exceptions With try and catch [10 minutes] (Last Updated: 8/25/2026)
3.2.7 Handling Invalid Values With Exceptions [9 minutes] (Last Updated: 8/25/2026)
3.2.8 Ordering Catch Blocks [8 minutes] (Last Updated: 8/25/2026)
3.2.9 Preserving Exception Information [10 minutes] (Last Updated: 8/25/2026)
3.2.10 Throwing Exceptions [9 minutes] (Last Updated: 8/25/2026)
3.2.11 Displaying WPF Message Boxes [7 minutes] (Last Updated: 8/25/2026)
3.2.12 Reading Exception Messages and Stack Traces [10 minutes] (Last Updated: 8/25/2026)
Chapter 3.3 - Enums
3.3.1 Preventing Invalid States With Enums [9 minutes] (Last Updated: 8/25/2026)
3.3.2 Enums in Sequence Diagrams [8 minutes] (Last Updated: 8/25/2026)
3.3.3 Enums in UML Class Diagrams [8 minutes] (Last Updated: 8/25/2026)
3.3.4 Converting Between Enum Values and Display Text [10 minutes] (Last Updated: 8/25/2026)
3.3.5 Defining Enums [8 minutes] (Last Updated: 8/25/2026)
3.3.6 Enum Members and Default Values [8 minutes] (Last Updated: 8/25/2026)
3.3.7 How Enums Define Named Values [8 minutes] (Last Updated: 8/25/2026)
3.3.8 Parsing Enum Values [9 minutes] (Last Updated: 8/25/2026)
3.3.9 Replacing Magic Values With Enums [9 minutes] (Last Updated: 8/25/2026)
3.3.10 Restricting Values With an Enum [9 minutes] (Last Updated: 8/25/2026)
3.3.11 Using an Enum as a Data Type [8 minutes] (Last Updated: 8/25/2026)
3.3.12 Using Enums in Conditional Logic [9 minutes] (Last Updated: 8/25/2026)
3.3.13 Selecting Enum Values With a WPF ComboBox [10 minutes] (Last Updated: 8/25/2026)
Chapter 3.4 - Inheritance
3.4.1 Composition vs Inheritance [11 minutes] (Last Updated: 8/25/2026)
3.4.2 Defined Type vs. Runtime Type [10 minutes] (Last Updated: 8/25/2026)
3.4.3 Designing an Inheritance Hierarchy [12 minutes] (Last Updated: 8/25/2026)
3.4.4 Designing Base-Class Responsibilities [11 minutes] (Last Updated: 8/25/2026)
3.4.5 Is-a Relationships [9 minutes] (Last Updated: 8/25/2026)
3.4.6 Is-a vs Has-a Relationships [10 minutes] (Last Updated: 8/25/2026)
3.4.7 Reusing and Specializing Behavior Through Inheritance [11 minutes] (Last Updated: 8/25/2026)
3.4.8 Understanding Inheritance [10 minutes] (Last Updated: 8/25/2026)
3.4.9 Base-Class Calls in Sequence Diagrams [8 minutes] (Last Updated: 8/25/2026)
3.4.10 Inheritance Connectors in UML [8 minutes] (Last Updated: 8/25/2026)
3.4.11 Representing Inheritance in Object Diagrams [9 minutes] (Last Updated: 8/25/2026)
3.4.12 Virtual and Overridden Methods in Sequence Diagrams [10 minutes] (Last Updated: 8/25/2026)
3.4.13 Virtual and Overridden Methods in UML Class Diagrams [9 minutes] (Last Updated: 8/25/2026)
3.4.14 Base and Derived Classes [9 minutes] (Last Updated: 8/25/2026)
3.4.15 Calling Base-Class Constructors [9 minutes] (Last Updated: 8/25/2026)
3.4.16 Calling Base-Class Members With base [8 minutes] (Last Updated: 8/25/2026)
3.4.17 Defining a Derived Class [9 minutes] (Last Updated: 8/25/2026)
3.4.18 Defining Virtual and Overridden Methods [10 minutes] (Last Updated: 8/25/2026)
3.4.19 Inherited Member Accessibility [9 minutes] (Last Updated: 8/25/2026)
3.4.20 Method Overriding and Runtime Dispatch [11 minutes] (Last Updated: 8/25/2026)
3.4.21 Protected Members [8 minutes] (Last Updated: 8/25/2026)
3.4.22 Using Members Inherited From object [8 minutes] (Last Updated: 8/25/2026)
3.4.23 Debugging Inherited and Overridden Behavior [10 minutes] (Last Updated: 8/25/2026)
3.4.24 Inspecting an Object's Runtime Type With GetType() [8 minutes] (Last Updated: 8/25/2026)
Chapter 3.5 - Abstract Classes
3.5.1 Concrete and Abstract Members [10 minutes] (Last Updated: 8/25/2026)
3.5.2 Understanding Abstract Classes [10 minutes] (Last Updated: 8/25/2026)
3.5.3 When an Abstract Class Is Appropriate [10 minutes] (Last Updated: 8/25/2026)
3.5.4 Representing Abstract Classes in UML [9 minutes] (Last Updated: 8/25/2026)
3.5.5 Defining and Implementing Abstract Methods [10 minutes] (Last Updated: 8/25/2026)
3.5.6 Defining and Implementing Abstract Properties [10 minutes] (Last Updated: 8/25/2026)
3.5.7 Implementing an Abstract Base Class [12 minutes] (Last Updated: 8/25/2026)
3.5.8 Overriding ToString() [11 minutes] (Last Updated: 8/25/2026)
Chapter 3.6 - Interfaces
3.6.1 Adding an Interface to a Project [8 minutes] (Last Updated: 8/25/2026)
3.6.2 Calling Members Through an Interface Reference [9 minutes] (Last Updated: 8/25/2026)
3.6.3 Declaring Interfaces [10 minutes] (Last Updated: 8/25/2026)
3.6.4 Depending on an Interface Instead of a Concrete Class [11 minutes] (Last Updated: 8/25/2026)
3.6.5 Designing Around an Interface [10 minutes] (Last Updated: 8/25/2026)
3.6.6 Different Classes Implementing the Same Interface [10 minutes] (Last Updated: 8/25/2026)
3.6.7 Hiding Implementation Details Behind an Interface [9 minutes] (Last Updated: 8/25/2026)
3.6.8 Implementing an Interface in a Class [9 minutes] (Last Updated: 8/25/2026)
3.6.9 Implementing Multiple Interfaces [9 minutes] (Last Updated: 8/25/2026)
3.6.10 Interface References [10 minutes] (Last Updated: 8/25/2026)
3.6.11 Interface Type vs Implementing Type [10 minutes] (Last Updated: 8/25/2026)
3.6.12 Interfaces and Concrete Classes [10 minutes] (Last Updated: 8/25/2026)
3.6.13 Interfaces as Contracts [11 minutes] (Last Updated: 8/25/2026)
3.6.14 Choosing Between an Abstract Class and an Interface [11 minutes] (Last Updated: 8/25/2026)
3.6.15 Substituting Interface Implementations [10 minutes] (Last Updated: 8/25/2026)
3.6.16 Interface Implementation Connectors in UML [9 minutes] (Last Updated: 8/25/2026)
3.6.17 Interfaces in UML Class Diagrams [9 minutes] (Last Updated: 8/25/2026)
3.6.18 Testing Multiple Interface Implementations [10 minutes] (Last Updated: 8/25/2026)
3.6.19 Revising a Class Design to Use an Interface [10 minutes] (Last Updated: 8/25/2026)
Chapter 3.7 - Polymorphism
3.7.1 Event-Driven Execution and Event Handlers [10 minutes] (Last Updated: 8/25/2026)
3.7.2 When Casting Is a Design Warning [10 minutes] (Last Updated: 8/25/2026)
3.7.3 Polymorphism Through Base and Interface Types [11 minutes] (Last Updated: 8/25/2026)
3.7.4 Polymorphism Through Interface References [11 minutes] (Last Updated: 8/25/2026)
3.7.5 Recognizing Code That Needs Refactoring [11 minutes] (Last Updated: 8/25/2026)
3.7.6 Refactoring Type Checks Into Polymorphism [10 minutes] (Last Updated: 8/25/2026)
3.7.7 Replacing Repeated Conditional Logic With Polymorphism [10 minutes] (Last Updated: 8/25/2026)
3.7.8 Runtime Method Selection [9 minutes] (Last Updated: 8/25/2026)
3.7.9 Connecting WPF Control Events to Handlers [10 minutes] (Last Updated: 8/25/2026)
3.7.10 Calling Overridden Methods Through a Base Reference [9 minutes] (Last Updated: 8/25/2026)
3.7.11 Calling Shared Behavior Through a Common Type [9 minutes] (Last Updated: 8/25/2026)
3.7.12 Checking Types Before Casting [10 minutes] (Last Updated: 8/25/2026)
3.7.13 Converting Between Base and Derived References [10 minutes] (Last Updated: 8/25/2026)
3.7.14 Polymorphic Collections [11 minutes] (Last Updated: 8/25/2026)
3.7.15 Refactoring Code Without Changing Behavior [10 minutes] (Last Updated: 8/25/2026)
3.7.16 Storing Polymorphic Objects in a Collection [11 minutes] (Last Updated: 8/25/2026)
3.7.17 Verifying Polymorphic Behavior [9 minutes] (Last Updated: 8/25/2026)
3.7.18 Tracing and Debugging Event Flow [10 minutes] (Last Updated: 8/25/2026)
3.7.19 Testing Multiple Runtime Types [12 minutes] (Last Updated: 8/25/2026)
3.7.20 Analyzing Advanced Object-Oriented Code [12 minutes] (Last Updated: 8/25/2026)
3.7.21 Evaluating a Proposed Design Change Against Requirements [11 minutes] (Last Updated: 8/25/2026)
3.7.22 Justifying a Design or Refactoring Decision With Evidence [11 minutes] (Last Updated: 8/25/2026)
3.7.23 Verifying Release Readiness [10 minutes] (Last Updated: 8/25/2026)