Pull to refresh
15
0
soomrack @soomrack

User

Send message
Хотелось бы, если время позволит. Все от обстоятельств зависит.
> но что интересно — на практике не припоминаю чтобы хотя бы 5% применялось в бизнесе

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

Первый принцип: никаких ограничений по выбору профессии в области CS.
(Машинное обучение, ИИ, базы данных, веб...) Это не значит, что он должен уметь делать все сразу, это значит, что не должно быть фундаментальных препятствий к быстрой прокачке навыков.

Второй принцип: возможность продолжить обучение по направлениям математика или CS.
Например, пойти в магистратуру и развиваться в области криптографии и информационной безопасности; или развиваться в области расчетов движения механических объектов — бпла и пр.; или уйти в область робототехники…

Третий принцип: полученная квалификация не должна устареть за 10 лет.

** Конечно, это не массовое образование (тут набор вообще планируется в 20 человек), но это спецы, которые должны будут решать задачи, составляющие 1-5% от бизнеса (по моему опыту), но без решения которых остальные 95-99% бизнеса лишены смысла.

*** И да, я считаю, что должна быть система институтов или ПТУ, которая будет массово (тысячи в год) и быстро (за 1-2 года) готовить конкретных программистов под конкретные простые задачи, для конкретных бизнес-потребностей — администрирование MySQL; PostgreSQL; настройка Nginx; Python для веба; и т.д. и т.п., т.е. набор небольших, но очень конкретных навыков. Система должна быстро подстраиваться под потребности бизнеса. Впрочем, сейчас эту нишу пытается занять онлайн-образование. Правда статистически эффективность пока не очень.
Double и float может быть проблемным с т.з. округления. Когда вы отбрасываете несколько цифр в расстоянии до Солнца — это норм, но когда вы округлите хотя бы на 1 копейку/цент счет, то есть шанс что вас знатно вы*бут бухи, налоговики и пр. им сочувствующие. Поэтому если у вас нет специального типа или структуры, то только целые числа.
Это скорее хорошо. Плохо другое, что есть области в которых мы были лидерами, и есть результаты наших ученых, которые сейчас переоткрываются западными (это вообще общая проблема, характерна не только для России), а преподавателей, которые бы этому качественно научили бы — нет. Преемственность знаний давно потеряна. И вот когда студент слушает иностранные курсы, овладевает методами, которые являются просто частным случаем более общих методов, носящих имя наших ученых, но студент их не знает. Вот это действительно прискорбно.
Подозреваю, что речь идет о Bloom Box. Уже несколько лет некоторые компании пытаются запитать датацентры от них.
Задача минимум обучения, — чтобы специалист мог выбирать оптимальный метод решения из существующих, и знать какими свойствами он обладает (сложность и пр.), чтобы он мог спрогнозировать качество решения своей задачи в целом.

Если ему нужно посмотреть в интернете как что реализуется, то это конечно не очень хорошо, т.к. затормозит написание кода, но и не очень плохо (если только ему не приходится постоянно это делать).
СПбГУ, матмех, новая программа «Математика и Компьютерные науки», первый набор в след. году.
> В дикий интернет такую машину пускать категорически нельзя.

Я прям представляю картину:

Ночь, трое студентов, проходящих стажировку в здании, где находился почтовый ящик, разбирая старый хлам внезапно обнаруживают странный компьютер. Они бы и не обратили на него внимания, если бы не подозрительный цвет корпуса, — он был белым. Кроме того из него интригующе торчала красная дискета с надписью «архив лаб. №119».
Стряхнув пыль, они дрожащей рукой нажимают кнопку включения. Писк биоса, дыдых дисковода, на экране появляется радужная надпись Windows 98. Через 10 минут компьютер полностью загрузился и готов к работе. На рабочем столе только один ярлык — «Вавилонская Библиотека». Клик, открывается IE 4.0, но сайты не грузятся, хотя нет, постойте, один все-таки начал грузиться! К сожалению, оплата домена bablib.org уже давно просрочена и ее выкупил вебмастер, теперь на нем фотки голых баб, видео-баннеры, два попандера и криптомайнер в фоне. Старенькое сердце десктопа не выдержало такого будущего и тоненькая струйка дыма, как бы символизируя стремление к небу, унесла с собой железную душу к давно покинувшим его людям.
> Проведём маленький эксперимент, если Вы не против — мне любопытно чего такого я не знаю на фундаментальном уровне, из того, что преподают в ВУЗах в качестве базы.

