Cursul reprezintă o academie cuprinzătoare de învățare a programării cu limbajul C# și a dezvoltării de aplicații folosind platforma .NET. Acesta se concentrează pe fundamentul programării, abordând treptat conceptele cheie ale programării orientate pe obiect (OOP), gestionarea codului, manipularea datelor, lucrul cu colecții și multe altele. Participanții vor învăța să creeze și să dezvolte aplicații robuste și eficiente în C# utilizând diverse concepte și tehnologii, cum ar fi OOP, gestionarea memoriei, manipularea datelor, gestionarea excepțiilor, programarea paralelă și multe altele.
Un specialist în dezvoltarea C# are competența de a gestiona o varietate de aspecte în cadrul dezvoltării unei aplicații, depășind considerații legate doar de performanță, capabilități și securitate.
Dezvoltatorii familiarizați cu .Net/C# au abilitatea de a crea aplicații avansate, fie că este vorba de aplicații desktop sofisticate sau de infrastructuri complexe din spatele aplicațiilor web moderne. Ei sunt în măsură să modeleze și să dezvolte soluții software inclusiv optimizarea performanței, asigurarea calității prin teste adecvate, implementarea securității și multe altele. Astfel, aceștia pot contribui la dezvoltarea de produse software fiabile, scalabile și aliniate cu cerințele tehnologice actuale.
Urmând acest program, participanții vor învăța să:
- Înțeleagă conceptele fundamentale ale programării și importanța limbajului C# în dezvoltarea software.
- Utilizeze mediul integrat de dezvoltare (IDE) pentru a crea, compila și executa programe C#.
- Manipuleze variabile, tipuri de date și operatori în C# pentru a efectua calcule și operații logice.
- Gestioneze fluxul de execuție al programelor prin intermediul instrucțiunilor de decizie și de interacțiune.
- Modeleze și să implementeze concepte OOP precum clase, obiecte, moștenire, interfețe și abstractizare.
- Lucreze cu colecții de date și structuri, inclusiv utilizarea de generice și algoritmi de colecții.
- Dezvolte aplicații paralele utilizând fire de execuție și tehnici de programare asincronă.
- Gestioneze excepții și erori în programele C#.
- Interacționeze cu baze de date folosind ADO.NET și Entity Framework.
- Creeze și expună servicii web folosind ASP.NET Web API.
- Implementeze unit testing și să scrie cod curat și bine structurat.
Cunoștințele într-un limbaj de programare ar fi un avantaj, dar nu sunt esențiale. Dacă participanții au o înțelegere de bază a conceptelor matematice și logice, aceasta ar fi de asemenea utilă în învățarea programării.
Lesson 1 – Introduction
– What is a program? What’s the purpose of programming? What can we do with .NET?
– What is an IDE? How they make programmers’ life easier
– What is .NET and what is C#?
– Our first program in C# run from the IDE
– C# as a compiled and interpreted language (command line reproduction of the steps our IDE did for us in order to run the showed program)
– Variables. What is a variable?
– Literals: Integer, Floating Point, Boolean, Character and String
– Operators
- Assignment
- Mathematical operators
- Auto Increment and decrement
- Logical operators
- Relational operators
- Bitwise operators (explain how computers “think” in terms of bits and do some conversions from base 2 to 10 and to 16 also)
- Shift Operators
- Ternary if-else operator
- String concatenation operator(+, +=)
- Casting operators
- Special Operators (e.g. instance of)
– Controlling execution: decision instructions, interaction instructions, break command, continue command
– Examples & exercises
Lesson 2 – Code Management
– Version Control
- SVN, Mercurial, Git
- Git Setup
- Github, push your first code into Github
– Comments
- Write inline comments
- Write documentation comments
– Namespaces
- How to organize your code in namespaces
- Special Namespaces inside a C# program
– Run a C# program
- Normal mode
- Debugging mode
- Run with special arguments
– Examples & exercises
Lesson 3 – Arrays & Strings
– What are they?
– Array length
– Multidimensional Arrays
– Accessing, changing elements of an Array
– Looping through an Array
– Pass an array as a function argument
– Examples with most used methods from Arrays utility class
– Manipulating strings (substring, comparing strings, converting from a char array, etc.)
– Examples & exercises
Lesson 4 – Functions
– What is a function and what is its general purpose
– Function parameters, optional parameters, return values
– Writing function guidelines (according to “Clean Code” by Robert C. Martin)
– Local variables lifecycle explained
– Passing primitive variables as parameters to functions
– Pass by value
– Calling functions, Named arguments
– Examples & Exercises
Lesson 5 – Introduction to OOP
– What is OOP, OOP vs Procedural
– What is a class
– What is an object
– Constructor
- Default constructors
- This keyword
- Polymorphism
– Declaring & initializing a class instance
– Memory allocation & the garbage collector
– Instance variables/methods vs static variables/methods
– Static constructor
– Non-static constructor
– C# access modifiers
– Examples & Exercises
Lesson 6 – Inheritance, abstract classes, interfaces
– Inheritance explained
– Overriding methods
– Base keyword
– Protected explained
– Sealed keyword
– Abstract classes
– Interfaces
– Interfaces vs abstract classes
– Multiple implementations of interfaces
– Examples & Exercises
Lesson 7 – Inner classes, Object class, null object
– Is/as operators
– Upcasting & downcasting
– Everything is an Object
– Object class explained
– ToString() method purpose iii. Equals() method purpose iv. HashCode() method
– Cloning objects – ICloneable Interface
– Finalizer method
– Null object
– Examples & Exercises
Lesson 8 – Enums, Exception Handling
– Enum explained
– Exceptions hierarchy
– Checked vs Unchecked exceptions
– Try-catch-finally explained
– Throwing exceptions (throw command)
– Treated exceptions locally or delegating them
– Defining our own exceptions
– Examples & Exercises
Lesson 9 – Input/Output Streams, Serialization
– The File class
– Byte Streams
– Character Streams
– Buffered Stream
– Data Streams
– Object Streams
– Serialization
– Examples & Exercises
Lesson 10 – Generics, Collections
– Generic classes
– Generis functions
– Generics naming convention
– Collections with examples of implementations:
– Generic Collections: List, Dictionary<TKey, TValue>, SortedList, Queue, Stack, Hashset
– Non-Generic Collections: ArrayList, SortedList, Stack, Queue, Hashtable
– Examples & Exercises
Lesson 11 – Generics, Collections
– Iterators
– Foreach instruction
– Dictionary type
– Collections algorithms
- Sort
- IComparable interface
- IComparer interface
- BinarySearch
- Reverse
- Min/max
- Swap
- Linq operations on collections: e.g. Find, First, Skip, Take, etc
– Examples & Exercises
Lesson 12 – Threads, Sockets, Tasks (Async Await)
– Running code sequential vs in parallel
– Async Await in .net (C#)
– Creating and starting a thread in C#
- Thread class
- Task class
– Thread lifecycle
– Pausing a thread execution
– Thread joins
– Synchronization and Locks
– Monitor helper class: Wait, Pulse, PulseAll
– Examples & Exercises
Lesson 13 – Threads, Sockets, Tasks (Async Await)
– Atomic Variables
– Volatile keyword
– Immutable objects
– Parallel programming pitfalls
– Client Socket
– Server Socket
– Examples & Exercises
Lesson 14 – Dependency managers, C# database connectivity
– Nuget Package Manager
– Importing multiple projects into your project
– Setting up a connection to SQL Server from C#
– Calling SQL code from C#
- SqlCommand
- SqlDataReader
– Closing C# connection to SQL Server
– Reading query results: ExecuteScalar vs ExecuteReader
Lesson 15 – Entity Framework
– What is Entity Framework?
– DIfferent ORMs
– Lambda Expressions
– Migrations
– Package Manager Console
– EF Code First vs Database First
– Examples & Exercises
Lesson 16 – Anonymous Objects. Delegates, Dependency Injection
– Anonymous Objects examples
– Delegates
– Lambda expressions
– Dependency Injection
– Fixing null: Optional class
– Examples & Exercises
Lesson 17 – MVC, Web API & Code Generation
– MVC (Model View Controller pattern)
– What is a Web API
– HTTP Verbs
– JSON / XML
– Examples & Exercises
Lesson 18 – Unit testing & Clean Code
– Clean Code
- Why is Clean Code Important
- General code writing guidelines
- DRY Principle
- Kiss principle
- Yagni Principle
– Unit Testing
- xUnit
- nUnit
- Unit tests vs Integration Tests
- Using mocking libraries
- Decoupled Code and Unit Tests
Lesson 19 – Project Phase 1
– Preparing a project
Lesson 20 – Project Phase 2
– Consulting and Checking the Project
Lesson 21 – Project Phase 3
– Project finishing up and presentation
Participanții vor primi diplomă de absolvire după completarea cursului și susținerea examenului de evaluare .