Основы С++ (массивы, указатели). Задачи с массивамиOlga Maksimenkova
Расширенная версия презентации со школы учителей 2016. Изменён порядок материала, добавлены сортировки и индексация, слайды Незнанова А.А. и слайды с задачами.
Презентация по АТД (контейнеры, последовательности и списки). Версия для C++, по сравнению с версией для C# добавлены новые рисунки для последовательностей и детализированные задачи.
Слайды использовались на краткосрочных курсах повышения квалификации учителей информатики, 2 лекции по 1 час 20 минут.
Изложен опорный (предельно ужатый) материал по основами C++.
Основы С++ (массивы, указатели). Задачи с массивамиOlga Maksimenkova
Расширенная версия презентации со школы учителей 2016. Изменён порядок материала, добавлены сортировки и индексация, слайды Незнанова А.А. и слайды с задачами.
Презентация по АТД (контейнеры, последовательности и списки). Версия для C++, по сравнению с версией для C# добавлены новые рисунки для последовательностей и детализированные задачи.
Слайды использовались на краткосрочных курсах повышения квалификации учителей информатики, 2 лекции по 1 час 20 минут.
Изложен опорный (предельно ужатый) материал по основами C++.
Версия презентации по основам C++ с летней школы учителей информатики 2016 года.
Презентация расширена слайдами Незнанова А.А., изменён порядок материала, добавлены задачи.
Слайды по представлению графов в памяти компьютера. Примеры кода на языке C++. Акценты расставлены на дообъектных представлениях, которые могут быть использованы школьниками при решении олимпиадных задач по программированию.
Статический анализ: вокруг Java за 60 минутAndrey Karpov
Статический анализ всё больше воспринимается как неотъемлемая часть процесса разработки качественного программного обеспечения. Разумеется, у этой технологии уже есть свои сторонники и противники, но, несмотря на это, тема статического анализа всё более актуальна и требует детального рассмотрения. Рассмотрим, что такое статический анализ, как он применяется и как влияет на качество и надёжность кода. Поговорим о важности раннего обнаружения ошибок и дефектов уязвимости. Рассмотрим существующие инструменты для Java, такие как Sonar Java, FindBugs и анализатор встроенном в среду разработки IntelliJ IDEA. Расскажем историю, почему несмотря на уже существующие инструменты, мы решили разработать PVS-Studio для Java, как мы это делали и что в итоге получилось. В конце затронем вопрос интеграции статических анализаторов кода в большие старые проекты. Другими словами, как увидеть 100500 срабатываний и не упасть духом.
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4 Dima Dzuba
Описываются возможности C++ по работе с наследованием (virtual, override, final). Описываются механизмы работы с константными переменными и методами (const, mutable, constexpr). Описываются возможности по перегрузке операторов (operator).
"Вингардиум Левиоса”. Или основы декларативной магии (Матвеенко Сергей)IT-Доминанта
Матвеенко Сергей - Ведущий разработчик / Positive Technologies / Россия, Санкт-Петербург
Декларативное программирование на Python, метаклассы, YAML и прочие неприятности.
Популярные применения. Подводные камни.
http://www.it-sobytie.ru/events/2040
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
Измерение времени работы кода на Python с помощью модулей timeit, cProfile и line_profiler. Немного о NumPy. JIT и AOT компиляция кода на Python на примере Numba и Cython.
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Platonov Sergey
Предлагаемый подход позволяет без труда получить параллельную асинхронную обработку данных без явного использования средств синхронизации, по максимуму задействуя доступные вычислительные ресурсы. Использование сопрограмм значительно упрощает написание многопоточного кода. Это дает возможность сконцентрироваться непосредственно на задаче обработки данных, не занимаясь вопросами синхронизации различных операций, включая асинхронную работу с сетью.
Синтаксис объявления классов. Атрибуты, связанные и несвязанные методы, __dict__, __slots__. Статические методы и методы класса. Свойства, декоратор @property. Наследование, перегрузка методов и функция super. Декораторы классов. Магические методы.
Современные образовательные технологии в области компьютерных наукOlga Maksimenkova
В презентации собраны слайды по современным образовательных технологиям, относящимся как к дизайну и проектированию обучени, так и к урочным и внеурочным практикам. Особое внимание уделено конструктивистскому подходу, активным и коллаборативным практикам.
Презентация с осенней школы педагогического мастерства по информатике. Школа проводилась дирекцией среднего образовани НИУ ВШЭ.
Версия презентации по основам C++ с летней школы учителей информатики 2016 года.
Презентация расширена слайдами Незнанова А.А., изменён порядок материала, добавлены задачи.
Слайды по представлению графов в памяти компьютера. Примеры кода на языке C++. Акценты расставлены на дообъектных представлениях, которые могут быть использованы школьниками при решении олимпиадных задач по программированию.
Статический анализ: вокруг Java за 60 минутAndrey Karpov
Статический анализ всё больше воспринимается как неотъемлемая часть процесса разработки качественного программного обеспечения. Разумеется, у этой технологии уже есть свои сторонники и противники, но, несмотря на это, тема статического анализа всё более актуальна и требует детального рассмотрения. Рассмотрим, что такое статический анализ, как он применяется и как влияет на качество и надёжность кода. Поговорим о важности раннего обнаружения ошибок и дефектов уязвимости. Рассмотрим существующие инструменты для Java, такие как Sonar Java, FindBugs и анализатор встроенном в среду разработки IntelliJ IDEA. Расскажем историю, почему несмотря на уже существующие инструменты, мы решили разработать PVS-Studio для Java, как мы это делали и что в итоге получилось. В конце затронем вопрос интеграции статических анализаторов кода в большие старые проекты. Другими словами, как увидеть 100500 срабатываний и не упасть духом.
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4 Dima Dzuba
Описываются возможности C++ по работе с наследованием (virtual, override, final). Описываются механизмы работы с константными переменными и методами (const, mutable, constexpr). Описываются возможности по перегрузке операторов (operator).
"Вингардиум Левиоса”. Или основы декларативной магии (Матвеенко Сергей)IT-Доминанта
Матвеенко Сергей - Ведущий разработчик / Positive Technologies / Россия, Санкт-Петербург
Декларативное программирование на Python, метаклассы, YAML и прочие неприятности.
Популярные применения. Подводные камни.
http://www.it-sobytie.ru/events/2040
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
Измерение времени работы кода на Python с помощью модулей timeit, cProfile и line_profiler. Немного о NumPy. JIT и AOT компиляция кода на Python на примере Numba и Cython.
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Platonov Sergey
Предлагаемый подход позволяет без труда получить параллельную асинхронную обработку данных без явного использования средств синхронизации, по максимуму задействуя доступные вычислительные ресурсы. Использование сопрограмм значительно упрощает написание многопоточного кода. Это дает возможность сконцентрироваться непосредственно на задаче обработки данных, не занимаясь вопросами синхронизации различных операций, включая асинхронную работу с сетью.
Синтаксис объявления классов. Атрибуты, связанные и несвязанные методы, __dict__, __slots__. Статические методы и методы класса. Свойства, декоратор @property. Наследование, перегрузка методов и функция super. Декораторы классов. Магические методы.
Современные образовательные технологии в области компьютерных наукOlga Maksimenkova
В презентации собраны слайды по современным образовательных технологиям, относящимся как к дизайну и проектированию обучени, так и к урочным и внеурочным практикам. Особое внимание уделено конструктивистскому подходу, активным и коллаборативным практикам.
Презентация с осенней школы педагогического мастерства по информатике. Школа проводилась дирекцией среднего образовани НИУ ВШЭ.
Математические основы методов решений систем логических уравненийOlga Maksimenkova
Презентация с вебинара, организованного в рамках проекта "Предуниверсарий" НИУ ВШЭ. Рассмотрены основы алгебры логики (ДНФ, КНФ, СДНФ, СКНФ), рекуррентные функции, начала теории матриц, базовые понятия теории графов.
Слайды лекции факультатива "Введение в программирование". Немного об абстрактных типах данных. Стек, дек, очередь. Односвязный, двусвязный и закольцованный списки. Реализации на С#.
[Maksimenkova_Neznanov] Peer Assessment to Programmers & Peer Assessment Syst...Olga Maksimenkova
Презентация доклада конференции АПКИТ-2016. Взаимное оценивание в курсах для разработчиков программного обеспечения. Описание и презентация системы поддержки взаимного оценивания PASCA
Решение систем логических уравнений, ЕГЭ 23 информатикаOlga Maksimenkova
Презентация второго вебинара по решению систем логических уравнений. Универсальный метод решения систем однородных логических уравнений, предложенный в пособии Авдошин С. М., Ахметсафина Р. З., Максименкова О. В. Информатика: Логика и алгоритмы. Эффективные методы решения задач: Пособие для самостоятельной подготовки. М., СПб. : Просвещение, 2013.
Очистка данных на практике: мифы и легенты Excel и ROlga Maksimenkova
Презентация с мастер-класса хакатона "Культура в современном медиапространстве", 4-5 февраля 2017 года.
Презентация посвящена процессам очистки данных и акцентируется на двух инструментах R и Excel.
Презентация для курса лекций по программированию на языке C Sharp (СИ решетка). Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
The SlideShare 101 is a quick start guide if you want to walk through the main features that the platform offers. This will keep getting updated as new features are launched.
The SlideShare 101 replaces the earlier "SlideShare Quick Tour".
Всё о статическом анализе кода для Java программистаAndrey Karpov
Этот доклад для тех, кто не знаком со статическими анализаторами кода, или знаком, но ещё не внедрил эти инструменты в процесс разработки. Будет описана методология статического анализа и как она используется для выявления ошибок и запахов кода. Будут кратко рассмотрены некоторые популярные инструменты статического анализа для языка Java, а также платформа SonarQube способная объединить и визуализировать отчёты различных анализаторов. Немного заглянем внутрь и поговорим о технологиях, используемых в современных статических анализаторах кода и позволяющих находить разнообразнейшие паттерны ошибок. Затронем вопрос, почему несмотря на уже существующие инструменты наша команда решила сделать ещё один: PVS-Studio for Java :). В конце рассмотрим важный вопрос интеграции инструментов статического анализа в большие старые проекты и почему так важно регулярное использование подобных инструментов.
Многим читателя понравилась моя статья "Последствия использования технологии Copy-Paste при программировании на Си++ и как с этим быть" [1]. Обратил на неё внимание и Scott Meyers [2] и задал вопрос о том, как же собственно статический анализ помог выявить описанные в статье ошибки.
Информатика в школе: методы и технологии активного обученияOlga Maksimenkova
Презентация выступления с форума "Стань выше с вышкой", видео по ссылке: https://youtu.be/JrY2zUqDa-Q?t=740. На мастер-классе мы обсудим вопросы внедрения активных методик обучения в процесс преподавания информатики в школе. Поговорим о том, что такое активное обучение, об его идеологии, методах и примерах успешного применения. Обсудим прогрессивный подход интерактивного коллаборативного обучения (Computer-Supported Collaborative Learning). Участники познакомятся не только с педагогическими, но и с технологическими аспектами активных образовательных практик. Мы на примерах разберем особенности внедрения в учебный процесс следующих методик: формирующего оценивания (в общем виде), взаимного оценивания, игровых и командных практик. Кроме того, мы посмотрим, как разграничивать зоны ответственности при использовании специализированных программных средств в обучении, обсудим примеры и особенности их внедрения в учебный процесс.
Презентация с лекции для магистрантов Института Образования НИУ ВШЭ по вопросам цифровой трансформации образования. Рассмотрены вопросы, связанные с четвёртой промышленной революцией и ее следствиями и основными движущими силами.
Providing Cognitive Scaffolding within Computer-Supported Adaptive Learning E...Olga Maksimenkova
Presenation at ICL-2018 by Fedor Dudyrev, Olga Maksimenkova, and Alexey Neznanov. The paper deals with adaptive learning system which provides cognitive scaffolding in Vygotsky meaning and based on FCA and descriptive logic foundation.
Collaborative Learning in Data Science Education: a Data Expedition as a Form...Olga Maksimenkova
Presentation by Maksimenkova Olga, Neznanov Alexey, Radchenko Irina, which presents a paper about a data expedition as a formative assessment tool to data-driven courses, ICL-2018.
Презентация с семинара ИТМО "Формализация знаний и искусственный интеллект в образовании" (http://iam.ifmo.ru/ru/viewnews/17227/formalizaciya_znaniy_i_iskusstvennyy_intellekt_v_obrazovanii.htm). Доклад "Информационные системы поддержки активного обучения: облачные технологии, управление знаниями и коллаборативные платформы".
Lec 03. The fates of the Games. Game engines, developmentOlga Maksimenkova
Case studies: Warcraft adventures, Heroes of Might and Magic IV, Master of Orion 2016. Game as a software project. Game engines (brief overview). Game difficulty and balance.
Презентация с конференции "Преподавание ИТ в РФ 2017", обобщены методики активного обучения и формирующего оценивания для курсов программирования, наук о данных и др. Описана технологическая база поддержки курсов.
Презентация с конференции "Новое в образовании и науке". Доклад посвящён развёртыванию открытого образовательного ресурса на портале университета или подразделения университета и связанным с этим вопросам.
1. Высшая школа экономики, Москва, 2013
www.hse.ru
Язык программирования C# и платформа
.NET.
Массивы
Многомерные массивы
Максименкова Ольга Вениаминовна
Старший преподаватель
Кафедра управления разработкой программного обеспечения
3. Ссылочный тип данных
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
имя_переменной значение_адреса_данных значение_данных
Объекты ссылочных типов размещаются в «куче»
[manager heap]
Если ссылка не связана с данными, то ее значение - null
4. Одномерные массивы
имя_ссылки_на_массив[индексирующее_выражение]
тип[ ] имя_ссылки
Операция индексирования
Объявление ссылки на массив
Объявление
ссылки на
массив
Инициализация
элементов
массива
Работа с
элементами
массива
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
Создание
экземпляра
массива
Создание экземпляра объекта конкретного типа
new тип[размер_массива]
Допустимо
объединение
5. Одномерные массивы
Объявление ссылки
Описание с инициализацией
Описание и последующая инициализация
int[ ] intArr; // ссылка на целочисленный массив
double[ ] arr; // ссылка на вещественный массив
int[ ] intArr = { 1, 3, -8, 19, 0, 11 };
double[ ] arr = { 3.14, 0.0, 0.5 };
// ссылка
int[ ] intArr;
// выделение памяти
intArr = new int[5];
intArr[0] = -1;
intArr[1] = 12;
intArr[2] = 34;
intArr[3] = -23;
intArr[4] = 78;
int[ ] intArr; // ссылка
intArr = new int[5]; // выделение памяти
for (int i = 0; i < 5; i++) {
intArr[i] = i * i - 1;
Console.Write(intArr[i] + " ");
}
ФПК учителей НИУ ВШЭ 06.2013, Максименкова О.В.
6. Цикл foreach
foreach (тип идентификатор in ссылка)
{
<тело_цикла>
}
int[ ] arInt = { 22, 5, 12, 63, -6, -52, 77, 41, 35, 23 };
foreach (int memb in arInt)
Console.Write(memb + " ");
for (int i = 0; i < arInt.Length; i++)
Console.Write(arInt[i] + " ");
Сравните:
По memb доступно
только значение
элемента
arInt[i] – доступ к значению
i – индекс элемента
7. Случайные числа
7
Предыдущее число
Датчик
Новое случайное
число
Random ran = new Random(start);
Random ran = new Random();
Ссылка на
объект-
датчик
Объект-
датчик
случайных
чисел
В 1-м случае, когда в ran заносится стартовое число start. Если его не
изменять, то при повторных запусках программы датчик всегда будет
выдавать одну и туже последовательность случайных чисел.
Во 2-м случае в датчик ran заносится число, зависящее от текущего значения
системного времени - при повторных запусках программы датчик будет
выдавать разные последовательности случайных чисел.
http://msdn.microsoft.com/ru-ru/library/system.random(v=VS.95)
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
8. Методы получения случайного числа
int Next () 0≤X<int.MaxValue
int Next (int B) 0≤X<B
int Next(int A, int B) A≤X<B
double NextDouble () 0≤X<1
Получение случайного вещественного числа X из
нужного диапазона A≤X<B:
X = A + (B-A) * ran.NextDouble()
или
X = ran.Next((int)A, (int)B) + ran.NextDouble()
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
9. /* Определить и инициализировать целочисленный массив из 10-ти
элементов. Ввести целое число и заменить им значение
максимального элемента. Окончание работы - ввод нулевого
числа.*/
using System;
class Program {
static void Main() {
int[ ] arInt = { 22, 5, 12, 63, -6, -52, 77, 41, 35, 23 };
int numb;
Console.Title = "Инициализация массива";
do { // цикл для повторения ввода числа
Console.WriteLine();
Console.WriteLine("Для выхода нажмите клавишу ESC");
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
}
}
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Замена максимального элемента
10. do Console.Write("Введите целое число: ");
while (!int.TryParse(Console.ReadLine(), out numb));
int index = 0; // индекс максимального элемента массива
for (int i = 0; i < arInt.Length; i++) // поиск
if (arInt[i] > arInt[index]) index = i;
Console.WriteLine("Заменяем arInt[{0}]={1} на {2} ",
index, arInt[index], numb);
arInt[index] = numb; // замена значения
for (int i = 0; i < arInt.Length; i++)
if ((i + 1) % 10 != 0)
Console.Write(arInt[i] + "t");
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Замена максимального элемента
11. Описание одномерного массива
double[ ] dbArr; // описание ссылки на массив
dbArr = new double[10]; // определение массива из 10-ти элементов
int[ ] intArr = new int[15];
// элементы массива могут иметь ссылочный тип
string[ ] strArr = new string[3];
Решите самостоятельно:
1. Пользователем с клавиатуры вводится целое число N > 0.
Сформировать и вывести на экран целочисленный массив из N
элементов, элементами которого являются нечетные числа от 1.
2. Пользователем с клавиатуры вводится целое число N > 1.
Сформировать целочисленный массив, содержащий N первых
элементов последовательности Фибоначчи: A[0] = 1, A[1] = 1, A[2] = A[0]
+ A[1], … A[K] = A[K-1] + A[K-2], … Элементы массива вывести на экран
в обратном порядке, методы класса Array не использовать.
// описание с инициализацией
int[ ] intArr = {1, 0, 1};
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
13. /* Определить и инициализировать целочисленный массив из 10-ти
элементов. Упорядочить его элементы по возрастанию значений, методом
Sort(). Ввести целое число и методом двоичного поиска найти номер
элемента с этим значением в упорядоченном массиве.*/
using System;
class Program {
static void Main() {
int[ ] arInt = { 22, 5, 12, 63, -6, -52, 77, 41, 35, 23 };
int numb;
Console.Title = "Двоичный поиск в массиве";
Array.Sort(arInt); // Сортировка (упорядочение массива)
Console.WriteLine("Упорядоченный массив: ");
foreach (int memb in arInt) // Перебор значений элементов
Console.Write(memb + " ");
Console.WriteLine();
do {// цикл для повторения ввода числа
Console.WriteLine("Для выхода нажмите клавишу ESC");
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
}
}
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Бинарный поиск
14. do Console.Write("Введите целое число: ");
while (!int.TryParse(Console.ReadLine(), out numb));
int index = -1; // индекс найденного элемента массива
// Алгоритм двоичного поиска в упорядоченном массиве:
for (int i = 0, j = arInt.Length - 1, k = j / 2; i <= j; k = (i + j) / 2) // поиск
if (arInt[k] == numb) { index = k; break; }
else
if (numb > arInt[k]) i = k + 1;
else j = k - 1;
if (index == -1)
Console.WriteLine("В массиве нет такого элемента!");
else
Console.WriteLine("Результат поиска: arInt[{0}]={1}",
index, arInt[index]);
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Бинарный поиск
15. /* Определить и инициализировать целочисленный массив из 10-ти
элементов. Упорядочить его элементы по возрастанию значений,
методом Sort(). Ввести целое число и с помощью метода BinarySearch()
найти номер
элемента с этим значением в упорядоченном массиве. */
using System;
class Program {
static void Main() {
int[] arInt = { 22, 5, 12, 63, -6, -52, 77, 41, 35, 23 };
int numb;
Console.Title = "Сортировка и поиск методами класса Array";
Array.Sort(arInt); // Сортировка
Console.WriteLine("Упорядоченный массив: ");
foreach (int memb in arInt)
Console.Write(memb + " ");
Console.WriteLine();
do { // цикл для повторения ввода числа
Console.WriteLine("Для выхода нажмите клавишу ESC");
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
}
} ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Бинарный поиск(2)
16. do Console.Write("Введите целое число: ");
while (!int.TryParse(Console.ReadLine(), out numb));
// индекс искомого элемента массива:
int index = Array.BinarySearch(arInt, numb);
if (index < 0)
Console.WriteLine("В массиве нет такого элемента!");
else
Console.WriteLine("Результат поиска: arInt[{0}]={1}",
index, arInt[index]);
ФПК учителей НИУ ВШЭ 03.2013, Максименкова О.В.
Бинарный поиск(2)
17. 101000, Россия, Москва, Мясницкая ул., д. 20
Тел.: (495) 621-7983, факс: (495) 628-7931
www.hse.ru