Ну я вот писал программу по нескольким курсам, один из основных — «Алгоритмы и структуры данных», вот база (не все, особенно и последнего семестра, нужно знать и доказывать, но основные свойства полезно знать).

Вот примерный список, я надеюсь, он после обкатки скорректируется. Общий объем 225 часов (чисто лекции, практика Python-C-C++ идет отдельными часами).

Поиск в массиве
1.1 Линейный поиск
1.2 Двоичный поиск
1.3 Троичный поиск
1.4 Интерполяционный поиск
Структуры данных
1.5 Массив
1.6 Стек
1.7 Очередь, двусторонняя очередь
1.8 Словарь
1.9 Хеш-таблица

Сортировки, анализ алгоритмов
2.1 Bubble sort (пузырьковая сортировка)
2.2 Merge sort (сортировка слиянием)
2.3 Quick sort (быстрая сортировка)
2.4 Bucket sort (блочная сортировка)
2.5 Heap sort (пирамидальная сортировка)
2.6 Insertion sort (сортировка вставками)
2.7 Counting sort (сортировка подсчетом)
2.8 Radix sort (порязрядная сортировка)
2.9 Timsort и другие гибридные алгоритмы сортировки

Рекурсия, математическая индукция
3.1 Хвостовая рекурсия
3.2 Обратная польская запись
3.3 Числа Каталана
3.4 Вычисление биномиальных коэффициентов
3.5 Метод градиентного спуска
3.6 Метод сопряженных градиентов
3.7 Принцип динамического программирования
3.8 Метод ветвей и границ
3.9 Методы Gradient boosting
3.10 Алгоритм Кадана
3.11 Поиск методом золотого сечения
3.12 Производящие функции
3.13 Запаздывающие генераторы Фибоначчи
3.14 Memoization
3.15 Корекурсия
3.16 Задача 3-SAT
3.17 Алгоритм фрактального сжатия
Структуры данных (рекурсивные)
3.18 Список
3.19 Дерево
3.20 Граф

Строки
4.1 Z-функция
4.2 Алгоритм Кнута-Морриса-Пратта
4.3 Алгоритм Ахо-Корасик
4.4 Алгоритм Бойера-Мура
4.5 Алгоритм Бойера-Мура-Хорспула
4.6 Сходство Джаро-Винклера
4.7 Расстояние Левенштейна, алгоритм Укконена
4.8 Расстояние Дамерау-Левенштейна
4.9 Алгоритм Карпа-Миллера-Розенберга
4.10 Алгоритм Каркайнена-Сандерса
4.11 Алгоритм Арикавы-Аримуты-Касаи-Ли-Парка
4.12 Алгоритм Ву-Менбера
4.13 Алгоритм Ландау-Вишкена
4.14 Алгоритм Майерса
Структуры
4.15 Префиксное дерево
4.16 Суффиксный массив
4.17 Суффиксное дерево

Порядковые статистики, потоковые алгоритмы
5.1 Алгоритм BFPRT
5.2 Алгоритм Манро-Патерсона
5.3 Алгоритм Канна-Гринвальда
5.4 Алгоритм большинства голосов Бойера-Мура
5.5 Алгоритм Lossy Count

Деревья
6.1 Эйлеров обход дерева, DFS, BFS
6.2 Двоичное дерево поиска
6.3 Декартово дерево
6.4 Красно-черное дерево
6.5 АВЛ-дерево, дерево Фибоначчи
6.6 Splay tree (расширяющееся дерево)
6.7 B, B+, B* дерево, 2-3 дерево
6.8 PQ-дерево
6.9 Дерево отрезков
6.10 Дерево Фенвика
6.11 Алгоритм двоичного подъема (задача LCA)
6.12 Алгоритм Фарах-Колтона и Бендера (RMQ, LCA)
6.13 Sqrt-декомпозиция
6.14 Центроидная декомпозиция
6.15 Heavy-light декомпозиция
6.16 Фибоначчиева куча
6.17 Куча, 2-3 куча
6.18 Очередь с приоритетами
6.19 Множество
6.20 Система непересекающихся множеств
6.21 Лес непересекающихся множеств
6.20 Ассоциативный массив

