суббота, ноября 04, 2006

Пример оформления курсовой работы

Эту курсовую работу я делал на втором курсе магистратуры. Посмотрите, как она оформлена и было бы не плохо, если бы ваши работы выглядели если не лучше, то хотя бы были оформлены в таком же стиле :)

ZIP-архив файла в формате MS Word (634 Кб)
То же, скомпилированное в PDF (1 Мб)

Пример программы для работы с деревьями

Группам ИСТ-104/ИТО-104

Проект VS C++ 2005 можно скачать здесь.

Смотрите, разбирайтесь...

вторник, октября 17, 2006

среда, октября 04, 2006

Прошел месяц учебы... (часть 1)

Для групп ИТО/ИТС

Кажется, я говорил уже всем, но, вдруг, кто-нибудь еще не знает, что у нас по вторникам вечером проходят дополнительные занятия по дисциплине Операционные системы, на которых мы уделяем внимание темам курсовых работ, программированию на C++ и другим вопросам, связанным с данной дисциплиной.

Начинается это занятие в 17-30 - 18.00 (до девятой недели - каждую неделю, после девятой недели - раз в две недели).

В двух словах о том, о чем мы говорили на предыдущих двух занятиях:

  1. С чего начинать разработку программы - "Анализ предметной области"
    • Диаграммы предметной области, глоссарий (список терминов предметной области) и описание алгоритмов, реализующих поведение сущностей предметной области (граф-схемы алгоритмов или текстовое описание), варианты использования программы
  2. Переход от диаграммы предметной области к классам C++ - сущность предметной области - класс, количественные отношения между сущностями (один-к-одному, один-ко-многим, многие-ко-многим) - стандартные структуры данных: списки и деревья, как их представители
  3. Изучение предметной области списков и варианта реализации списка на языке C++
    • Я написал программу, которая демонстрирует такую реализацию и примеры работы со списками. Здесь (4 Кб) можно скачать файл проекта Visual Studio C++ 2005 Express. Вы можете использовать этот код в своих курсовых работах.
Мы еще раз подробнее рассмотрим, как работает этот код, на практических занятиях с обеими группами. В частности рассмотрим такие вопросы как: работа с указателями, наследование и полиморфизм.

Дальше мы посмотрим, как организовать работу с произвольными деревьями (я планирую это сделать на одном из следующих практических занятий на ноутбуке с проектором, чтобы все посмотрели, как работать со студией и, в частности, с отладчиком - лучше один раз увидеть, чем сто раз услышать :)

Небольшое замечание: код, который представлен в проекте (на который приведена ссылка выше), "не правильно" оформлен. То есть он компилируется и работает, но оформлять исходные коды ппроекта в таком виде - не принято.

На следующих занятиях мы посмотрим, как "правильно" оформлять код, используя заголовочные файлы и разделяя интерфейсную часть от реализации.

Учитывая, что с программированием вы, как студенты третего курса, должны быть знакомы и вам не нужно объяснять, что такое переменные, процедуры, функции и передача параметров, какие стандартные типы данных бывают и какие стандартные операции с ними можно выполнять - той информации, которую мы рассмотрим на следующих двух занятиях должно быть достаточно, чтобы начать реализацию программной части ваших курсовых на C++; все остальное - справочная информация, которой у нас на практических занятиях не будет в том плане, что я не буду уделять этому внимания.

Два занятия - это 4 недели, то есть к концу октября у вас уже будет все необходимое, чтобы начать разработку программы. В начале ноября будет очередная контрольная точка для ваших курсовых работ. Ориентируйтесь на то, что вы должны будете уже представить хоть какой-то код, посмотря на который, я понял бы, что вы начали работу над проектом.


P.S.
Как я уже упоминал, прошел месяц с начала семестра и у вас уже должна быть начата работа над теоретической частью ваших курсовых (кстати, к ноябрю планируйте все вопросы по теоретической части закончить и заняться практикой). Начинается неделя рейтингов и я должен передать данные о вашей посещаемости и по фактам выполнения курсовых работ Виталию Васильевичу Вершинину, который будет проставлять вам рейтинги. До следующего понедельника (9 октября 2006) у вас есть возможность принести мне все ваши наработки по курсовой работе, чтобы я проставил процент выполнения.

