Welcome to "Computer Programming With C# - Part 2"!
In this advanced C# programming course, we will delve deeper into the world of C# and explore more advanced topics and techniques to help you become a proficient C# developer. Building on the foundation laid in "Computer Programming With C# - Part 1," this course will take your C# skills to the next level.
Object-Oriented Programming (OOP) Concepts: Review essential OOP concepts such as inheritance, encapsulation, polymorphism, and abstraction. Understand how to create and use classes and objects effectively to design scalable and maintainable code.
Advanced Data Structures: Dive into more complex data structures like linked lists, stacks, queues, and trees. Learn how to implement and manipulate these data structures efficiently in C#.
Exception Handling: Explore techniques to handle errors and exceptions gracefully in your C# programs. Discover best practices to create robust and fault-tolerant applications.
File I/O: Learn how to read from and write to files using C#. Understand different file handling methods and scenarios, including text and binary file operations.
Multithreading and Asynchronous Programming: Gain an understanding of multithreading concepts and how to create parallel applications using threads. Dive into asynchronous programming with async/await to build responsive and efficient applications.
LINQ (Language-Integrated Query): Discover the power of LINQ, which allows you to perform powerful queries on various data sources. Learn how to use LINQ to simplify data manipulation and querying in C#.
Delegates and Events: Understand delegates and events, which are essential elements of the C# event-driven programming model. Learn how to implement event handling to build responsive applications.
Advanced C# Features: Explore some of the more advanced C# features, such as custom attributes, indexers, extension methods, and more. Gain a deep understanding of these features and their practical applications.
C# Best Practices and Design Patterns: Learn coding best practices, common design patterns, and principles that will help you write maintainable, efficient, and clean C# code.
Introduction to ASP.NET Core: If time allows, get an introduction to ASP.NET Core, the cross-platform, open-source framework for building modern web applications in C#. Learn the basics of web development using ASP.NET Core.
Throughout the course, you'll work on hands-on projects and coding exercises to reinforce your learning. By the end of "Computer Programming With C# - Part 2," you'll have a solid grasp of advanced C# concepts and be ready to tackle more complex software development challenges.
Whether you're looking to enhance your skills for personal projects or aspiring to pursue a career as a C# developer, this course will equip you with the knowledge and confidence to take your C# programming to new heights. Let's embark on this journey of advanced C# programming together
Chapter 14. Defining Classes
● Custom Classes
● Usage of Class and Objects
● Organizing Classes in Files and Namespaces
● Modifiers and Access Levels (Visibility)
● Declaring Classes
● The Reserved Word "this"
● Fields
● Methods
● Accessing Non-Static Data of the Class
● Hiding Fields with Local Variables
● Visibility of Fields and Methods
● Constructors
● Properties
● Static Classes and Static Members
Chapter 15. Text Files
● Streams
● Reading from a Text File
● Writing to a Text File
● Input / Output Exception Handling
● Text Files – More Examples
Chapter 16. Linear Data Structures
● Abstract Data Structures
● List Data Structures
Chapter 17. Trees and Graphs
● Tree Data Structures
● Trees
● Graphs
Chapter 18. Dictionaries, Hash-Tables and Sets
● Dictionary Data Structure.
● Hash-Tables
● The "Set" Data Structure
Chapter 19. Data Structures and Algorithm Complexity
● Why Are Data Structures So Important?.
● Algorithm Complexity .
● Comparison between Basic Data Structures .
● When to Use a Particular Data Structure?
● Choosing a Data Structure – Examples
● External Libraries with .NET Collections
Chapter 20. Object-Oriented Programming Principles
● Let’s Review: Classes and Objects
● Object-Oriented Programming (OOP)
● Fundamental Principles of OOP
● Inheritance
● Abstraction
● Encapsulation
● Polymorphism
● Cohesion and Coupling
● Object-Oriented Modeling (OOM)
● UML Notation
● Design Patterns
Chapter 21. High-Quality Programming Code
● Why Is Code Quality Important?
● What Does Quality Programming Code Mean?
● Why Should We Write Quality Code?
● Identifier Naming
● Code Formatting
● High-Quality Classes
● High-Quality Methods
● Proper Use of Variables
● Proper Use of Expressions
● Use of Constants
● Proper Use of Control Flow Statements
● Defensive Programming
● Code Documentation
● Code Refactoring
● Unit Testing
● Additional Resources
Chapter 22. Lambda Expressions and LINQ
● Extension Methods
● Lambda Expressions .
● LINQ Queries
● Nested LINQ Queries
● LINQ Performance
Chapter 23. Methodology of Problem Solving
● Basic Principles of Solving Computer Programming Problems
● Use Pen and Paper
● Generate Ideas and Give Them a Try!
● Decompose the Task into Smaller Subtasks
● Verify Your Ideas!
● If a Problem Occurs, Invent a New Idea!
● Choose Appropriate Data Structures!
● Think about the Efficiency!
● Implement Your Algorithm!
● Write the Code Step by Step!
● Test Your Solution!
● General Conclusions
Chapter 24. Sample Programming Exam – Topic #1
● Problem 1: Extract Text from HTML Document
● Problem 2: Escape from Labyrinth
● Problem 3: Store for Car Parts
Chapter 25. Sample Programming Exam – Topic #2
● Problem 1: Counting the Uppercase / Lowercase Words in a Text
● Problem 2: A Matrix of Prime Numbers
● Problem 3: Evaluate an Arithmetic Expression
Chapter 26. Sample Programming Exam – Topic #3
● Problem 1: Spiral Matrix
● Problem 2: Counting Words in a Text File
● Problem 3: School