Personal tools
You are here: Home Members ylitvinov's Home 14-44 Домашние задания, контрольные работы, весна 2015, 144 группа

Домашние задания, контрольные работы, весна 2015, 144 группа

Табличка с результатами домашних заданий и контрольных работ, условия заданий

Домашние задания:

В табличке:
пусто - задачу не получал
? - задачу получал, но ещё не смотрел
0 - задача не зачтена
0.5 - в целом правильно, но надо кое-что поправить
1 - задача зачтена
зелёным выделены работы, зачтённые полностью (и, соответственно, дающие балл на зачёт)


Контрольные работы:

В табличке:
- - задачу не получал
0 - задача не зачтена
x - задача зачтена (количество x-ов равно количеству переписываний)
На переписывании надо решить только незачтённые задачи, то есть, например, если решены две задачи из трёх, на переписывании надо решить одну, по теме, к которой относится незачтённая задача


Во всех сдаваемых задачах обязательны юнит-тесты и комментарии XML Documentation

Порядок работы с git-ом

  • программист хочет сделать новую фичу (в нашем случае удобно считать "фичей" одну задачу или домашку целиком, если там задачи маленькие)
  • отводит себе ветку от мастера
  • реализует там фичу
  • тестит и рефакторит её, когда считает, что она готова, делает пуллреквест
  • пока пуллреквест ревьюят, программист делает новую фичу, опять-таки, отведя новую ветку от мастера (сначала git checkout master, потом git checkout -b <имя ветки>, ну или аналоги в графических клиентах)
  • по пуллреквесту появляются замечания, программист переключается на ветку пуллреквеста (git checkout) и правит там замечания
  • когда поправил, коммитит и пушит исправления, они автоматом добавляются в пуллреквест (потому что обычно пуллреквест делается на ветку, а новые коммиты коммитятся в ветку, так что и ветка и пуллреквест продвигаются)
  • просит ревьюеров, чтобы они посмотрели фиксы
  • переключается обратно на свою рабочую ветку и продолжает писать код, возможно, делая ещё пуллреквесты (поскольку они все отведены от текущего мастера, они друг от друга не зависят, так что их можно ревьюить и мерджить отдельно)
  • цикл повторяется до тех пор, пока пуллреквест не принимают
  • программист удаляет ветку с фичей, когда она замерджена

Полезные ссылки: https://guides.github.com/introduction/flow/index.html и http://nvie.com/posts/a-successful-git-branching-model/



Страница с материалами пары про Qt

Условия задач:

1. 13.02.2015

Презентация с пары
Конспект пары
  1. Посчитать факториал
  2. Посчитать числа Фибоначчи
  3. Отсортировать массив какой-либо из сортировок
  4. Зарегистрироваться на github.com, прислать мне на почту имя логина. Создать себе репозиторий для домашних задач с адекватным именем
  5. Придумать подходящую структуру папок и выложить в гит все имеющиеся исходники решений задач с прошлого и этого семестра
  6. Дан массив размерностью N x N, N - нечетное число. Вывести элементы массива при обходе его по спирали, начиная с центра
  7. Отсортировать столбцы матрицы по первым элементам

2. 20.02.2015

Презентация с пары
Конспект пары
  1. Написать стек в виде класса
  2. Написать список в виде класса
  3. Написать хеш-таблицу в виде класса с использованием класса-списка. Должно быть можно добавлять значение в хеш-таблицу, удалять и проверять на принадлежность
  4. Реализовать стековый калькулятор (класс, реализующий выполнение операций +, -, *, / над стеком чисел). Стек реализовать двумя способами (например, массивом или списком) в двух разных классах на основе одного интерфейса. Стековый калькулятор должен знать только про интерфейс

3. 27.02.2015

Конспект пары
Пример проекта с юнит-тестами с пары
  1. Написать юнит-тесты к одной из задач предыдущего задания
  2. Модифицировать хеш-таблицу из задачи 3 предыдущей работы так, чтобы хеш-функцию можно было менять в зависимости от выбора пользователя, причём хеш-функцию должно быть можно передавать из использующего хеш-таблицу кода. Юнит-тесты обязательны.

4. 06.03.2015