Кто не посещал занятия и ничего о курсовом мне не принес - получат 0.


P.P.S.
Вопросы и предложения, как всегда можете мне присылать на почту или пишите прямо здесь в комментариях к постам...


Удачи :)

понедельник, октября 02, 2006

понедельник, сентября 18, 2006

Практикум по Операционным системам

Для групп ИТО/ИСТ

С сегодняшнего дня мы с Ю.В. Королевым начали работу над документом, который носит название: Практикумом по дисциплине "Операционные системы".

В идеале эта работа должна полностью на практический курс по дисциплине Операционные системы (может быть и весь двухсеместровый)

Сейчас эта работа будет вестись согласно вашему расписанию и вам, скорее всего не удасться по ней учиться - если только повторять пройденный на практических занятиях материал (я буду стараться пополнять этот документ по мере прохождения новых тем на наших практических занятиях).

От вас я прошу по возможности просматривать этот документ и сообщать о его неточностях и недочетах. Может быть я что-то пропущу важное или у наоборот буду писать слишком непотеме (надеюсь, что врятли:)...

В общем, все комментарии больше чем приветствуются.

Естественно, что те, кто будут оказывать содействие в написании данной работы войдут в список рецензентов, тем самым войдя в историю нашего университета :)

Рабочая версия этого документа (черновик) находится в публичном доступе в SVN репозитории google code: http://weever.googlecode.com/svn/osp/trunk/.

Прямая ссылка на документ: http://weever.googlecode.com/svn/osp/trunk/operating-systems-practicum.doc.

суббота, сентября 16, 2006

Курсовые работы по дисциплине Операционные системы

Примерный перечень тем курсовых работ по дисциплине "Операционные системы"


Темы, предлагаемые в рабочей программе


  1. Организация файловой системы
  2. Планировщик заданий на основе алгоритмов с квантованием без использования приоритетов
  3. Планировщик заданий на основе алгоритмов с квантованием c использования приоритетов
  4. Планировщик заданий на основе алгоритмов с абсолютными приоритетами
  5. Планировщик заданий на основе алгоритмов с относительными приоритетами
  6. Драйвер устройства
  7. Файловый менеджер
  8. Диспетчер управления памятью
  9. Начальный загрузчик операционной системы
  10. Диспетчер управления витруальной памятью (сегментная организация)
  11. Диспетчер управления виртуальной памятью (страничная организация)
  12. Командный процессор


Дополнительные темы (составленные мною совместно с Юрием Валентиновичем Королевым, аспирантом кафедры ВТ)


Этот список составлен на основании тем, предлагаемых в рабочей программе и позволяет охватить три основных направления, которым посвящены практические занятия по дисциплине Операционные системы: основные компоненты операционных систем, структуры данных и практикум по языку C++.

Организация файловой системы


Общая функциональность:

Файловая система эмулируется в памяти в виде дерева с одним корневым каталогом - «/». В дальнейшем будем называть ее "виртуальной файловой системой".Работа с виртуальной файловой системой будет вестись из программы через интерфейс командной строки (Command Line Interface, CLI).

Набор обязательных команд CLI:
  • CD [path] - сделать path текущим каталогом. Если path начинается с "/", то путь - абсолютный, иначе - относительный по отношению к текущему каталогу. Если path не задано - вывести полное имя текущего каталога;
  • DIR - вывести содержимое текущего каталога на экран;
  • HELP [имя команды] – вывести справку по команде. Если имя команды не задано - вывести список всех доступных команд;
  • MOUNT [source] [target] - создание полной копии реальной файловой системы, заданной путем source, в виртуальной системе - target; source - абсолютный путь в реальной файловой системе; target - имя папки в текущем каталоге, куда будет примонтирована реальная файловая система;
  • UMOUNT [path] - удаление каталога из виртуальной файловой системы;
  • EXIT - завершение работы программы.

