Анализ алгоритмов. Временная сложность. Использование памяти. Cтеки и очереди. Бинарный поиск. Связанные списки.
Java для продвинутых: наследование, generics, интерфейсы, итераторы. Элементарная сортировка: выбором, вставкой, двоичный поиск, компараторы. Сортировка слиянием. Быстрая сортировка.
Проект - Реализация двухсторонней и вероятностной очередей с помощью массивов и связанных списков.
Приоритетная очередь. Двоичная куча. Сортировка кучей. Хэш-таблица. Рекурсия. Backtracking.
Динамическое программирование: кратчайший путь в ориентированном графе. Жадные алгоритмы. Алгоритмы потока.
Проект - Content-aware cжатие фотографий, сохраняющее самые интересные объекты на фото.
Недельные каникулы, чтобы перевести дух и нагнать не до конца понятый материал.
Двоичное дерево поиска. Сбалансированные деревья поиска.
Графы. Представление. DFS - поиск в глубину. Поиск пути. Неориентированные и ориентированные графы. BFS - поиск в ширину. Топологическая сортировка.
Проект - Решение головоломки “Пятнашки / Игра в 15” с помощью A*-поиска.
Кратчайший путь в графе. Алгоритм Беллмана-Форда. Алгоритм Дейкстры.
Топологическая сортировка. Минимальное остовное дерево.
Основатель, nFactorial School. В прошлом: со-основатель и CTO, Hora.AI (Индия, инвестор - глава поиска в Google), со-основатель и CEO, Zero To One Labs (ведущая студия мобильной разработки, 30 разработчиков, 40+ продуктов в портфолио). Выпускник Принстонского Университета по специальности «Компьютерные науки». Финалист ACM ICPC World Finals (студенческого чемпионата мира по программированию) в 2009г (Стокгольм, Швеция) и 2011г (Орландо, Флорида). Арман преподавал семинары курса «Введение в компьютерные науки» в Принстонском университете в течение 4 семестров в 2010-2012 гг.
Лектор, nFactorial School. Разработчик, Palantir (Лондон, Великобритания). Бронзовый призер престижной международной олимпиады по информатике IOI (2016). Специальность «Компьютерные науки» в KAIST (Корейский ведущий научно-технический университет). В прошлом: разработчик в OptDyn (Бишкек, Кыргызстан), Skelter Labs (Сеул, Корея) и Yelp (Лондон, Великобритания). Тренер по спортивному программированию в American University of Central Asia.
Ментор, nFactorial School. Разработчик, Rita (Бельгия).
В прошлом: разработчик, Humanise.AI (Великобритания); участник nFactorial Incubator 2017. Образование: Nazarbayev University (2022).
Программный менеджер, nFactorial School. Член независимой экспертной комиссии по отбору претендентов для присуждения международной стипендии «Болашак» по естественным наукам. В прошлом: старший консультант, EY (Ernst & Young); старший специалист, АО НК «КазМунайГаз». Образование: Queen Mary University of London (2014), Imperial College London (2017).
Данный курс разработан для тех, у кого есть опыт и базовые знания в программировании. Мы принимаем работающих программистов, студентов и выпускников ИТ университетов, а также тех, кто ранее обучался компьютерным наукам и программированию самостоятельно.
15-20 часов в неделю. За одну неделю: 3 видео-лекции в режиме реального времени, 2 живых семинара, выполнение еженедельного проекта.
Абсолютно! Это единственный способ обучения в нашей программе. Наша программа была разработана для участников, которые работают или учатся полный рабочий день. Вам будет представлен доступ на видео-лекции, которые вы сможете смотреть в любое удобное для вас время! Интерактивные лекции и семинары будут проводиться в вечернее время.
Да. Это может быть ПК или Mac. Требования к компьютеру - минимальные. Главное - это версия операционной системы. Если у Вас ПК, то необходима 64-битная версия Windows 8 или 10. Если у Вас Mac, то - версии от Mac OS X 10.13 (High Sierra) до Mac OS X 10.15 (Catalina). Если у Вас Linux, то нужна 64-битная версия Linux.
В течение 8 недель студентов будут сопровождать 1-2 ментора и 1 координатор программы.
Строгих ограничений нет, но мы предпочитаем студентов старше 15 лет. Мы готовы делать исключения.
Как опытные менторы и разработчики, мы знаем большинство современных языков, таких как Python, Ruby, JavaScript или Go. Мы выбрали Java, потому что он не такой низкоуровневый, как C (с ненужной сложностью для новичков), но также и не слишком высокоуровневый, как Python (который скрывает много чего 'за кулисами'). Java широко используется, доступна, охватывает полный набор современных абстракций, непрерывно развивается с начала 90-х годов и имеет множество автоматических проверок на наличие ошибок в коде. Это также отличный язык для обучения объектно-ориентированному программированию, который будет полезен в мобильной и полнофункциональной веб-разработке. Как заметил создатель C++ Бьярне Страуструп: «Есть только два типа языков программирования: те, на которые все жалуются, и те, которыми никто не пользуется».