Графы
7.1 Обход в ширину (BFS)
7.2 Обход в глубину (DFS)
7.3 Топологическая сортировка
7.4 Алгоритм Munagala-Ranade
7.5 Алгоритм Mehlhorn-Meyer
7.6 Задача о динамической связности
7.7 Алгоритм поиска точек сочленения графа
7.8 Алгоритм поиска мостов графа
7.9 Алгоритм Косараю
7.10 Алгоритм Тарьяна
7.11 Задача 2-SAT
7.11 Алгоритм Брона-Кербоша
7.12 Конденсация графа
7.13 Раскраска графа
7.14 Задача о назначениях
7.15 Венгерский алгоритм
7.16 Алгоритм Ульмана
Структуры
7.17 Матрица смежности
7.18 Матрица достижимости
7.19 Матрица сильной связности
7.20 Матрица Лапласа
7.21 Матрица Инцидентности
7.22 Список смежности
7.23 Список ребер

Графы: циклы
8.1 Алгоритм поиска Эйлерова цикла
8.2 Алгоритм поиска Эйлерова пути
8.3 Алгоритм поиска Гамильтонова цикла
8.3 Алгоритм поиска Гамильтонова пути
8.4 Задача Коммивояжера

Графы: остовное дерево
9.1 Теорема Кирхгофа
9.2 Теорема Кэли о числе деревьев, код Прюфера
9.3 Лемма о безопасном (минимальном) ребре
9.4 Алгоритм Краскала
9.5 Алгоритм Примы
9.6 Алгоритм Борувки
9.7 Задача устранения петель в сети Ethernet (STP)
9.8 Задача Штейнера

Графы: кратчайший путь
10.1 Алгоритм Дейкстры
10.2 Алгоритм Best-First
10.3 Алгоритм A*
10.4 Алгоритм Левита
10.5 Алгоритм Беллмана-Форда
10.6 Алгоритм Флойда-Уоршелла
10.7 Алгоритм ALT
10.8 Алгоритм Reach-based pruning

Графы: потоки в сетях
11.1 Алгоритм Форда-Фалкерсона
11.2 Алгоритм Эдмонса-Карпа (алгоритм Диница)
11.3 Алгоритм поиска потока минимальной стоимости
11.4 Сети Петри
11.5 Алгоритм проверки графа на двудольность
11.6 Алгоритм раскраски двудольного графа
11.7 Алгоритм Хопкрофта-Карпа
11.8 Венгерский алгоритм
11.9 Blossom алгоритм (алгоритм Эдмондса)
11.10 Алгоритм Штор-Вагнера

Геометрия
12.1 Метод Гаусса
12.2 Поиск точек в прямоугольнике
12.3 Алгоритм Бентли-Оттмана
12.4 Алгоритм Грэхема
12.5 Алгоритм Джарвиса
12.6 Алгоритм Чана
12.7 Алгоритм Киркпатрика
12.8 Метод трассировки луча
12.9 Метод суммирования углов
12.10 Диаграмма Вороного и триангуляция Делоне
12.11 Алгоритм Форчуна
12.12 Рекурсивное построение диаграммы Вороного
12.13 SLERP
Структуры
12.13 R, R+, R* дерево
12.14 K-мерное дерево
12.15 BSP, VP дерево
12.16 Дерево покрытий

Персистентные структуры
13.1 Метод копирования пути
13.2 Метод толстых узлов
Структуры
13.3 Персистентный стек
13.4 Персистентная очередь
13.5 Персистентное дерево

Консенсус в сетях
14.1 Алгоритм Paxos
14.2 Задача Византийских генералов
14.3 Кворум
14.4 CAP-теорема
14.5 PACELC-теорема
14.6 Королевский алгоритм
14.7 Алгоритм Zyzzyva
Структуры
14.8 Blockchain

Целочисленное программирование
15.1 Каноническая форма, сложность решения
15.2 Алгоритмы полного перебора
15.3 Алгоритм Нарайаны
15.4 Задача о ранце
15.5 Алгоритм Meet-in-the-Middle
15.6 Задача раскроя
15.7 Метод обратного поиска
15.8 Задача планирования производства
15.9 Задача оптимизации телекоммуникационных сетей
15.10 Метод секущих плоскостей, алгоритм Гомори
15.11 Алгоритм Альфа-Бета отсечений
15.12 Жадные алгоритмы
15.13 Матроиды, алгоритм Радо-Эдмонса

Быстрые вычисления
16.1 Умножение Карацубы
16.2 Алгоритм Шенхаге-Штрассена
16.3 Алгоритмы возведения числа в степень
16.4 Алгоритмы возведения в степень числа по модулю
16.5 Алгоритм Кули-Тьюки
16.6 Алгоритм Штрассена

