Publication in the Diário da República: Despacho n.º 9184/2020 - 25/09/2020
6 ECTS; 2º Ano, 1º Semestre, 42,0 PL + 28,0 TP + 5,0 OT , Cód. 814312.
Lecturer
- Fernando Sérgio Hortas Rodrigues (1)(2)
(1) Docente Responsável
(2) Docente que lecciona
Prerequisites
It is considered important for students to have knowledge of structured programming and basic algorithms.
Objectives
1. Acquire knowledge about the object-oriented programming paradigm, such as abstraction, encapsulation, inheritance, and polymorphism.
2. Acquire knowledge about the C# programming language and the .NET
3. Acquire knowledge about data persistence methods through the use of frameworks for database access.
Program
1. **General Concepts**
1.1. Introduction to .NET
1.2. Exploring the Visual Studio .NET Work Environment
1.3. Creating a Windows Application Project
2. **Fundamentals of the C# Language**
2.1. Understanding the fundamentals of C#
2.2. Predefined types in C#
2.3. Variables, Constants, and Enumerations
2.4. One-dimensional, multidimensional, and jagged arrays
2.5. Implicit and explicit conversions
2.6. Expressions and Operators
2.7. Conditional Statements
2.8. Iterative Statements
3. **Creating Objects in C#**
3.1. Value Types and Reference Types
3.2. Boxing and Unboxing
3.3. Classes and Objects
3.3.1. Syntax and Semantics
3.3.2. Defining Classes
3.3.3. Creating and Initializing Objects
3.4. Namespaces
3.5. Access Modifiers (Scope)
3.6. Methods
3.6.1. Syntax and Semantics
3.6.2. Parameters, local variables, and scope
3.6.3. Passing parameters by value and by reference
3.6.4. Overloading
3.7. Constructors
3.7.1. Syntax and Semantics
3.7.2. Constructor Overloading
3.7.3. Constructor Initialization
3.8. Class Initialization
3.9. Readonly Variables
3.10. Static Class Members
4. **Object-Oriented Programming Techniques in C#**
4.1. Structured vs. Object-Oriented Programming
4.2. Encapsulation
4.3. Properties and Automatic Properties
4.4. Inheritance
4.4.1. Derived Classes
4.4.2. Accessing Base Class Constructors
4.4.3. Sealed Classes
4.4.4. Virtual Methods
4.4.5. Abstract Classes
4.4.6. Abstract Properties
4.5. Polymorphism
5. **Programming in C#**
5.1. Foreach Statement
5.2. Object Indexing (Indexers/Indexed Properties)
5.3. Interfaces
5.4. is and as Operators
5.5. Collections
5.5.1. Implementing Enumerable Types
5.5.1.1. The IEnumerable Interface
5.5.1.2. Explicit Implementation of IEnumerator
5.5.1.3. Yield Iterators
5.5.1.4. Named Iterators
5.5.2. ArrayList
5.5.3. Queue
5.5.4. Stack
5.5.5. Hash Table
5.6. Exceptions (Exception Handling)
5.7. Events and Delegates
6. **Implementing .NET-Based Applications in C#**
6.1. Method Overriding in the System.Object Library
6.2. String and Number Formatting
6.3. Streams and Files
7. **Frameworks for Object-Relational Mapping**
7.1. Entity Framework (EF)
7.1.1. Introduction to EF
7.1.2. Starting with the Database
7.1.3. Starting with Code
7.1.4. Constraints, Keys, and Associations
7.1.5. Data Access and CRUD Operations
8. **Advanced C#**
8.1. Generics
8.2. Anonymous Types
8.3. Anonymous Methods
8.4. Lambdas
Evaluation Methodology
**Note**: Please look for information in the portuguese page.
Bibliography
- Japikse, P. e Troelsen, A. (2022). Pro C# 10 with .NET 6: Foundational Principles and Practices in Programming. 11th Ed., ISBN: 9781484278680: Apress
- Loureiro, H. (2017). C# 7.0 com Visual Studio. ISBN: 9789727228683: FCA - Editora de Informática
- Smith, J. (2021). Entity Framework Core in Action. 2nd Ed., ISBN: 9781617298363: Manning Publications Co.
Teaching Method
**Theoretical classes** are lectured in an expository and participatory format, with fundamental concepts being described and discussed with the students. **Practical classes** focus on solving: practical cases, exercises.
Software used in class
Visual Studio
MS Sql Server
C# Jupyter Notebooks