Core .NET Course – Professional Training for Microsoft .NET Developers

The course objective is to give the students a stable basis of knowledge and skills for working as a software engineer for the Microsoft .NET platform. The course covers the fundamental set of knowledge and skills that any .NET developer should have: C# language, object-oriented programming, standard .NET Framework APIs, database development with MS SQL Server and ADO.NET, Windows Forms GUI applications, ASP.NET Web applications and Web services. The course is based on .NET Framework 2.0, MS Visual Studio 2005 and MS SQL Server 2005.

1. Programming .NET Framework Fundamentals

1.1. Course Overview (lectures: 1, exercises: 0, homework: 0)

- Course scope, curriculum, exams, homework, lectures, exercises

1.2. .NET Framework Architecture (lectures: 2, exercises: 0, homework: 1)

- Common Language Runtime (CLR)

- Intermediate language (MSIL)

- Assemblies and .NET Framework execution model

- Creating, compiling and running .NET applications

1.3. The C# Programming Language – Part 1 (lectures: 1, exercises: 1, homework: 2)

- C# language design principles

- C# programs structure

- Identifiers; Keywords

- Primitive data types; Enumerations; Typecasting and conversion

- Variables; Declarations

1.4. The C# Programming Language – Part 2 (lectures: 2, exercises: 1, homework: 3)

- Operators

- Expressions; Statements

- Control structures, conditionals, loops (if, switch, for, while, do … while)

- Console input/output

1.5. Object-Oriented Programming Concepts (lectures: 2, exercises: 0, homework: 2)

- Object-oriented programming and design fundamentals

- Classes, objects and interfaces

- Inheritance, abstraction, encapsulation and polymorphism

1.6. Classes and Objects (lectures: 2, exercises: 3, homework: 4)

- Creating and using objects

- Defining classes and class members (fields, properties, constants)

- Partial classes

- Defining and using methods; Method overloading

- Defining and using properties

- Constructors

- Static members and static constructor

- Structures

1.7. Inheritance and Polymorphism (lectures: 1, exercises: 3, homework: 4)

- Inheritance and polymorphism

- Abstract classes

- Namespaces

1.8. Interfaces, Indexers and Operators (lectures: 1, exercises: 2, homework: 3)

- Defining, implementing and using interfaces

- Defining and using indexers

- Overloading operators

1.9. Common Type System (CTS) and System.Object (lectures: 1, exercises: 2, homework: 6)

- Built-in types hierarchy

- The base type System.Object; Overriding equality and hash code methods

- Object cloning and ICloneable

- Implementing IComparable

- Iterators: IEnumerable and IEnumerator

1.10. Value Types and Reference Types (lectures: 1, exercises: 1, homework: 2)

- Value types and reference types; Representation in the memory

- Boxing and unboxing value types

- Passing arguments by value, reference and as output (in, out and ref parameters)

- Nullable types

1.11. Exceptions Handling (lectures: 1, exercises: 1, homework: 3)

- Error handling and exceptions

- Catching and throwing exceptions

- Defining and using custom exception classes

1.12. High-Quality Code Construction (lectures: 3, exercises: 0, homework: 0)

- What is high-quality programming code?

- High-quality software design (cohesion, coupling, complexity, reusability, fan-in, fan-out, etc.)

- High-quality methods (cohesion, coupling, naming, parameters, length, etc.)

- Defensive programming and exceptions

- Best practices using variables (naming, scope, span, lifetime, etc.)

- Naming variables, methods, classes and other identifiers

- Best practices using conditionals and loops

- Self-documenting code and effective comments

1.13. Attributes (lectures: 1, exercises: 1, homework: 2)

- Using attributes, attribute parameters, attribute targets

- Defining custom attributes

1.14. Generics (lectures: 1, exercises: 1, homework: 3)

- Generic methods and generic classes

1.15. Arrays and Array Manipulation (lectures: 1, exercises: 2, homework: 4)

- Creating, initializing and using arrays

- Jagged and multidimensional arrays

- Standard algorithms on arrays: sorting, binary search, printing

1.16. Working with Strings (lectures: 1, exercises: 2, homework: 4)

- The Unicode standard

- Characters, strings and string processing: creating, concatenating, extracting substrings, searching, comparing, and splitting

- Building and modifying strings with StringBuilder

1.17. String Formatting, Cultures and Internationalization (lectures: 2, exercises: 2, homework: 4)

- String, numbers and date formatting

- Parsing numbers and dates

- Encodings and conversions

- Resources and satellite assemblies

1.18. Delegates and Events (lectures: 1, exercises: 1, homework: 2)

- Defining and using delegates and events

- Anonymous delegates

- Generic EventHandler delegate

1.19. Numeral Systems (lectures: 1, exercises: 1, homework: 1)