Факторизация
17.1 Алгоритм Евклида (НОД)
17.2 Алгоритм факторизации Ферма
17.3 Метод квадратичных форм Шенкса
17.4 Ро-алгоритм Полларда
17.5 Метод квадратичного решета
17.6 Общий метод решета числового поля
17.7 Факторизация с помощью эллиптических кривых
17.8 Тест Агравала-Каяла-Саксены
17.9 Алгоритм Берлекэмпа

Дискретное логарифмирование
18.1 Алгоритм Гельфонда-Шенкса
18.2 Алгоритм COS

Обработка очередей
18.1 Семейство алгоритмов Round-robin
18.2 Алгоритм EDF
18.3 Алгоритм SRTF
18.4 Алгоритм Fixed-priority pre-emptive scheduling
18.5 Задача составления расписания (JSP, OSSP)
18.6 CFS планировщик
18.7 BFS планировщик

Кеширование
19.1 T-дерево
19.2 Алгоритм Белади
19.3 FIFO, LIFO кеширование
19.4 LRU, PLRU кеширование
19.5 MRU кеширование
19.6 RR кеширование
19.7 LFU кеширование
19.8 MQ кеширование
19.9 ARC кеширование

Рандомизированные алгоритмы
20.1 Метод Монте-Карло
20.2 Поиск наименьшего набора ребер, разрезающего циклы
20.3 Муравьиный алгоритм
20.4 Алгоритм Каргера
20.5 Изоморфизм графов (алгоритм Blum-Kanan)
20.6 Rapidly exploring random tree
20.7 Тасование Фишера-Йетса
20.8 Алгоритм Karloff–Zwick

Вероятностные тесты на простоту
21.1 Тест Ферма
21.2 Тест Миллера-Рабина
21.1 Тест Бейли-Померанца-Селфриджа-Уогстаффа

Вебграфы
22.1 Модель Болобаша-Альберта
22.2 Модель Болобаша-Риордана
22.3 Модель Бакли-Остгус
22.4 Модель копирования
22.5 PageRank, Google matrix
Структуры
22.1 MapReduce
22.2 Apache GiGraph
22.3 Pregel

Хеширование
23.1 Двойное хеширование
23.2 Фильтр Блума
23.3 Count-min sketch
23.4 Универсальное хеширование
23.5 SWIFFT
23.6 MD5
23.7 SHA-2
23.8 SHA-3 (Keccak)
23.9 Дерево Меркла
23.10 Подпись Меркла
23.11 Хеш-функции, учитывающие близость (LSH)
23.12 Хеширование на основе расстояния Хэмминга
23.13 MinHash
23.14 SimHash
23.15 Поиск ближайшего соседа c помощью LSH

** При этом стоит учесть что запланированы еще курсы по Теории графов, Дискретной математике, Экстремальным задачам, Машинному обучению, Теории сложности и пр.пр.пр. Т.е. это просто фундаментальный курс по алгоритмам и структурам данных, который является точкой отсчета для всего остального (ну как курс по Математическому анализу).

*** Это несколько больше чем я сам знаю, так что это еще и мой план для себя подтянуть неизвестные/забытые темы. Обсудив его с коллегами, на предмет кто будет читать мы пришли к выводу, что мы все были бы рады и сейчас прослушать такой курс.
В том случае было хранение числа (которое использовался как индекс) в текстовом поле б.д. без индекса. Поиск по нему тормозил.
Но при этом человек, который это делал, был весьма неплохим креативщиком, много чего мог сделать (и делал) в вебе, т.е. такой самый грустный случай человека без профильного образования.
Так все и делают. Я это наблюдаю. Студенты уже кладут болт на многие «неинтересные» занятия и смотрят coursera и edx. Собственно, айтишников-студентов российские вузы уже потеряли, они учатся у других людей.
И говорит — «Нужно больше серверов!» (случай из жизни)
Учиться самостоятельно, если умеешь это делать (системный подход!),
это эффективно и хорошо.

Но!
Учитель может научить тебя в 10 раз быстрее, тем самым экономя твое время и позволяя узнать много больше. Проблема в том, что такого учителя найти не просто. Особенно для современных технологиях. А так, чтобы в российском ВУЗе почти все учителя были такие — ну это фантастика! В итоге, обучение в ВУЗе может даже замедлить развитие (суммарно).

