Дополнительная литература - Российская экономическая школа

advertisement
Российская Экономическая Школа
НОУ ВПО «РОССИЙСКАЯ ЭКОНОМИЧЕСКАЯ ШКОЛА»
(институт)
программа учебной дисциплины
ОСНОВЫ ПРОГРАММИРОВАНИЯ
по направлению 080100.62 «Экономика» подготовки бакалавра
автор программы: Е.Р. Набиева, PhD in Computer Science,
enabieva@gmail.com
Утверждена Cоветом Программы
«___»_____________2012 г.
Исполнительный директор:
Е.В. Максимова___________________
Москва
2012
Российская Экономическая Школа
Цели освоения и краткое описание дисциплины
Цель освоения данной дисциплины – практическое ознакомление с основами
современной информатики (Computer Science) и программирования на языке Java.
Ключевым элементом обучения будет написание студентами программ, отражающих
пройденный материал и иллюстрирующих применение компьютеров в науке и других
областях. Будут рассмотрены следующие темы: основы программирования, включая
культуру написания «понятных» программ, алгоритмы и структуры данных, основы
теории вычислений, практические методы (динамическое программирование,
симуляции, и др.), а также краткое ознакомление с некоторыми современными
областями информатики (искусственный интеллект, криптография). Данная
дисциплина является вводной и не предполагает предварительных специальных
знаний.
Компетенции обучающегося, формируемые в результате освоения
дисциплины
ОК-12, ОК-13, ПК-1, ПК-2, ПК-3, ПК-4, ПК-5, ПК-6, ПК-10, ПК-12, ПК-14, ПК-15
Структура и организация учебной дисциплины
Название раздела
Всего
часов
Аудиторные часы
Лекции
Семинары
Самостоятельная
работа
Ведение в программирование на
Java
Условия и циклы
21
3
3
15
21
3
3
15
3
Массивы
22
3
3
16
4
Ввод-вывод
21
3
3
15
5
Функции
22
4
4
14
6
22
4
4
14
7
Правильная организация
программы
Рекурсия
22
3
3
16
8
Прикладные темы
22
3
3
16
9
Линейной программирование
22
3
3
16
21
3
3
15
32
32
152
1
2
10 Криптография
ИТОГО
216
Российская Экономическая Школа
Система оценивания и требования к выставлению итоговой оценки
Формы контроля знаний
Вес в финальной
оценке (%)
Тип контроля
Форма контроля
Параметры
Текущий контроль
Контрольные
работы
2 письменные работы
20
Самостоятельная
работа
Выполнение
домашних заданий
60
Экзамен
Письменная работа
20
Итоговый
контроль
Содержание дисциплины
1. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ НА JAVA.
Разнообразие языков программирования. Почему Java? Первая программа. Анатомия
программы. Типы данных, встроенные типы данных. Что такое переменная, литерал,
команда присвоения. Трассировка. Типы данных String. Операции над целыми числами,
числа с плавающей точкой. Решение квадратного уравнения. Логические значения.
Сравнения. Преобразование типов.
Основная литература
Sedgewick, R., and Wayne,K., Introduction to Programming in Java: An Interdisciplinary
Approach, Addison‐Wesley, 2007
2. УСЛОВИЯ И ЦИКЛЫ.
Поток управления. Условия. Команда if, ее примеры. Вложенные команды if. Циклы.
While-цикл. For-циклы его анатомия. Вложение (nesting). Симуляции Монте-Карло. Цикл
Do-While. Пример.
Основная литература
Sedgewick, R., and Wayne,K., Introduction to Programming in Java: An Interdisciplinary
Approach, Addison‐Wesley, 2007
Дополнительная литература
Эккель Б. Философия Java. Питер, 2009
3. МАССИВЫ.
Одномерные массивы. Задача коллекционера купонов. Двумерные массивы. Сложение
матриц. Умножение матриц. Отображение массивов в памяти компьютера.
Российская Экономическая Школа
Основная литература
Sedgewick, R., and Wayne,K., Introduction to Programming in Java: An Interdisciplinary
Approach, Addison‐Wesley, 2007
Дополнительная литература
Эккель Б. Философия Java. Питер, 2009
4. ВВОД И ВЫВОД (INPUT AND OUTPUT).
Стандартный ввод и вывод. Визуализация данных. График функции. Анимация.
Экспресс-курс по аудио.
Основная литература
Sedgewick, R., and Wayne,K., Introduction to Programming in Java: An Interdisciplinary
Approach, Addison‐Wesley, 2007
Дополнительная литература
Эккель Б. Философия Java. Питер, 2009
5. ФУНКЦИИ.
Функции в математике и функции в Java. Область действия. Команда возврата. Функции,
статистические методы и массивы. Перегрузка.
Основная литература
Sedgewick, R., and Wayne,K., Introduction to Programming in Java: An Interdisciplinary
Approach, Addison‐Wesley, 2007
Дополнительная литература
Эккель Б. Философия Java. Питер, 2009
6. ПРАВИЛЬНАЯ ОРГАНИЗАЦИЯ.
Необходимость разделения задач. Debugging. Библиотеки. Встроенная проверка.
Модульное программирование.
Основная литература
Sedgewick, R., and Wayne,K., Introduction to Programming in Java: An Interdisciplinary
Approach, Addison‐Wesley, 2007
Дополнительная литература
Эккель Б. Философия Java. Питер, 2009
7. РЕКУРСИЯ.
Математическая индукция. Сокращение дробей. Алгоритм Евклида. Рекурсивная
графика. Ханойские башни. Рекурсивное дерево. Числа Фибоначчи. Фрактальное
броуновское движение. Метод срединного смещения. Рекурсия возвращаемого значения
аргументов.
Российская Экономическая Школа
Основная литература
Sedgewick, R., and Wayne,K., Introduction to Programming in Java: An Interdisciplinary
Approach, Addison‐Wesley, 2007
Дополнительная литература
Эккель Б. Философия Java. Питер, 2009
8. ПРИКЛАДНЫЕ ТЕМЫ.
Решение сложных задач с помощью Java. Перколяция. Задача с прыгающим мячом.
Дизайн типов данных. Счетчик. Инкапсуляция. Неизменяемость. Модификатор доступа.
Векторы в пространстве. Поиск оптимального вычисления верного результата.
Сортировка. Дискретное преобразование Фурье. Секундомер. Классификация порядка
роста.
Основная литература
Sedgewick, R., and Wayne,K., Introduction to Programming in Java: An Interdisciplinary
Approach, Addison‐Wesley, 2007
Дополнительная литература
Эккель Б. Философия Java. Питер, 2009
9. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ.
Метод симплекса. Двоичный поиск. Биномиальный коэффициент. Выравнивание
последовательности. Сортировка и поиск. Закон Мура. Сравнения. Сортировка слиянием.
Пример подсчета частот. Детектор повторов. Стеки и их применение.
Основная литература
Sedgewick, R., and Wayne,K., Introduction to Programming in Java: An Interdisciplinary
Approach, Addison‐Wesley, 2007
Дополнительная литература
Эккель Б. Философия Java. Питер, 2009
10. КРИПТОГРАФИЯ.
«Одноразовый блокнот». Регистр сдвига с линейной обратной связью (РСЛОС).
Методы обучения
В процессе обучения предусмотрены лекционные и семинарские занятия.
Основной деятельностью студентов будет самостоятельное написание программ
(домашних заданий), примерно по одной за 1,5 недели. По некоторым темам будут даны
домашние задания из более коротких задач.
Самостоятельная работа студентов является важным видом учебной и научной
деятельности студента. Работа по подготовке самостоятельной исследовательской
работы должна вестись на протяжении всего курса. При выполнении самостоятельной
работы следует учесть, что большинство заданий рекомендуется выполнять в группе.
Российская Экономическая Школа
Примеры заданий и вопросов для самостоятельной работы и
промежуточного контроля
Примерные задания для текущего контроля, проводимого в форме письменных работ:
1. Дан код HelloWorld.java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
a. Опишите, что случится, если в HelloWorld.java пропустить:
1. public
2. static
3. void
4. args
b. Опишите, что случится, если в HelloWorld.java пропустить, например вторую
букву, в написании следующих команд:
1. public
2. static
3. void
4. args
2. Дан код UseArgument.java:
public class UseArgument {
public static void main(String[] args) {
System.out.print("Hi, ");
System.out.print(args[0]);
System.out.println(". How are you?");
}
}
a. Опишите, что случится, если Вы попытаетесь выполнить UseArgument, используя
следующие команды::
1. java UseArgument java
2. java UseArgument @!&^%
3. java UseArgument 1234
4. java UseArgument.java Bob
5. java UseArgument Alice Bob
b. Измените код UseArgument.java так, чтобы программа выводила на печать имена в
порядке обратном первоначальное заданному: то есть при вводе имен Иван, Маша,
Саша программа выводила: Привет, Саша, Маша и Иван.
3. Предположим, переменная объявлена целой a = 2147483647. Что выполняет каждая из
следующих команд:
a. System.out.println(a);
b. System.out.println(a+1);
c. System.out.println(2-a);
d. System.out.println(-2-a);
e. System.out.println(2*a);
Российская Экономическая Школа
f. System.out.println(4*a);
4. Каково значение (Math.sqrt(2) * Math.sqrt(2) == 2) ?
5. День недели. Напишите программу, которая при вводе даты выдает день недели, на
которую пришлась эта дата. Ваша программа должна использовать три параметра
командной строки: m (месяц), d (день) и y (год). Для вывода результата примите за 0
воскресенье, за 1 – понедельник, за 2 – вторник и т.д. Используйте следующую формулу
для Григорианского календаря:
y0 = y - (14 - m)/12
x = y0 + y0/4 - y0/100 + y0/400
m0 = m + 12 x ((14 - m)/12) - 2
d0 =(d + x + (31 x m0)/12) %7
6. Напишите программу, которая при вводе трех целых аргументов командной строки
печатает равно, если они равны и неравно, в противном случае.
7. Напишите более общую версию Quadratic.java, которая выводит корни многочлена ax2
+ bx + c, выводит сообщение об ошибке в случае, если дискриминант отрицательный и
корректно работает, если а=0.
Список основной и дополнительной литературы
Основная литература
Sedgewick, R., and Wayne,K., Introduction to Programming in Java: An Interdisciplinary
Approach, Addison‐Wesley, 2007
Дополнительная литература
Эккель Б. Философия Java. Питер, 2009
Download