Учебная программа курса или дисциплины «Основы программирования» Цель и задачи курса Цель дисциплины “Основы программирования” - ознакомить студентов с основами программирования и основами современных языков программирования с точки зрения пользователей языков. В частности, в курсе рассматриваются основные конструкции языков программирования, анализируются основные типы и структуры данных, освещаются вопросы объектно-ориентированного программирования и сетевого программирования, дается краткий обзор компонентной технологии программирования. 1. Введение в языки программирования Эволюция языков программирования. Краткий обзор эволюции языков программирования (ЯП). Стандартизация языков программирования. Понятие синтаксиса и семантики ЯП. Среды программирования. 2. Основные конструкции языков программирования Синтаксис и семантика высокоуровневых языков программирования. Константы и переменные, скалярные и составные типы данных, контроль типов и преобразование типов, выражения и присваивание; условные и циклические управляющие структуры; функции и способы передачи параметров; структурные конструкции, средства ввода/вывода. 3. Алгоритмы и процесс решения задачи Стратегии решения задачи; роль алгоритма в процессе решения задачи; стратегии реализация алгоритма; стратегии отладки; определения и свойства алгоритма. 4. Объектно-ориентированное программирование Объектно-ориентированная разработка; инкапсуляция и информационное упрятывание; отделение описания поведения от реализации; классы, подклассы и наследование; полиморфизм; иерархия классов; пакеты классов и протоколы взаимодействия; программирование на основе шаблонов. 5. Основные структуры данных Основные структуры данных: массивы, записи, строки и их представление данных в памяти. Методы распределения памяти (статическое, автоматическое, динамическое); управление памятью периода выполнения. Представление и реализация списков; стеков, очередей, хеш-таблиц, графов и деревьев. 6. Рекурсия Понятие рекурсии; математические рекурсивные функции; примеры рекурсивных процедур; рекурсия и метод “разделяй и властвуй”; реализация бэктрекинга (backtracking) посредством рекурсии; реализация рекурсии с помощью стека, примеры рекурсивных функций, применение рекурсии при трансляции языков программирования, метод рекурсивного спуска. 7. Событийно-управляемое, параллельное и распределенное программирование Методы обработки и распространение событий; управление параллелизмом с помощью механизма обработки событий; обработка исключений. Методы программирования сетевых приложений. 8. Прикладные программные интерфейсы (API) и их применение API-программирование; браузеры; программирование по примерам (example); отладка в API-окружении; методы обработки данных, основанные на компонентных технологиях; понятие промежуточного программного обеспечения (Middleware). Литература. 1. 2. 3. 4. 5. 6. Т. Пратт, М. Зелковиц. Языки программирования. 2002 г. Д. Э. Кнут Искусство программирования. 2000 г. Баженова И.Ю. C++ & Visual Sdudio.NET. М. «КУДИЦ-ОБРАЗ», -2003. - 448 с. Баженова И.Ю. Delphi 7. М. «КУДИЦ-ОБРАЗ», -2003. - 448 с. Баженова И.Ю. JBuilder 5. Программирование на Java. М. «КУДИЦ-ОБРАЗ» Майкл Морган. Java 2. Руководство разработчика. 2000 г. Варианты экзаменационных билетов БИЛЕТ № 1 1. Эволюция развития языков программирования 2. С++. Указатели и ссылки БИЛЕТ № 2 1. Объектно-ориентированное программирование 2. Серверные приложения. Применение трехзвенных архитектур