Основы и методология программирования 2016/2017/168-2: различия между версиями
Akashin (обсуждение | вклад) Новая страница: «== Общая информация == Почта: kashin.andrej@gmail.com == Семинары == === 02.11 === How to install Linux? * Take Ubuntu from https:…» |
Akashin (обсуждение | вклад) |
||
| (не показаны 24 промежуточные версии этого же участника) | |||
| Строка 1: | Строка 1: | ||
== Общая информация == | == Общая информация == | ||
Репозиторий с кодом с семинаров: https://github.com/akashin/HSE_CPP_Seminars | |||
Почта: kashin.andrej@gmail.com | Почта: kashin.andrej@gmail.com | ||
| Строка 5: | Строка 7: | ||
== Семинары == | == Семинары == | ||
=== 02.11 === | === 02.11.2016 === | ||
==== Linux ==== | |||
How to install Linux? | How to install Linux? | ||
* Take Ubuntu from https://www.ubuntu.com/ and install it on you laptop | * Take Ubuntu from https://www.ubuntu.com/ and install it on you laptop | ||
* Install it on https://www.virtualbox.org/ | * Install it on https://www.virtualbox.org/ | ||
* Get Digital Ocean / Amazon machine through github student pack and code using SSH there | * Get Digital Ocean / Amazon machine through [https://education.github.com/pack github student pack] and code using SSH there | ||
* For the first lesson you can use https://www.tutorialspoint.com/unix_terminal_online.php for practice | * For the first lesson you can use https://www.tutorialspoint.com/unix_terminal_online.php for practice | ||
| Строка 34: | Строка 38: | ||
* pip install cpplint --user | * pip install cpplint --user | ||
* Or download here https://github.com/google/styleguide/blob/gh-pages/cpplint/cpplint.py | * Or download here https://github.com/google/styleguide/blob/gh-pages/cpplint/cpplint.py | ||
* Более удобная консоль iTerm2 для OSX: https://www.iterm2.com/ | |||
===== Zsh ===== | |||
Замена стандартного интерпретатора Bash, гибкий в настройке, поддерживает много полезных плагинов | |||
* Руководство по установке: https://gist.github.com/derhuerst/12a1558a4b408b3b2b6e | |||
* Плагины: https://github.com/robbyrussell/oh-my-zsh | |||
===== Vim ===== | |||
* Хороший туториал: https://github.com/mhinz/vim-galore | |||
===== Сайты для изучения UNIX инструментов ===== | |||
* Online judge для задач с использованием unix инструментов: https://www.hackerrank.com/domains/shell/bash | |||
* Изучение команд linux в форме CTF соревнования: http://overthewire.org/wargames/bandit/ | |||
* Набор отличных гайдов про Линукс и Bash: http://ryanstutorials.net/ | |||
==== C++ ==== | |||
Ссылка на контест: https://official.contest.yandex.ru/contest/3154/problems/ | Ссылка на контест: https://official.contest.yandex.ru/contest/3154/problems/ | ||
* Хорошая онлайн документация по C++: http://en.cppreference.com/w/ | |||
* Список математических функций доступных в C++: http://en.cppreference.com/w/cpp/numeric/math | |||
==== C++ books ==== | |||
* Хорошая и очень подробная книга по C++ http://www.stroustrup.com/4th.html | |||
* Список литературы по C++ на любой вкус и с подробным описанием: http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list/388282#388282 | |||
--------------- | |||
=== 03.11.2016 === | |||
Материалы семинара: https://github.com/akashin/HSE_CPP_Seminars/tree/master/03.11.2016 | |||
* Список манипуляторов выходного потока для форматирования вывода: http://en.cppreference.com/w/cpp/io/manip | |||
* Целочисленные типы с фиксированной шириной: http://en.cppreference.com/w/cpp/types/integer | |||
==== Fun facts ==== | |||
* Быстрое вычисление квадратного корня, которое использовалось в Quake 3: https://en.wikipedia.org/wiki/Fast_inverse_square_root | |||
-------------- | |||
=== 09.11.2016 === | |||
Материалы семинара: https://github.com/akashin/HSE_CPP_Seminars/tree/master/09.11.2016 | |||
* Список методов контейнера std::vector<T>: http://en.cppreference.com/w/cpp/container/vector | |||
* Сравнение передачи параметров в функцию по ссылке и по значению: https://www.cs.fsu.edu/~myers/c++/notes/references.html | |||
* Параметры фукнций со значением по умолчанию: http://www.learncpp.com/cpp-tutorial/77-default-parameters/ | |||
=== 23.11.2016 === | |||
Разбор контрольной: https://github.com/akashin/HSE_CPP_Seminars/tree/master/Quiz/17.11.2016/1 | |||
* Библиотека алгоритмов: http://en.cppreference.com/w/cpp/algorithm | |||
На семинаре мы реализовали: | |||
* rotate | |||
* merge | |||
* partitiion | |||
Бонусное задание: почитать как работает stable_partition без дополнительной памяти. | |||
* Библиотека контейнеров: http://en.cppreference.com/w/cpp/container | |||
Бонусное задание: придумать как имитировать erase для priority_queue используя unordered_set. | |||
=== 30.11.2016 === | |||
Материалы семинара: https://github.com/akashin/HSE_CPP_Seminars/tree/master/30.11.2016 | |||
* Реализовали std::reverse для RandomAccessIterator и BidirectionalIterator | |||
* Аккуратно решили задачу про Спиральку: https://github.com/akashin/HSE_CPP_Seminars/blob/master/homeworks/3/spiral.cpp | |||
* Реализовали свой Underlying контейнер для стека основанный на std::set | |||
=== 1.12.2016 === | |||
Контрольная. | |||
Решения первого варианта: https://github.com/akashin/HSE_CPP_Seminars/tree/master/Quiz/01.12.2016/2 | |||
=== 7.12.2016 === | |||
Материалы семинара: https://github.com/akashin/HSE_CPP_Seminars/tree/master/07.12.2016 | |||
* Обсудили задачи со второй контрольной | |||
* Полезный инструмент для работы с построчным считыванием, std::stringstream: http://doc.bccnsoft.com/docs/cppreference_en/cppsstream/all.html | |||
* Пример того, как обойти проблему одновременного применения cin и getline: http://stackoverflow.com/a/164694 | |||
* Решили задачу про декодирование UTF-8 | |||
* Поговорили про переопределение операторов внутри класса vs снаружи класса | |||
* Написали класс Bitset с методами set/get/count | |||
Бонус: | |||
* Реализовать оператор [] для Bitset'а | |||
* Посчитать количество единичных бит в числе с помощью арифметических операций, число которых пропорционально количеству единичных бит | |||
=== 14.12.2016 === | |||
* Обсудили стандартные ошибки на ревью и критерии зачета. | |||
Список наиболее частых ошибок: https://github.com/akashin/HSE_CPP_Seminars/blob/master/Review.md | |||
* Обсудили задачу по реализации dense Полинома из домашнего задания и реализовали большинство методов (кроме /, %, &, gcd). | |||
Текущая версия от 10:48, 14 декабря 2016
Общая информация
Репозиторий с кодом с семинаров: https://github.com/akashin/HSE_CPP_Seminars
Почта: kashin.andrej@gmail.com
Семинары
02.11.2016
Linux
How to install Linux?
- Take Ubuntu from https://www.ubuntu.com/ and install it on you laptop
- Install it on https://www.virtualbox.org/
- Get Digital Ocean / Amazon machine through github student pack and code using SSH there
- For the first lesson you can use https://www.tutorialspoint.com/unix_terminal_online.php for practice
Useful Unix tools:
- Navigation: ls, cd,
- Work with file system: cp, mv, rm
- Work with files: cat, head, tail, sort, uniq, wc
- Interaction between programs: pipes, redirection, <, >, >>, stdin, stdout, stderr
- Text editors and IDEs: vim, Atom, CLion
Get C++ compiler:
- OSX: brew install homebrew/versions/llvm38
- Ubuntu: sudo apt-get install clang-3.8
Copiling code:
- Compilers: clang++, g++
- Useful flags: -Wall -Wextra -Wconvertion
Running code:
- ./a.out < input.txt
Installing cpplint:
- pip install cpplint --user
- Or download here https://github.com/google/styleguide/blob/gh-pages/cpplint/cpplint.py
- Более удобная консоль iTerm2 для OSX: https://www.iterm2.com/
Zsh
Замена стандартного интерпретатора Bash, гибкий в настройке, поддерживает много полезных плагинов
- Руководство по установке: https://gist.github.com/derhuerst/12a1558a4b408b3b2b6e
- Плагины: https://github.com/robbyrussell/oh-my-zsh
Vim
- Хороший туториал: https://github.com/mhinz/vim-galore
Сайты для изучения UNIX инструментов
- Online judge для задач с использованием unix инструментов: https://www.hackerrank.com/domains/shell/bash
- Изучение команд linux в форме CTF соревнования: http://overthewire.org/wargames/bandit/
- Набор отличных гайдов про Линукс и Bash: http://ryanstutorials.net/
C++
Ссылка на контест: https://official.contest.yandex.ru/contest/3154/problems/
- Хорошая онлайн документация по C++: http://en.cppreference.com/w/
- Список математических функций доступных в C++: http://en.cppreference.com/w/cpp/numeric/math
C++ books
- Хорошая и очень подробная книга по C++ http://www.stroustrup.com/4th.html
- Список литературы по C++ на любой вкус и с подробным описанием: http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list/388282#388282
03.11.2016
Материалы семинара: https://github.com/akashin/HSE_CPP_Seminars/tree/master/03.11.2016
- Список манипуляторов выходного потока для форматирования вывода: http://en.cppreference.com/w/cpp/io/manip
- Целочисленные типы с фиксированной шириной: http://en.cppreference.com/w/cpp/types/integer
Fun facts
- Быстрое вычисление квадратного корня, которое использовалось в Quake 3: https://en.wikipedia.org/wiki/Fast_inverse_square_root
09.11.2016
Материалы семинара: https://github.com/akashin/HSE_CPP_Seminars/tree/master/09.11.2016
- Список методов контейнера std::vector<T>: http://en.cppreference.com/w/cpp/container/vector
- Сравнение передачи параметров в функцию по ссылке и по значению: https://www.cs.fsu.edu/~myers/c++/notes/references.html
- Параметры фукнций со значением по умолчанию: http://www.learncpp.com/cpp-tutorial/77-default-parameters/
23.11.2016
Разбор контрольной: https://github.com/akashin/HSE_CPP_Seminars/tree/master/Quiz/17.11.2016/1
- Библиотека алгоритмов: http://en.cppreference.com/w/cpp/algorithm
На семинаре мы реализовали:
- rotate
- merge
- partitiion
Бонусное задание: почитать как работает stable_partition без дополнительной памяти.
- Библиотека контейнеров: http://en.cppreference.com/w/cpp/container
Бонусное задание: придумать как имитировать erase для priority_queue используя unordered_set.
30.11.2016
Материалы семинара: https://github.com/akashin/HSE_CPP_Seminars/tree/master/30.11.2016
- Реализовали std::reverse для RandomAccessIterator и BidirectionalIterator
- Аккуратно решили задачу про Спиральку: https://github.com/akashin/HSE_CPP_Seminars/blob/master/homeworks/3/spiral.cpp
- Реализовали свой Underlying контейнер для стека основанный на std::set
1.12.2016
Контрольная.
Решения первого варианта: https://github.com/akashin/HSE_CPP_Seminars/tree/master/Quiz/01.12.2016/2
7.12.2016
Материалы семинара: https://github.com/akashin/HSE_CPP_Seminars/tree/master/07.12.2016
- Обсудили задачи со второй контрольной
- Полезный инструмент для работы с построчным считыванием, std::stringstream: http://doc.bccnsoft.com/docs/cppreference_en/cppsstream/all.html
- Пример того, как обойти проблему одновременного применения cin и getline: http://stackoverflow.com/a/164694
- Решили задачу про декодирование UTF-8
- Поговорили про переопределение операторов внутри класса vs снаружи класса
- Написали класс Bitset с методами set/get/count
Бонус:
- Реализовать оператор [] для Bitset'а
- Посчитать количество единичных бит в числе с помощью арифметических операций, число которых пропорционально количеству единичных бит
14.12.2016
- Обсудили стандартные ошибки на ревью и критерии зачета.
Список наиболее частых ошибок: https://github.com/akashin/HSE_CPP_Seminars/blob/master/Review.md
- Обсудили задачу по реализации dense Полинома из домашнего задания и реализовали большинство методов (кроме /, %, &, gcd).