- Numeral systems

- Computer representation of numbers

1.20. Algorithms and Complexity (lectures: 2, exercises: 0, homework: 2)

- Algorithms complexity

- Asymptotic notation

- Analyzing and computing complexity

1.21. Data Structures (lectures: 2, exercises: 3, homework: 8)

- Lists and representation

- Queues and representation

- Stacks and representation

- Trees, binary trees and balanced search trees

- Hash-tables and representation

1.22. Graphs and Traversal Algorithms (lectures: 1, exercises: 2, homework: 4)

- Graphs – basic concepts and representation

- Depth First Search (DFS) algorithm

- Breath First Search (BFS) algorithm

1.23. Collections Classes (lectures: 2, exercises: 2, homework: 5)

- Collections Interfaces: IEnumerable<T>, ICollection<T>, IList<T>, IDictionary<K, T>

- Collection Classes – List<T>, Dictionary<K, T>, Queue<T>, Stack<T>

1.24. Regular Expressions (lectures: 2, exercises: 2, homework: 4)

- The regular expressions language – literals and meta-characters, character classes, quantifiers, grouping characters, etc.

- Regular expressions API in .NET Framework

- Searching, extracting, validating, splitting and replacing text by regular expressions

1.25. Memory and Resource Management (lectures: 1, exercises: 0, homework: 2)

- Memory management, managed heap and garbage collection

- Resource management, IDisposable and finalizers

1.26. Input/Output (lectures: 2, exercises: 2, homework: 4)

- Binary streams and text streams

- File streams

- Files and directories

Intermediate Exam #1 (test: 1, problems: 4, check-up: 3)

- Test – 35 questions (25 required to pass)

- Practical exam – 3 practical problems (70% required to pass)

- Homework check – 25 homework submitted required to pass (at least one for each topic)

- Trainer checks 2 randomly selected homework in class

- Students not passed the exam sit for a second attempt a week later

- Students that fail on the exam at the second try can leave the course permanently

2. Databases and GUI Development

2.1. Relational Databases – Fundamental Concepts (lectures: 2, exercises: 0, homework: 1)

- Basic database concepts: database systems, relational databases

- Tables, relationships, multiplicity, primary keys, foreign keys, E/R diagrams, normalization

- Database constraints, indexes, views, triggers, stored procedures

- Database transactions

2.2. Introduction to SQL Server (lectures: 1, exercises: 0, homework: 2)

- Introduction to Microsoft SQL Server 2005

- Using SQL Server Management Studio

2.3. Data Modeling and E/R Diagrams (lectures: 1, exercises: 2, homework: 4)

- Database modeling and entity/relationship diagrams

- SQL Server data types

- Creating E/R models with SQL Server Management Studio

2.4. Introduction to SQL Language – Part 1 (lectures: 2, exercises: 2, homework: 4)

- Data manipulation language (DML): SELECT, INSERT, UPDATE and DELETE statements

- Joining tables, inner and outer join

2.5. Introduction to SQL Language – Part 2 (lectures: 2, exercises: 3, homework: 5)

- Nested queries

- Aggregate functions and grouping

- Data definition language (DDL): CREATE, ALTER, DROP statements

2.6. Introduction to Transact-SQL (lectures: 2, exercises: 2, homework: 4)

- Introduction to T-SQL

- Stored procedures, functions and triggers

- Transactions management

2.7. Data Access with ADO.NET (lectures: 2, exercises: 5, homework: 8)

- ADO.NET architecture: data providers, connected and disconnected data models

- Using the connected data model: connections, commands, data readers

- Using SQL Server data provider

- Transaction management (Transaction, TransactionScope)

- Using the OLDDB data provider

- Best practices using ADO.NET

2.8. ADO.NET Disconnected Model (lectures: 2, exercises: 5, homework: 8)

- Introduction to ADO.NET disconnected model

- Data sets, data tables and data adapters

- Using typed data sets and Visual Studio dataset designer

2.9. Introduction to XML (lectures: 1, exercises: 1, homework: 2)

- Basic XML concepts

- Well-formed XML, namespaces

- XML schemas: DTD and XSD

- XML parsers: DOM, SAX and StAX

2.10. Processing XML in .NET Framework (lectures: 2, exercises: 4, homework: 6)

- XML Processing in .NET Framework

- Using the DOM parser (XmlDocument): parsing, processing, modifying and creating XML documents

- Using the high performance streaming parser: XmlReader and XmlWriter

- Querying XML documents with XPath

- Performing XSL transformations

2.11. Introduction to Windows Forms (lectures: 1, exercises: 1, homework: 3)

- Windows Forms programming model

- Windows Forms basic classes: Component, Control, ScrollableControl, ContainerControl

- Windows Forms events model, event queue and controls rendering model

