The C# Programming Language

BIT-2ndCompulsory-Elective - group T
IT-BC-3BIT2ndCompulsory-Elective - group T
Language of Instruction:Czech
Public info:http://www.fit.vutbr.cz/study/courses/ICS/public/
Completion:classified credit
Type of
Guarantor:Pluskal Jan, Ing. (DIFS)
Deputy guarantor:Ryšavý Ondřej, doc. Ing., Ph.D. (DIFS)
Instructor:Dybal Martin (FIT)
Jašek Roman, Ing. (DCGM)
Jašek Tibor, Ing. (FIT)
Jež Adam, Ing. (FIT)
Letavay Viliam, Ing. (DIFS)
Mrnuštík Michal, Bc. (FIT)
Pluskal Jan, Ing. (DIFS)
Faculty:Faculty of Information Technology BUT
Department:Department of Information Systems FIT BUT
Introduction to Programming Systems (IZP), DIFS
Programming .NET and C# (IW5), DIFS
MonexerciselecturesD0206 D0207 13:0014:502BIA 2BIB 3BIT xx
MonexerciselecturesD0206 D0207 15:0016:502BIA 2BIB 3BIT xx
Learning objectives:
  The goal of this class is to teach students' basics of object-oriented programming in the C# language.
  C# language syntax. Object-orientation. The object model, objects, classes. Visual Studio. Debugger and profiler. Design patterns. Graphic user interfaces, WPF. Asynchronous programming with processes, threads, tasks. Data querying LINQ, ADO.NET. ORM mapping with Entity Framework.
Knowledge and skills required for the course:
  Basic knowledge of imperative programming (C language), algorithmization and source code versioning.
Subject specific learning outcomes and competencies:
  Students will learn how to apply modern programming approaches in .NET platform using C# language. After class completion, students will be ready to tackle real-world programming challenges with a new perspective based on object-oriented principles and to apply design patterns to architecture design.
Generic learning outcomes and competencies:
  Working in a team simulates real work assignments, teaches students coordination and enforces the use of agile methodologies.  Main take offs are object-oriented workflows in C# and .NET platform, application of design patterns and utilization of persistence data providers.
Why is the course taught:
  This course is intended for students interested in programming with modern high-abstract language to extend their value on the market. C# increases on its popularity rapidly thanks to its multiplatform runtime .NET Core. Language combines multiple programming paradigms like object orientation with components of functional programming. A student will try to cooperate with his teammates on a real-life project with agile management, source control, and design patterns application. After this course, the student is able to create a desktop application connected to a database that will not shame him.
Syllabus of lectures:
  1. Introduction to C# language and .NET platform, language syntax.
  2. Introduction to object-oriented programming and advanced programming constructs in C# - exceptions, events, delegates, lambda expressions, and generics.
  3. Base class library, and LINQ query (collections, XML, MSSQL).
  4. Design patterns, behavioural, structural and creational - Gang of Four (GoF).
  5. Introduction to Continous Integration in Visual Studio Team Services and application testing.
  6. Database persistence with ORM Entity Framework and UnitOfWork and Repository design patterns.
  7. Clean Code, S.O.L.I.D. principles applied to C# examples.
  8. Model-View-ViewModel (MVVM) design pattern, and desktop application architecture.
  9. Introduction to GUI based on Windows Presentation Foundation (WPF).
  10. WPF based on MVVM and data binding, components, and styles.
  11. Parallel and asynchronous programming with processes, threads, and tasks in C#.
  12. Tools for memory management, performance profiling.
  13. Multiplatform development with .NET Standard, .NET Core. Application containerization with Docker and orchestration with Kubernetes, Docker Swarm.
Fundamental literature:
  • ALBAHARI, Joseph; ALBAHARI, Ben.; C# 7.0 in a Nutshell: The Definitive Reference. O'Reilly Media, Inc., 2017.
Study literature:
  • MARTIN, R. C., & MARTIN, M. (2006). Agile principles, patterns, and practices in C. Pearson Education.
  • MARTIN, Robert C. Clean code: a handbook of agile software craftsmanship. Pearson Education, 2009.
  • GAMMA, Erich. Design patterns: elements of reusable object-oriented software. Pearson Education India, 1995.
  • BISHOP, J. (2007). C# 3.0 Design Patterns: Use the Power of C# 3.0 to Solve Real-World Problems. " O'Reilly Media, Inc.".
Controlled instruction:
  • Team project 3-5 members in the Azure DevOps environment.
  • Implemented using CleanCode and S.O.L.I.D. principles.
  • The implementation consists of a fully functional desktop application heading OOP principles with database persisted storage.
  • In case of forewarned complications students can ask for an extension of the deadline for any part of the project.
Progress assessment:
  • Project evaluation is divided into three parts.
  • Each part will be evaluated separately and feedback given to students for further improvements in the following phases.
  • Phases are marked by 20, 30, 50 points.
  • Final project (the third phase) evaluation is an oral defence.
Exam prerequisites:
  • At least 1 point of each project evaluation part
  • Obtain at least 50% of a apoint from orverall project evaluation

Your IPv4 address: