С днем новых тестов!
Обновитесь, когда будете решать домашку. Мы добавили новые тесты в parser и basic.
Пересуживать уже сданное не будем, но вы помните, что тесты инкрементальные, то есть чтобы сдать следующие задачи, придется всё-таки поправить баги.
На новых тестах парсера не упало только 3 решения из сданных. Но там у всех очевидная ошибка, вы быстро поймёте.
На днях ещё добавим тесты в advanced на сложные лямбда-функции.
Обновитесь, когда будете решать домашку. Мы добавили новые тесты в parser и basic.
Пересуживать уже сданное не будем, но вы помните, что тесты инкрементальные, то есть чтобы сдать следующие задачи, придется всё-таки поправить баги.
На новых тестах парсера не упало только 3 решения из сданных. Но там у всех очевидная ошибка, вы быстро поймёте.
На днях ещё добавим тесты в advanced на сложные лямбда-функции.
Мы обновляем тестирующую систему, ничего не должно поменяться, но если что-то падает, кричите
C завтрашнего дня мы начинаем мультипоточность. Эту тему достаточно сложно проверять автоматически, поэтому мы решили прибегнуть к не самым лучшим практикам — в некоторых задачах мы будем сравнивать время. Мы постараемся делать это максимально прозрачно — сколько на сервере должно работать времени или на сколько надо соптимизировать.
Понятное дело, что из вас найдутся люди, которые захотят читерить и засылать решения без многопоточности. Для вас у меня лишь один посыл — вы очень нехорошие люди, и я даже не понимаю, почему я должен объяснять, что подгонять решение под тесты плохо.
Что это всё значит для вас:
1. Некоторые бенчмарки могут отличаться на вашем железе от серверского
2. Иногда некоторые тесты могут не проходить у вас (если у вас совсем старый компьютер или однопоточная embedded система), но проходить на сервере
3. Помимо ASAN, добавляется TSAN сборка, которая уже включена на всех задачах
4. За несколько минут до дедлайна из-за перегрузки серверов возможно, что бенчмарки не будут проходить из-за того, что вы все одновременно решите сдать. Старайтесь сдавать более равномерно, и мы не пойдём на уступки здесь, тем более с прогрессивной шкалой вы мало потеряете
5. Время сборки увеличилось где-то на 1 минуту из-за того, что мы собираем библиотеку бенчмарков
Если мы заметим у вас решение, которое не следует условием по многопоточности, мы забаним вам целый сегмент, я не хочу угрожать, но из вас самих нашлись те, кто так делал и мне приходится писать такие сообщения. Финальное решение принимается коллегиально семинаристами и лектором. В случае совсем спорных вопросов субъективным финальным арбитром буду являться я, а дальше и администрация.
Задачи выложим в субботу и начнём разговаривать про всё это тоже тогда. Семинаристы тоже будут рассказывать про задачи и помогать.
Понятное дело, что из вас найдутся люди, которые захотят читерить и засылать решения без многопоточности. Для вас у меня лишь один посыл — вы очень нехорошие люди, и я даже не понимаю, почему я должен объяснять, что подгонять решение под тесты плохо.
Что это всё значит для вас:
1. Некоторые бенчмарки могут отличаться на вашем железе от серверского
2. Иногда некоторые тесты могут не проходить у вас (если у вас совсем старый компьютер или однопоточная embedded система), но проходить на сервере
3. Помимо ASAN, добавляется TSAN сборка, которая уже включена на всех задачах
4. За несколько минут до дедлайна из-за перегрузки серверов возможно, что бенчмарки не будут проходить из-за того, что вы все одновременно решите сдать. Старайтесь сдавать более равномерно, и мы не пойдём на уступки здесь, тем более с прогрессивной шкалой вы мало потеряете
5. Время сборки увеличилось где-то на 1 минуту из-за того, что мы собираем библиотеку бенчмарков
Если мы заметим у вас решение, которое не следует условием по многопоточности, мы забаним вам целый сегмент, я не хочу угрожать, но из вас самих нашлись те, кто так делал и мне приходится писать такие сообщения. Финальное решение принимается коллегиально семинаристами и лектором. В случае совсем спорных вопросов субъективным финальным арбитром буду являться я, а дальше и администрация.
Задачи выложим в субботу и начнём разговаривать про всё это тоже тогда. Семинаристы тоже будут рассказывать про задачи и помогать.
Добавлен бонус simple_defer. Рекомендуем не опираться на defer -- все сильно проще, решение может уложиться в 15-20 строк
Мы выложили след дз, там 4 задачи. Надо будет пооптимизировать вычисления и поиграться с тредами-мьютексами-атомиками.
Я исправил баллы за БДЗ с 1 2 3 4 до 2 2 3 3.
Наслаждайтесь
Я исправил баллы за БДЗ с 1 2 3 4 до 2 2 3 3.
Наслаждайтесь
Я выложил примеры, которые мы разбирали на лекции. На семинарах будут ещё, не переживайте
Запись пока здесь. Выложу на ютуб как загрузится локально
https://zoom.us/rec/share/MAgkYSvAahWSEGk7Q2BTwmIGok1ao5fR837Wm4dEkpTkPt7O2ATQd_CAPHcA-tjd.vSI_XH9A5XVoEtYU?startTime=1636185763000
Задавайте вопросы в чате. На лекции было много вопросов про CPU/кэши/мьютексы/треды/атомики. К многопоточности надо привыкать, хорошие вопросы это отличная тема, чтобы разбираться и выстраивать интуицию
Запись пока здесь. Выложу на ютуб как загрузится локально
https://zoom.us/rec/share/MAgkYSvAahWSEGk7Q2BTwmIGok1ao5fR837Wm4dEkpTkPt7O2ATQd_CAPHcA-tjd.vSI_XH9A5XVoEtYU?startTime=1636185763000
Задавайте вопросы в чате. На лекции было много вопросов про CPU/кэши/мьютексы/треды/атомики. К многопоточности надо привыкать, хорошие вопросы это отличная тема, чтобы разбираться и выстраивать интуицию
HSE Продвинутый C++ 2021
С днем новых тестов! Обновитесь, когда будете решать домашку. Мы добавили новые тесты в parser и basic. Пересуживать уже сданное не будем, но вы помните, что тесты инкрементальные, то есть чтобы сдать следующие задачи, придется всё-таки поправить баги. …
Обновления по БДЗ:
Добавлены дополнительные тесты в advanced (и один в basic). Также добавлена проверка на правильную работу garbage collector-а.
Число итераций в fuzzing-тесте basic/advanced увеличено до 100К, если столкнетесь с TL при тестировании на сервере -- сообщайте.
Добавлены дополнительные тесты в advanced (и один в basic). Также добавлена проверка на правильную работу garbage collector-а.
Число итераций в fuzzing-тесте basic/advanced увеличено до 100К, если столкнетесь с TL при тестировании на сервере -- сообщайте.
Я добавил тест, который я бы назвал "факап на миллион" в reduce
Все решения упали. В тесте есть ссылка, изучите её
Все решения упали. В тесте есть ссылка, изучите её
Раз обсуждение в чате происходит. Я недоглядел эту историю, поэтому я объявляю policy, которой мы будем придерживаться. Ответственность, если вы планировали, и мы вам подпортили жизнь беру я.
Мы не добавляем тестов за половину времени до дедлайна, то есть мы не добавляем тестов за неделю, если дедлайн 2, и не добавляем тестов за 1.5 если дедлайн в 3 недели. Как бы люди не пихали плохие решения, это начинает сказываться на вашем времени и ощущении неопределённости. Я не хочу, чтобы это было так.
Если мы добавляем тесты, то это должно учить какой-то истории. Например, бывает, что масса людей сдала плохое решение, которое мы не хотели, и тогда мы можем добавить и сделать так, чтобы вы перерешали. Инженерный код субъективный, поэтому здесь не получится как на ICPC контестах, — это всегда баланс между чистотой кода, корректностью и нашим желанием чему-то научить.
Если единичные решения плохие, мы не будем добавлять тесты, чтобы поломать вас. Мы можем написать с просьбой переделать, но формально вы это не обязаны делать. Запихали и запихали, мы всё в итоге не найдём, а так создаём только преценденты для плохих отношений и неопределенности.
Мы не добавляем тестов за половину времени до дедлайна, то есть мы не добавляем тестов за неделю, если дедлайн 2, и не добавляем тестов за 1.5 если дедлайн в 3 недели. Как бы люди не пихали плохие решения, это начинает сказываться на вашем времени и ощущении неопределённости. Я не хочу, чтобы это было так.
Если мы добавляем тесты, то это должно учить какой-то истории. Например, бывает, что масса людей сдала плохое решение, которое мы не хотели, и тогда мы можем добавить и сделать так, чтобы вы перерешали. Инженерный код субъективный, поэтому здесь не получится как на ICPC контестах, — это всегда баланс между чистотой кода, корректностью и нашим желанием чему-то научить.
Если единичные решения плохие, мы не будем добавлять тесты, чтобы поломать вас. Мы можем написать с просьбой переделать, но формально вы это не обязаны делать. Запихали и запихали, мы всё в итоге не найдём, а так создаём только преценденты для плохих отношений и неопределенности.
+2 дня к scheme
Последнее дз двигаться не будет, там не будет времени
Последнее дз двигаться не будет, там не будет времени
В эту субботу лекции по С++ не будет, будет перенос, о нем сообщу как только узнаю
Завтра будет лекция по С++ в 13:00 во время математической логики
Поговорим про многопоточность в индустрии, синхронные, асинхронные парадигмы -- лёгкие треды, корутины. Немного про науку, про модели памяти атомарных операций, транзакционную память, если останется время.
Если будет огромный интерес, сделаем ещё одну лекцию на след неделе по продвинутым темам. Но для тех, кто сильно заинтересуется, посоветуем пройти на РС и курс от Романа Липовского
Поговорим про многопоточность в индустрии, синхронные, асинхронные парадигмы -- лёгкие треды, корутины. Немного про науку, про модели памяти атомарных операций, транзакционную память, если останется время.
Если будет огромный интерес, сделаем ещё одну лекцию на след неделе по продвинутым темам. Но для тех, кто сильно заинтересуется, посоветуем пройти на РС и курс от Романа Липовского
Формат пересдачи по C++:
Мы разрешим дорешать все задачи (мелкие и большие), но максимум от баллов каждой задачи можно будет получить 60%. Это идёт поверх заработанных баллов.
Также со всеми, кто пересдает, мы поговорим лично по решенным задачам и можем задавать вопросы по коду у любой задачи
Максимум на пересдаче можно получить 6
Мы разрешим дорешать все задачи (мелкие и большие), но максимум от баллов каждой задачи можно будет получить 60%. Это идёт поверх заработанных баллов.
Также со всеми, кто пересдает, мы поговорим лично по решенным задачам и можем задавать вопросы по коду у любой задачи
Максимум на пересдаче можно получить 6
В задаче timerqueue используйте wait_until c std::condition_variable, wait_for пораждает false positive у TSAN https://github.com/google/sanitizers/issues/1259
С днём новых задач! 🤡 — Вчера был весь день в перелётах. Добавили 4 задачи.
Сейчас выложу все лекции на ютуб и в репозиторий, я вылетел из графика немного из-за таймзон.
Большую домашку выложим на след неделе, мы хотим поработать над материалами, чтобы вы совсем не умерли.
Оценка за бонусы: максимум 1.5 балла к итогу. Сейчас 7 задач, мы добавим максимум ещё 1-2. В итоге оценка за бонус будет
С днём новых задач! 🤡 — Вчера был весь день в перелётах. Добавили 4 задачи.
Сейчас выложу все лекции на ютуб и в репозиторий, я вылетел из графика немного из-за таймзон.
Большую домашку выложим на след неделе, мы хотим поработать над материалами, чтобы вы совсем не умерли.
Оценка за бонусы: максимум 1.5 балла к итогу. Сейчас 7 задач, мы добавим максимум ещё 1-2. В итоге оценка за бонус будет
кол-во решённых / кол-во бонусов * 1.5GitHub
[tsan] False warning when using std::condition_variable · Issue #1259 · google/sanitizers
When compiling the following code with clang, utilizing thread sanitizer, I get false warnings. #include <cassert> #include <chrono> #include <condition_variable> #include <ios...
Система будет недоступна в период с 2:30 до 3:30.
Скорее всего ничего не поломается, но вероятность есть, задачи могут не сдаваться.
Скорее всего ничего не поломается, но вероятность есть, задачи могут не сдаваться.
Доброй ночи/утра
Мы добавили пару задач, это coroutine и generator в новый семинар (больше задач в семинаре не будет). Они с большой вероятностью могут у вас не собраться. Чтобы это исправить, сделайте одно из трёх
1.
На ubuntu и debian установите пакет libboost-context-dev
На mac
2.
Соберите из исходников только библиотеку context и указывайте в CMake пусть до установки через
3.
Если вы не планируете решать задачи совсем, закомментируйте в CMakeLists.txt эти две строки до того момента, как захотите решать задачи
Мы добавили бонус executors. Он оценивается в отдельные 0.5 балла в итог. Он не идёт в количественные бонусы, то есть всего бонусов до сих пор 7, за них 1.5 балла. За executors ещё 0.5 балла, в итоге за бонусы вы можете получить 2 балла. Мы советуем решать этот бонус только если вам не хватает сил или мотивации решать последнюю БДЗ, задача достаточно объёмная.
Табличку с оценками сделаем в ближайшее время, чтобы вы могли трекать свои текущие баллы
Мы добавили пару задач, это coroutine и generator в новый семинар (больше задач в семинаре не будет). Они с большой вероятностью могут у вас не собраться. Чтобы это исправить, сделайте одно из трёх
1.
На ubuntu и debian установите пакет libboost-context-dev
sudo apt install libboost-context-devНа mac
brew install boost2.
Соберите из исходников только библиотеку context и указывайте в CMake пусть до установки через
-DBOOST_ROOT=<path>. Прочитайте внимательно инструкцию по ссылке3.
Если вы не планируете решать задачи совсем, закомментируйте в CMakeLists.txt эти две строки до того момента, как захотите решать задачи
Мы добавили бонус executors. Он оценивается в отдельные 0.5 балла в итог. Он не идёт в количественные бонусы, то есть всего бонусов до сих пор 7, за них 1.5 балла. За executors ещё 0.5 балла, в итоге за бонусы вы можете получить 2 балла. Мы советуем решать этот бонус только если вам не хватает сил или мотивации решать последнюю БДЗ, задача достаточно объёмная.
Табличку с оценками сделаем в ближайшее время, чтобы вы могли трекать свои текущие баллы
GitLab
Files · main · hse-cpp / cpp-advanced-hse · GitLab
Advanced C++ at HSE
Мы выложили новое большое домашнее задание.
Это jpeg-decoder.
В нём 6 пунктов, максимум 12.5 баллов. Мы думаем, что пункт progressive самый тяжелый (и оценивается в 2.5), прочитайте все остальные. Также в этом задании есть элемент закрытых тестов -- это fuzzing тестирование. Вы можете это тестирование запускать у себя, в этом плане оно открытое.
Дедлайн 26 декабря 23:59:59. Ночью 27 декабря мы запустим все решения друг против друга. Все упавшие решения не получат баллов, которые мы указали на пункт fuzz.
Все детали на лекциях и семинарах, но вы можете начинать читать материалы, указанные в условии.
Мы можем немного менять тесты или добавить пару жпегов, всё как обычно.
В задаче также есть пасхалка, напишите лектору или семинаристу, если вы думаете, что нашли её. Первым 10 людям мы поставим +1 балл за это дз, если вы сможете её объяснить.
Удачи!
Это jpeg-decoder.
В нём 6 пунктов, максимум 12.5 баллов. Мы думаем, что пункт progressive самый тяжелый (и оценивается в 2.5), прочитайте все остальные. Также в этом задании есть элемент закрытых тестов -- это fuzzing тестирование. Вы можете это тестирование запускать у себя, в этом плане оно открытое.
Дедлайн 26 декабря 23:59:59. Ночью 27 декабря мы запустим все решения друг против друга. Все упавшие решения не получат баллов, которые мы указали на пункт fuzz.
Все детали на лекциях и семинарах, но вы можете начинать читать материалы, указанные в условии.
Мы можем немного менять тесты или добавить пару жпегов, всё как обычно.
В задаче также есть пасхалка, напишите лектору или семинаристу, если вы думаете, что нашли её. Первым 10 людям мы поставим +1 балл за это дз, если вы сможете её объяснить.
Удачи!
Задач больше не будет на курсе. Делайте большое дз
Мы посмотрели на ваши посылки в
1) Вам нужно использовать библиотеку
Мы забанили функции
2) Переиспользуйте план, который подготовила библиотека
В ближайшее время мы добавим бенчмарк, проверяющий это.
jpeg-decoder/fftw. Два момента:1) Вам нужно использовать библиотеку
FFTW. Не пишите вычисления по формуле руками, это приведет вас к проблемам с точностью, которые будет сложно обнаружить.Мы забанили функции
cos и acos, 4 сданных решения перетестировали. Это не универсальная проверка, но не пытайтесь ее обойти, пожалуйста.2) Переиспользуйте план, который подготовила библиотека
FFTW, между вызовами DctCalculator::Inverse(), не создавайте его каждый раз заново -- это неэффективно.В ближайшее время мы добавим бенчмарк, проверяющий это.