- Basic controls: Form, Label, TextBox, Button

- Handling events

2.12. Windows Forms Dialogs and Advanced Controls (lectures: 1, exercises: 3, homework: 3)

- Creating and using dialog boxes

- Advanced controls (panels, pictures, list boxes, combo boxes, menus, status bars,
toolbars, file dialog, etc.)

- Data validation

2.13. Windows Forms Data Binding and Data Bound Controls (lectures: 2, exercises: 4, homework: 6)

- Data binding, navigation and binding sources

- Data bound controls (DataGridView, ListBox, ComboBox, etc.)

2.14. Windows Forms Advanced Topics (lectures: 1, exercises: 1, homework: 4)

- Forms inheritance

- Graphics primitives and System.Drawing

- Custom controls

- Drag and drop

2.15. Threads and Synchronization (lectures: 2, exercises: 2, homework: 6)

- Multithreading overview – processes and threads

- Using the Thread class – creating, starting and stopping threads; Threads lifecycle

- Threads synchronization – race conditions, critical sections, monitors

2.16. Asynchronous Execution (lectures: 1, exercises: 2, homework: 4)

- Using the built-in thread pool (the ThreadPool class)

- Asynchronous execution in Windows Forms

- Asynchronous execution with BeginInvoke() / EndInvoke()

2.17. Reflection (lectures: 1, exercises: 1, homework: 2)

- Loading assemblies and classes

- Exploring metadata – assemblies, classes and class members

- Dynamically instantiating classes and invoking methods

2.18. Serialization (lectures: 1, exercises: 1, homework: 1)

- Automatic and custom serialization; Formatters

- XML and binary serialization

Intermediate Exam #2 (test: 1, problems: 4, check-up: 3)

- Test – 35 questions (25 required to pass)

- Practical exam – 3 practical problems (70% required to pass)

- Homework check – 25 homework submitted required to pass (at least one for each topic)

- Trainer checks 2 randomly selected homework in class

- Students not passed the exam sit for a second attempt a week later

- Students that fail on the exam at the second try can leave the course permanently

3. Internet and Web Development

3.1. Networking Fundamentals (lectures: 2, exercises: 0, homework: 0)

- Basic Internet concepts: OSI seven-layer model, TCP/IP protocol suite, protocols, services, IP address, network interface, DNS, TCP, UDP, sockets, etc.

3.2. Networking Programming (lectures: 2, exercises: 4, homework: 12)

- TCP and UDP sockets

- Accessing Internet resources through URL

- E-mail API

3.3. Web Programming Fundamentals and HTTP Protocol (lectures: 1, exercises: 0, homework: 0)

- The HTTP protocol; Request-response model;

- The World Wide Web (WWW) infrastructure; URI and URL

- Web-programming fundamentals, Web servers, Web browsers

3.4. HTML Fundamentals (lectures: 3, exercises: 3, homework: 5)

- HTML basics: formatting tags, images, hyperlinks, lists, tables, forms

3.5. Cascading Style Sheets (CSS) (lectures: 1, exercises: 1, homework: 2)

- Creating and using CSS files

3.6. JavaScript Fundamentals (lectures: 1, exercises: 1, homework: 2)

- Using JavaScript language – first steps

- Manipulating the HTML DOM tree

3.7. Creating Web Sites with HTML and CSS (lectures: 2, exercises: 4, homework: 6)

- Cutting the site design into pieces

- Creating the HTML and CSS

3.8. ASP.NET Architecture (lectures: 1, exercises: 1, homework: 2)

- Introduction to ASP.NET

- Web forms; Web controls; Code-behind; Page execution model

- Internet Information Server (IIS 5.0, IIS 6.0)

3.9. ASP.NET Web Forms (lectures: 1, exercises: 1, homework: 3)

- ASP.NET Web Forms

- Code behind pages

- ASP.NET syntax: directives, attributes, expressions, code blocks, server-side comments, server controls, binding expressions, etc.

3.10. ASP.NET Web Controls and HTML Controls (lectures: 2, exercises: 2, homework: 3)

- ASP.NET HTML server controls

- ASP.NET Web server controls

- Web controls execution lifecycle

- HTML escaping

3.11. ASP.NET Data Binding and Data Bound Controls (lectures: 3, exercises: 4, homework: 1)

- Data binding in ASP.NET

- DataBind(), Eval() and Bind() methods and DataBinder class

- Data sources: SqlDataSource and ObjectDataSource

- Data bound controls

- GridView and its fields (BoundField, TemplateField, etc.), sorting, paging, in place editing

- FormView, DetailsView, DataList, Repeater

3.12. ASP.NET Validation Controls (lectures: 1, exercises: 1, homework: 1)

