Програмиране за .NET Framework (CS292T)

Едносеместриален изборен курс (0+3+3) за студенти от ФМИ на СУ

Преподавателски екип

Светлин Наков

Българска асоциация на разработчиците на софтуер, председател, www.nakov.com

Бранимир Гюров

BSH, технически директор, MCSD.NET+Security, MCT, b.giurovbsh-bg.com

Георги Иванов

Sciant, ръководител на проекти, MCSD.NET, george.ivanovsciant.com

Мартин Кулов

CodeAttest, изпълнителен директор, MCSD.NET, martinkulov.net

Михаил Стойнов

ГИС София, софтуерен разработчик, mihail.stoynovgis-sofia.bg

Ивайло Христов

Metalife A.G., софтуерен разработчик, ivaylo.hristovmetalife.de

Анотация на курса

Целта на курса „Програмиране за  .NET Framework” е да запознае студентите с принципите за разработка на приложения за Microsoft .NET Framework. Най-важните теми, които ще бъдат разгледани, са: архитектура на .NET Framework, управлявана среда за изпълнение на код (CLR), езикът C#, обща система от типове (CTS), .NET асемблита, основна библиотека от класове (Framework Class Library), Remoting, Web-услуги, достъп до данни с ADO.NET, работа с XML, създаване на графичен потребителски интерфейс с Windows Forms и Web-базирани приложения с ASP.NET. Ще бъде обърнато внимание и на някои по-сложни концепции като reflection, многонишково програмиране и синхронизация, взаимодействие с неуправляван код, enterprise услуги и разработка на мобилни приложения. На най-добре представилите се студенти ще бъде предложена работа като .NET разработчици.

Course Description

The course objective is to introduce the students to the principles of application development for the Microsoft .NET Framework. The most important topics covered include: Architecture of .NET Framework, CLR managed execution environment, C# language, Common Type System (CTS), .NET components (assemblies), Framework Class Library, as well as Remoting and Web-services. Accessing data with ADO.NET, working with XML, creating graphical user interface with Windows Forms and Web applications with ASP.NET are also covered. More advanced topics like reflection, multithreading, interoperability, enterprise services and mobile computing are also examined. After finishing the course a job offer will be available to the best students.

Изисква се познаване на учебния материал от следните курсове:

-       Увод в програмирането (CS101)

-       Обектно-ориентирано програмиране (CS102)

-       Бази данни (CS270)

-       Операционни системи и компютърни мрежи (CS226)

Изпити и оценки

По време на семестъра всеки студент ще трябва да положи тест върху изучавания материал и да предаде и защити курсов проект по предварително зададена тема. Тестът и курсовият проект са задължителни и формират крайната оценка (тестът е с тежест 1/3, а проектът – 2/3).

Учебна програма

1.    Архитектура на .NET Framework

Архитектура на .NET платформата; Архитектура на .NET Framework; Common language Runtime (CLR); Intermediate Language (IL); Модел на изпълнение на .NET приложенията; Application domains; Common Language Specification (CLS); Common Type System (CTS); Интеграция на различни езици; Средата за разработка Visual Studio .NET.

2.    Въведение в езика C#

Примитивни типове данни; Изброен тип; Константи; Изрази; Програмни конструкции; Конструкции за управление (if, for, while, do .. while, foreach).

3.    Обектно-ориентирано програмиране в .NET

Класове и интерфейси; Структури; Конструктори, методи, полета, видимост на членовете; Наследяване и полиморфизъм; Свойства, индексатори, оператори; Статични методи и конструктори; Пространства от имена; Управление на изключенията.

4.    Обща система от типове – Common Type System (CTS)

Класът System.Object, сравнение на типове, хеш-кодове, копиране на обекти; Стойностни и референтни типове, опаковане и разопаковане (boxing & unboxing); Преобразуване на типовете.

5.    Делегати и събития

Делегати и multicast делегати; Събития.

6.    Атрибути

Използване на атрибути; Създаване на собствени атрибути.