Что же касается онлайн обучения… На мой взгляд, для самоучки оно очень полезно, т.к. даст системный взгляд на предмет, очертит то, что он потом должен будет выучить сам. Онлайн обучение даст ускорение примерно раза в 2-3. Без личного контакта большей продуктивности добиться сложно.

PS: есть еще совсем трудные темы, которые в принципе самостоятельно выучить скорее всего не получится, нужен наставник, который в первый раз «подтолкнет, чтобы преодолеть планку».
Суть не в быстрее, а в «параллельно». Нужно слить 100+ страниц для теста по базе урлов, или прогнать моделирование на 100+ входных данных...,
то вместо того, чтобы вручную что-то придумывать, просто запускаем скрипт через parallel.
Зайди в linkedin и через него пиши конкретным людям с которыми ты бы хотел работать, в конкретных компаниях. Ну и сделай какой-нибудь небольшой опенсорсный проект в своей области, чтобы можно было показать, что есть желание, целеустремленность и способность достигать результата (пусть и не очень интересного в глобальном масштабе).
> В моей сфере уже все ужасно, специалистов не хватает, наступит точка невозврата и тогда поймут что натворили. Или нет.

Мне кажется, что она уже давно пройдена: roem.ru/21-09-2017/259434/yandex-putin-17/#comment-259625
Ну в лучшие годы (примерно 2011) топовая зарплата, которую мне предлагали — была около 300.000 руб в месяц, в области «анализ компьютерной безопасности»..., но это скорее был исключительный случай, я отказался. По профилю, или по профилю с уклоном в программирование я довольно быстро могу рассчитывать на 200.000+ в России. Вне России — ну тоже были (и есть) варианты с очень хорошими условиями… Все-таки сейчас век автоматизации всего и вся… Почему не ушел? Ну пока я еще привязан к стране, да и к коллективу — они очень хорошие люди. Кроме того, первый круг математического образования заканчивается к 40 годам… И я пока предпочитаю быть в коллективе где все умнее. Такие коллективы не так просто найти. Пока же мне удается все совмещать и развиваться. Что будет дальше — не знаю. Перед каждым учебным годом я думаю, а стоит ли продолжать?
В целом верно, но как всегда есть нюансы.
Студентам могу посоветовать идти «не в ВУЗ», а «к человеку». Для этого надо поискать по сайтам, посмотреть чем кто занимается, поспрашивать людей. Да, это сложно и неочевидно, но сегодня это необходимо.

Касательно университетов и пр. подумайте, что для них студент?
Для университета студент это просто источник финансирования от государства. Никакой отчетности по качеству образования студентов нет. Университеты сейчас вообще стали оцениваться по научным рейтингам и все. Поэтому ожидать от них, что они будут выстраивать учебный процесс так, чтобы удовлетворить работодателей — странно. Зачем? За это никто им не платит и не требует.

Иногда удается что-то делать. Иногда — нет. Иногда удается разделить форму и содержание, т.е. сделать так, чтобы форма соответствовала требованиям всех бюрократических структур, а содержание тому, что мы действительно хотим сделать. Но так получается не всегда, да и жизнь вносит свои коррективы.

Я вот в последние пару лет пытаюсь сильно скорректировать некоторые курсы на матмехе, на кафедре получается: tcyber.ru + в этом году ставлю курс по Машинному обучению.

На матмехе в целом — гораздо сложнее, но мне удалось прописать программу «Математика и компьютерные науки» так, как в моем понимании она должна быть, в частности, внести теоретический курс «Алгоритмы и структуры данных» на 4 семестра, в 200+ часов, практические курсы по Python (семестр), C (семестр), C++ (3 семестра), годовой курс Машинное обучение и ряд других, в целом сделав отношение «математика к CS» — 2 к 1. Что весьма неплохо. Со следующего года будет набор. Посмотрим, как удастся реализовать. По крайней мере в РПУДы (программы курсов) я содержание забил, и это должно спасти от попыток «переиграть все», если таковые будут…

Мы пробуем, просто нас мало, почти нет. Все уехали, а заплаты за преподавание 30 т.р., поэтому приходится еще и подрабатывать, чтобы заниматься любимым делом…
> Принтер получен с конечной ценой в 2.5 раза выше, чем на сайте.

В России у меня было также, но с 3D сканером. Я даже написал по этому поводу статью на хабр, но ее снесли.
www.linux.org.ru/forum/talks/9355223

Information

Rating
Does not participate
Registered
Activity