- Validation controls: RequiredFieldValidator, CompareValidator, RegularExpressionValidator, ValidationSummary, etc.

3.13. ASP.NET State Management (lectures: 1, exercises: 2, homework: 4)

- View state and postbacks

- Intrinsic variables: Application, Session, Request, Response, Server, Context, Cache

- Session and application state management

- Using cookies

3.14. ASP.NET User Controls, Master Pages, Site Navigation and Localization (lectures: 2, exercises: 2, homework: 5)

- Creating ASCX user controls

- Using master pages and content pages

- Site navigation controls

- Localization of Web sites; Using resources and resource expressions

3.15. ASP.NET Authentication and Authorization (lectures: 1, exercises: 1,
homework: 1)

- Authentication and authorization

- Forms authentication and Windows authentication

- Membership and Role Manager Providers; Login controls

3.16. ASP.NET AJAX (lectures: 2, exercises: 2, homework: 4)

- AJAX technology overview

- ASP.NET AJAX architecture

- Installing and configuring ASP.NET AJAX

- ASP.NET AJAX server controls: UpdatePanel, ScriptManager, UpdateProgress, Timer

- AJAX Control Toolkit

3.17. ASP.NET Web Services (lectures: 2, exercises: 1, homework: 4)

- Web services basic concepts – request-response model, SOAP, WSDL, UDDI

- Creating Web services, exposing methods

- Consuming Web services; Asynchronously invocation

4. Software Engineering and Team Working

4.1. Software Engineering – Overview (lectures: 3, exercises: 0, homework: 4)

- Software engineering fundamentals

- Processes, methodologies and typical project development lifecycle

- Project plan

- Analysis and specification

- Architecture and design

- Implementation

- Testing: unit testing, integration testing, stress testing

- Deployment

4.2. Source Control Systems – TFS (lectures: 2, exercises: 1, homework: 2)

- Software configuration management and source control repositories

- Versioning models: Lock-Modify-Unlock and Copy-Modify-Merge

- Using Team Foundation Server (TFS) as source control repository

4.3. Unit Testing and NUnit (lectures: 1, exercises: 1, homework: 2)

- Unit testing fundamentals

- Introduction to NUnit

- Creating test cases and test fixtures

- Executing test cases and test fixtures

- NUnit GUI tools

4.4. Build Tools – NAnt (lectures: 1, exercises: 0, homework: 2)

- Build tools – creating and using NAnt build scripts

- NAnt build files

- NAnt build process

- Using properties, conditional tasks and multiple build files

4.5. Logging with Log4Net (lectures: 1, exercises: 0, homework: 2)

- Logging fundamentals

- Logging levels; Loggers, appenders, filters and layouts

Intermediate Exam #3 (test: 1, problems: 4, check-up: 3)

- Test – 35 questions (25 required to pass)

- Practical exam – 3 practical problems (70% required to pass)

- Homework check – 25 homework submitted required to pass (at least one for each topic)

- Trainer checks 2 randomly selected homework in class

- Students not passed the exam sit for a second attempt a week later

- Students that fail on the exam at the second try can leave the course permanently

5. Practical Project (lectures: 0, exercises: 54, homework: 120)

Each practical project will cover these technologies (but not only):

- ASP.NET Web applications: Web forms, Web controls, data bound controls, master pages, custom controls, Forms authentication, AJAX

- Microsoft SQL Server database

- ADO.NET – typed data sets

- Windows Formsdesktop GUI front-end

The project covers the following elements of the software engineering:

- Analyzing the software requirements documentation and defining UI prototype

- Creating system architecture, designing the database and designing the modules of the system

- Implementing the modules of the system and integration

- Testing and debugging

- Using source control repository (Team Foundation Server)

Each project is done by a team of 3-5 students.

6. Final Exam (exam: 6)

The final exam is an assignment for development of a small project with SQL Server, ADO.NET, ASP.NET and Windows Forms, and should be implemented in 6 hours in class. The exam consists of the following tasks:

- Defining database schema and entering sample data

- Design and implement ADO.NET based data access layer

- Design and implement ASP.NET Web application

- Design and implement Windows Forms GUI application

To successfully pass the exam 75% of the tasks should be solved.

Training Duration

Lectures: 101 hours

Exercises: 105 hours

Homework: 219 hours

Practical project (in class): 54 hours

Practical project (at home): 120 hours

Exams: 30 hours

Total: ~ 630 hours

Time Allocation

On even weeks: 2 times / week: 18-22 h -> 16 h / month

On odd weeks: 3 times / week: 18-22 h -> 24 h / month

Two weekends / month: 9-18 h -> 32h

Total: 72 h / month -> ~ 5 months

Discussion Forum

Visit the official discussion forum of the course if you have any technical questions regarding the lectures, exercises or homeworks.