Варианты заданий:

  1. Вариант 1
    • TREE - графическое представление текущего каталога;
  2. Вариант 2
    • RENAME [path]file1 file2 - переименовывает file1, находящийся в папке path в file2 в той же папке;
    • DEL path - если path указывает на папку, то удаляются все файлы в этой папке; если папка пустая, то удаляется эта папка; если path указывает на файл - удаляется файл;
    • COPY [path]source [path]target – копирование файлов в виртуальной файловой системе;
  3. Вариант 3
    • DIR mask - вывод файлов и папок текущего каталога по маске;
  4. Вариант 4
    • LINK source target - создание символьной ссылки в пределах виртуальной файловой системы; target не может быть поддеревом source;
    • SIZEOF path - посчитать размер папки (и вложенных папок);
  5. Вариант 5
    • TYPE file - вывод на экран содержимого текстового файла;
    • FIND sting file - поиск текстовой строки в файле;
  6. Вариант 6
    • COMPARE file1 file2 - сравнение содержимого файлов (равны или нет);
    • DUPLICATES - поиск всех дубликатов файлов в текущей папке и подкаталогах; выводит список полных путей групп одинаковых файлов;
  7. Вариант 7
    • HASHSUM file - посчитать контрольную сумму файла (например, CRC);
    • DUPLICATES - поиск всех дубликатов файлов в текущей папке и подкаталогах; выводит список полных путей групп одинаковых файлов;
  8. Вариант 8
    • MONITOR path timeInterval - следить за изменениями в файловой системе (виртуальной и реальной); выводить информацию об удаленных и созданных файлах;
  9. Вариант 9
    • XMOVE source destination - переместить папку source в папку destination;
    • XDEL path - удалить файл или папку и все ее подкаталоги;
    • XCOPY source destination - копировать файл или папку и все ее подкаталоги;


Сетевые утилиты

Сеть из компьютеров, сетевых карт и hub’ов.

Предоставить меню CLI (Command Line Interface) для создания модели конфигурации сетевой инфраструктуры, состоящей из компьютеров, с установленной сетевой картой (картами). Компьютеры объединены в сеть через hub’ы. Hub’ы могут быть включены или выключены.

Предоставить интерфейс для конфигурирования ip-адресов, масок и других необходимых настроек для выполнения команды ping в созданной сетевой инфраструктуре, и реализовать команду ping.

Планировщик заданий в распределенной вычислительной системе

Задан набор вычислительных машин (в виде модели).

Задан набор взаимосвязанных задач в виде направленного ациклического графа (т.е. определены зависимости между входами одной задачи и выходом другой). Для каждой задачи указано время ее выполнения.

Составить расписание, в котором будет указан порядок запуска конкретных задач на конкретных компьютерах, чтобы все задачи выполнились за как можно меньшее время, при условии, что:
  1. Вариант 1 - любая задача может выполняться на любом компьютере (на компьютере может решаться любая задача);
  2. Вариант 2 - каждая задача может выполняться лишь на определенном множестве компьютеров (компьютер может решать задачи определенного рода);

Выбор темы курсовой работы


Приведенный выше список тем является лишь рекомендуемым. В программе курса обозначено, что:
"Цель выполнения курсовой работы - формирование представления о принципах построения операционных систем."
Следовательно, вы можете выбрать любую тему (не обязательно из списка выше), которая тем или иным образом будет отвечать поставленной цели. Если у вас нет такой темы - берете одну из перечисленных выше.

Честно говоря, выбор темы должен ложиться полностью на ваши плечи, исходя из ваших научных интересов; научный руководитель (я в данном случае) лишь помогает скорректировать ее, чтобы она удовлетворяла требованиям рабочей программы. В связи с тем, что у большинства из вас на третем курсе еще не достаточно навыков или опыта, и/или вы не выбрали еще для себя направление ваших исследований/интересов, я и иду вам на встречу, предлагая свои темы. Будьте готовы на старших курсах (возможно уже в следующем семестре) "придумывать" себе тему работ/проектов сами, иначе у вас будут проблемы в дальнейшем. Считайте это дружественным советом ;)

Группы ИСТ-104, ИТО-104


Как мы уже с вами обсуждали на практических занятиях, в течение семестра вы будете должны написать курсовую работу, состоящую из двух частей:
  1. Теоретическая
  2. Практическая