Презентация с пары
Конспект пары
  1. Решить задачу о вычислении выражения по дереву разбора из прошлого семестра. Разработать и реализовать иерархию классов, описывающих дерево разбора, используя их, реализовать класс, вычисляющий значение выражения по дереву. Классы, представляющие операнды и операторы, должны сами уметь себя вычислять и печатать. Примечание: заставить юнит-тесты ожидать исключения можно, например, так: [ExpectedException(typeof(System.DivideByZeroException))], подробнее тут: http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.expectedexceptionattribute(v=vs.110).aspx
    Исходное условие:
    По дереву разбора арифметического выражения вычислить его значение. Дерево разбора хранится в файле в виде (<операция> <операнд1> <операнд2>), где <операнд1> и <операнд2> сами могут быть деревьями, либо числами. Например, выражение (1 + 1) * 2 представляется в виде (* (+ 1 1) 2). Должны поддерживаться операции +, -, *, / и целые числа в качестве аргументов. Требуется построить дерево в явном виде, распечатать его (не обязательно так же, как в файле), и посчитать значение выражения обходом дерева. Может быть полезна функция ungetc (если не '(', возвращаем символ в поток и читаем число fscanf-ом). Можно считать, что входной файл корректен. Пример - по входному файлу (* (+ 1 1) 2) может печататься ( * ( + 1 1 ) 2 ) и выводиться 4.
  2. Унаследовавшись от класса список реализовать класс UniqueList, который не содержит повторяющихся значений. Реализовать классы исключений, которые генерируются при попытке добавления в такой список уже существующего или при попытке удаления несуществующего элемента.

5. 13.03.2015

Презентация с пары
Конспект пары
  1. Реализовать функцию Map, которая принимает список и функцию, преобразующую элемент списка. Возвращаться должен список, полученный применением переданной функции к каждому элементу переданного списка. Например, Map(new List<int>() {1, 2, 3}, x => x * 2) должен возвращать список [2; 4; 6].
  2. Реализовать функцию Filter, которая принимает список и функцию, возвращающую булевое значение по элементу списка. Возвращаться должен список, составленный из тех элементов переданного списка, для которых переданная функция вернула true.
  3. Реализовать функцию Fold, которая принимает список, начальное значение и функцию, которая берёт текущее накопленное значение и текущий элемент списка, и возвращает следующее накопленное значение. Сама Fold возвращает накопленное значение, получившееся после всего прохода списка. Например, Fold(new List<int>() {1, 2, 3}, 1, (acc, elem) => acc * elem) работала бы так: сначала в acc клался бы 1, потом умножался бы на 1, потом результат (1) умножался бы на 2, потом результат (2) умножался бы на 3, потом результат (6) возвращался бы в качестве ответа.
  4. На базе класса, генерирующего события по нажатию на клавиши управления курсором (EventLoop с пары), реализовать программу, управляющую положением курсора в консоли. Например, по нажатию на стрелку влево курсор должен смещаться влево, если это возможно. Будут полезны свойства Console.CursorLeft и Console.CursorTop.

6. 27.03.2015

Конспект пары
  1. Написать калькулятор с пользовательским интерфейсом (по примеру стандартного виндового калькулятора).
  2. Сделать часы (приложение, показывающее текущее время).

7. 03.04.2015

Презентация с пары
Конспект пары
  1. Переделать список и стек на основе списка на генерики. Сделать списку энумератор, и чтобы можно было по нему ходить foreach.
  2. Создать генерик-класс, реализующий АТД "Множество", обладающий операциями добавления, удаления элемента, проверки на принадлежность множеству, пересечения и объединения множеств.

8. 10.04.2015

Презентация с пары
Конспект пары
  1. Нарисовать на UML диаграмму классов для игры "реверси", с несколькими видами "ботов", которые могли бы играть вместо человека. Диаграмма должна быть довольно подробным проектом системы. Реализовывать этот проект не нужно. Желательно пользоваться средствами визуального моделирования наподобие Visual Paradigm, присылать скриншоты с диаграммой.

9. 24.04.2015

Код для ревью, пример 1
Код для ревью, пример 2
Код для ревью, пример 3
Код для ревью, пример 4, tree.cs, node.cs, nodeOperand.cs, nodeOperation.cs
  1. Заревьюить код https://github.com/qreal/qreal/blob/master/qrgui/plugins/pluginManager/sdfRenderer.h, https://github.com/qreal/qreal/blob/master/qrgui/plugins/pluginManager/sdfRenderer.cpp, написать замечания и выложить их на гитхаб.

Доклады

  • Обзор технологии WPF - Александр Данилов
  • Обзор технологии WCF - Андрей Кудрявцев
  • Обзор технологии Silverlight - Владислав Голиков
  • Mock-объекты - Иван Лимар
  • Рефлексия и атрибуты - Владислав Танков
  • Обзор технологии ASP.NET MVC - Артём Сычёв (презентация, конспект)
  • Entity Framework - Григорий Киргизов (презентация, конспект)

Document Actions