7.    Масиви и колекции

Масиви; Назъбени и многомерни масиви; Сортиране; Колекции; Списъци, речници, хеш-таблици, сортирани списъци.

8.    Символни низове

Символни низове; Построяване на символни низове (StringBuilder); Форматиращи низове; Unicode, кодиращи схеми, глобализация, интернационализация.

9.    Регулярни изрази

Езикът на регулярните изрази; Търсене, извличане, валидиране и заместване на текст чрез регулярни изрази.

10.    Управление на паметта и ресурсите

Динамична памет (managed heap) и система за почистване на паметта (garbage collection); Деструктори и финализация.

11.    Вход/изход

Потоци, четци и писачи (streams, readers and writers); Файлове и директории.

12.    Работа с XML

Основни XML концепции (well-formed XML, пространства от имена, DTD, XSD, XML парсери); XML класове (DOM класовете и XmlReader); Валидация на XML; XPath и XSL трансформация.

13.    Достъп до данни с ADO.NET

Основни концепции и класове (Connection, Command,  DataReader, DataAdapter, CommandBuilder); DataSet, таблици, релации, views, constraints; Силно-типизирани data sets; Data sets и XML; Утвърдени практики при работа с ADO.NET.

14.    Windows Forms

Програмният модел на Windows Forms; Основни класове (Component, Control, ScrollableControl, ContainerControl); Форми и диалози; Основни контроли (Label, TextBox, Button); Добавяне на контроли към формите; Прихващане на събития; Други контроли (менюта, status bars, ленти с инструменти); Data binding и контролата DataGrid; Потребителски-дефинирани контроли.

15.    ASP.NET и Web-приложения

Програмен модел на ASP.NET, Web форми и Web контроли, основни класове; Кодът за страниците (code behind); Модел за изпълнение на страниците; Модел за изпълнение на Web-приложенията; Основни Web-контроли; Прихващане на събития; Валидация; Управление на сесията; Контроли за работа с данни (DataGrid и DataView); Потребителски-дефинирани контроли.

16.    Многонишково програмиране и синхронизация

Многонишково програмиране (multithreading); Асинхронно изпълнение; Асинхронен вход/изход; Синхронизация на нишки; Класически синхронизационни проблеми.

17.    Мрежово и Интернет програмиране

Основни мрежови концепции (TCP/IP, протоколи, услуги); TCP и UDP сокети; Достъп до Интернет ресурси; Класове за работа с e-mail.

18.    Reflection

Достъп до метаданните в асемблитата; Извикване на методи.

19.    Сериализация на данни

Автоматична и потребителски-дефинирана сериализация на данни; XML и бинарна сериализация.

20.    Web-услуги

Основни концепции за Web-услугите – моделът „заявка-отговор”, SOAP, UDDI и WSDL; Използване на Web-услуги; Асинхронно извикване на Web-услуги; Създаване на Web-услуги, публикуване на методи.

21.    Remoting

Канали и форматиращи класове (channels and formatters); Активация и деактивация; Жизнен цикъл на обектите; Модели за активация; Marshalling; Предоставяне на отдалечени обекти; Използване на отдалечени обекти; Конфигуриране.

22.    Взаимодействие с неуправляван код

Извикване на функции от DLL библиотеки; Взаимодействие с COM.

23.    Асемблита и deployment

Асемблита и метаданни, версии, силни имена, частни и споделени асемблита; Модули; Global Assembly Cache (GAC); Преносими изпълними файлове (portable executables).

24.    Сигурност

Сигурност при достъпа до кода (code access security); Сигурност, базирана на роли (role-based security); подписване на асемблита.

Лекции

понеделник – 18-21 ч., зала 210, Хим. факултет

вторник – 18-21 ч., зала 210, Хим. факултет

Първа сбирка

4.10.2004 (понеделник) – 18 ч., зала 210, Хим. факултет

За повече информация

Посетете сайта на курса: http://www.nakov.com/dotnet/