Это не должно быть для вас новым, как и то, что программная составляющая в практической части не обязательно должна быть на языке C++. Если кто-то владеет каким-либо языом программирования достаточно, чтобы самостоятельно написать эту курсовую работу (без поддержки со стороны практических занятий) - пожалуйста, но я советую вам хорошенько оценить свои силы и посоветоваться со мной в индивидуальном порядке. На практических занятиях у нас будет практикум по языку C++, и все, что будет нужно вам для ваших курсовых, будем разбирать прямо на этих занятиях.
Кроме того, еще одной из причин, почему мы с Виталием Васильевичем Вершининым решили выбрать C++ - это ознакомление с синтаксисом языка, чтобы в следующем семестре вам было более просто перейти к изучению языка C#.

Группа ИСТ-204ук


В связи с тем, что у вас практических занятий по дисциплине не предусмотрено рабочей программой, вы будете полностью выполнять ее самостоятельно.
И в связи с этим, мы с Виталием Васильевичем Вершининым решили провести ее у вас в реферативной форме (это мы уже обсуждали с вами на практическом занятии по Информационному менеджменту в пятницу 8-го сентября), без написания какого-либо программного кода.

Формальности (Это важно!)


Для закрепления темы за студентом необходимо до 10 часов утра 22 Сентября (это будет пятница) заполнить бланк задания, который можно скачать здесь (файл Microsoft Word, 32 Кб), и передать его мне в бумажном виде.
В пятницу 22 сентября в 10:01 я понесу ваши бланки на подпись зав. кафедрой А.В. Кострову.

Те, у кого не будет таких бланков, к защите курсовой работы допущены не будут.

Еще раз напомню, что при защите курсовой работы будет оцениваться не столько готовый результат (программа ли на C++, которую можно запустить и получить правильный результат, или хорошо сверстанный реферат), так как все это не представляет никакой научной или практической ценности, кроме, естественно, повышения вашего личного опыта, сколько ваши способности в сроки выполнять то, что от вас требуется.

Из этого не сложно заключить, что если вы будете планомерно работать в течение семестра, то курсовой вы сдадите без проблем, в противном случае у вас будут проблемы с деканатом.


Источники информации



Так как у меня тоже не энциклопедические знания в голове, вы должны это понимать :), то дополнительные источники информации вам просто необходимы. Я лишь могу выступать как советчик в некоторых (я подчеркиваю не всех) областях. Основным источником, естественно, является Интернет и ниже я приведу лишь некоторый список, куда можно ссылаться. Если у вас есть свои источники, которые вам помогли в ходе выполнения курсового - сообщайте мне, я их размещу здесь.

Список будет постоянно пополняться в течение семестра (я надеюсь)...

  1. INTUIT.ru: Список учебных курсов по компьютерным и информационным
    технологиям (http://www.intuit.ru/courses.html)

    Обратите внимание на разделы: "Операционные системы" и "Системы программирования" ( в частности Язык программирования C++)
  2. TBD

P.S.
Все в ваших руках,
Удачи! :)

пятница, сентября 15, 2006

Установка Borland C++ Builder 3.1

Для групп ИТО-104, ИСТ-104

Практические занятия по С++ будут проводиться в среде Borland C++ Version 3.1.
По просьбе студентов, я закачал архив с этой IDE на FileFactory (качать здесь (18 МБ, zip)).

Для работы подойдет любая IDE, которая поддерживает C++. Так что если у кого то есть опыт работы или прочие пристрастия - можете пользоваться своей средой. Borland C++ - это базовый вариант, который мы будем использовать на практических занятиях.

Установка обычным копированием - распаковываете архив, например, в C:\BORLANDC, запускаете C:\BORLANDC\BIN\BC.EXE и работаете.

Если будете распаковывать в другое место (не C:\BORLANDC), возникнут проблемы с компиляцией и запуском программ. Чтобы все заработало нужно настроить пути к INCLUDE и LIB дирректориям: в IDE главное меню -> Options -> Directories...


У кого проблемы с английским языком (наверняка кто-то учил немецкий), в Интернете есть переводчики, пользуйтесь ими. Вот один: http://lingvo.yandex.ru/.