Программирование

Материал из FFWiki.
Перейти к: навигация, поиск
Предмет Программирование и информатика Семестр 1 Тип семинар, лекция, лабораторная работа Отчётность зачёт с оценкой Кафедра Кафедра общей физики и волновых процессов, Кафедра компьютерных методов в физике

Предмет Программирование и информатика Семестр 2 Тип семинар, лабораторная работа Отчётность зачёт с оценкой Кафедра Кафедра общей физики и волновых процессов, Кафедра компьютерных методов в физике

Предмет Дисциплины компьютерной физики по выбору Семестр 3 Тип лабораторная работа Отчётность зачёт Кафедра Кафедра общей физики и волновых процессов, Кафедра компьютерных методов в физике

Предмет Дисциплины компьютерной физики по выбору Семестр 4 Тип лабораторная работа Отчётность зачёт с оценкой Кафедра Кафедра общей физики и волновых процессов Кафедра компьютерных методов в физике

О предмете

Этот предмет может по-разному называться в вашей зачетке, но суть все равно одна и та же. Те же строки кода, та же возня с ошибками, все то же "ваша программа работает не со всеми значениями" и уход домой с зачетом лишь по физкультуре.

У каждого преподавателя своя собственная система аттестации, как правило, не меняющаяся из года в год. Тут есть некоторые материалы, которые, быть может, помогут вам сдать зачет. Статья разделена на преподавателей и курсы у каждого из них.

В 3 семестре вам придется выбрать один из видов компьютерной физики. Тех, кто этого не сделает, просто определят в общую группу. Что вам достанется - будет зависеть от преподавателя: Qt, WinAPI, Python, Matlab или Wolfram Mathematica. Тут же, в 3-4 семестре, вы пишете небольшую курсовую работу. Как правило, ничего сложного в ней нет. Большинство студентов решают систему обыкновенных дифференциальных уравнений методом Рунге-Кутты 4-го порядка.

Подход к обучению

Основной проблемой для многих ребят является отсутствие программирования/информатики в школе. А на семинарах задачи сразу будут непростые, например, у Панова вторая из 14 обязательных задач - разложение экспоненты в ряд Тейлора, причем задачи отсортированы по возрастанию сложности, а тут еще и практикум, мат. анализ, английский. Поэтому хочется порекомендовать онлайн-уроки, после которых в свое время сам стал программировать легко и с удовольствием. Даже если во время семестра не удастся уделить время, займитесь ими на каникулах:

  1. Язык Си
  2. C++ (1)
  3. C++ (2)

Продвинутое обучение и полезные материалы
Основная проблема курса по С++ на физфаке - много теории по синтаксису и мало решения прикладных задач. Для применения С++ есть уроки с интересными задачами по примитивному моделированию физики, основам алгоритмов, компьютерной графике с использованием OpenGL.
На втором курсе многие полюбят систему Wolfram Mathematica и будут использовать ее для научных и учебных целей. Здесь Вы можете найти много уроков и примеров, а также официальное сообщество в России.
Хочется также порекомендовать сайт c большим количеством открытых курсов по программированию от Академии Яндекса, Mail.ru Group, Computer Sciense Centr'a и других организаций.

Бесплатные образовательные программы по анализу данных в МГУ:

  1. Техносфера (ВМК, 2 года обучения, конкурсный отбор)
  2. ЦМФ (МехМат, 1 год обучения, всероссы и студенты со средним баллов >4.75 зачисляются без экзаменов)


Дополнительные занятия программированием на физфаке:

  1. Спецкурсы комп. методов открыты для посещения всех желающих.
  2. Факультатив по искусственным нейронным сетям и генетическим алгоритмам лаборатории адаптивных методов обработки данных НИИЯФ МГУ.
  3. Факультатив по системам компьютерной математики кафмата.
  4. Факультатив "Рациональное введение в программирование"(язык Оберон)

Материалы

Панов Николай Андреевич
Шленов Святослав Александрович
Янышев Денис Николаевич

Литература к курсу

Дисциплины компьютерной физики по выбору на 2 курсе

Ко второму курсу нужно выбрать одну из дисциплин по программированию, по которой вы будете писать курсовую работу.

Компьютерная физика

Вам предстоит разрешить физическую задачу: решить систему дифференциальных уравнений, найти особые точки и определить их тип, построить фазовый портрет и понять поведение системы. Проанализировать как количественно, так и качественно. Это может быть модель биологической популяции или сложное движение маятника. Используются программирование на каком-нибудь языке, а также собственные руки и голова для анализа математики. Дисциплина поможет разобраться в дифференциальных уравнениях, которые будут в 4 семестре.
Альтернативное мнение.
Дисциплина очень неразумная и непонятно зачем нужная. Вас просто немного поучат разработке на С/С++, в реальных исследованиях это применяться не будет. Большинство студентов получают простые задачи, в которых надо решить систему диффуров стандартным алгоритмом. Преподаватель, чтобы как-то занять студента, запрещает использовать математические пакеты вроде Matlab, Wolfram, работать в которых научили в предыдущем семестре. При этом времени все равно остается много. Из-за этого заставляют учить Qt/OpenGL/WinAPI и добавлять примитивную графику в вашу программу. В итоге вы семестр пишите то, что в реальной жизни будете решать несколько часов/дней в мат. пакетах. (хотя со знанием OpenGL писал такую курсовую на С/С++ за выходные)

Параллельное программирование для решения ресурсоёмких задач физики

О курсе на сайте Лаборатории Инженерной Физики. В курсе рассматриваются основы технологий параллельного программирования OpenMP и MPI. Для сдачи задач студентам будет дан доступ к серверу физфака, а после - к суперкомпьютеру "Ломоносов". После каждого занятия выполняются задания на сайте distant.msu.ru. В течении третьего семестра нужно выполнить две итоговых работы, без которых проставление зачета невозможно. Большое количество студентов получает зачет уже после нового года. Во втором семестре делается упор на выполнение курсовой, в которой нужно применить один из методов параллельного программирования. Курсовую лучше совместить с курсовой по физике, в противном случае преподавателями будет выдана одна из стандартных задач. Также в начале четвертого семестра проводятся обзорные занятия, посвященные нюансам MPI, ТЕХу и технологии CUDA.

Массивно параллельные вычисления на графических процессорах с использованием технологии CUDA

Курс читает преподаватель кафедры квантовой статистики и теории поля Перепёлкин Е.Е. Программа курса (если удалена - ищи на сайте фонда Базис в разделе спец курсов).

Стенограмма разговора с преподавателем
Насколько курс сложен? На самом деле он прост. Для того, чтобы начать его изучать вам достаточно знать обычный С на уровне циклов, ветвлений, массивов, выделения памяти. Этого достаточно, чтобы начать изучать этот курс. Если Вы знаете С++ - ещё лучше, но достаточно просто С.
Требуются ли дополнительные математические знания Нет, только если Вы будете делать какую-нибудь математическую задачу, а программирование - это просто язык, на котором Вы объясняете компьютеру, что Вы от него хотите.
Сколько времени, кроме занятий, отнимает в неделю курс? Не знаю, как Вам ответить. У нас учёба рассчитана на два семестра. В первом преимущественно я буду читать теорию, и Вы будете пытаться делать какие-то задачи, которые я буду показывать. А второй семестр больше рассчитан на какие-то самостоятельные работы, курсовую. Хотите, я Вам её дам, хотите - на кафедре, куда Вы хотите идти, возьмёте, и мы подумаем, как её можно реализовать в параллельном виде на графическом процессоре.
То есть нет засиживаний на факультете и напряжённой домашней работы? Нет, Вы что, это же просто программирование, просто язык общения человека с компьютером. Я же добрый человек, если Вы только хотите там сидеть - сидите до 10 вечера, это Ваше дело.
Что Вы будете спрашивать на собеседовании? На самом деле, всё, что мне нужно знать - что Вы хоть немножко знаете С, основ достаточно, указатели знаете, циклы знаете, ветвления знаете. Ну хорошо бы, если бы Вы знали что-нибудь ещё из численных методов и математического анализа, например, что такое производная функции, сеточная функция, интеграл, элементы численных методов, как метод Ньютона, знаете, как матрицы перемножаются - ну замечательно. А так супер требований по программированию нет, только чтобы начать что-то делать, а дальше уже на Ваше усмотрение. Есть такая особенность - иногда записываются много людей, но после первого семестра многие уходят. Вызвано это тем, что первый семестр в некотором смысле простой, потому что там я что-то рассказываю, а вторая часть связана с тем, что Вам нужно делать какую-то задачу, и здесь Вам потребуются знания ну как и физики, так и математики, с одной стороны, а с другой стороны умение её запрограммировать под эту архитектуру. Естественно я буду помогать, консультировать и так далее, но это потребует от Вас каких-то усилий, движений. И многие думают, что это как-то на халяву, им всё проставят, но это не так. Нужно будет сделать программу какую-то, чтобы она работала, чтобы она ускоряла процесс и т.д. То есть первый семестр - подготовительный, а во втором нагрузка на Вас.

Вводные видеолекции от преподавателя

Программирование микроконтроллеров

Курс сложный. В день занятий большинство покидают факультет в 22:00. В зависимости от уровня подготовки по языку Си(например, побитовые операции) может уходить немало времени на выходных. Для хорошего проекта во 2ом семестре обучения потребуется появляться в лаборатории в дополнительные дни и много работать дома.

Основы Linux

Линукс - один из самых простых предметов, посещаемость и задачки не учитываются, как по мне - точно легче чем компьютерная физика, на которой у одногруппников были проблемы (инфа на третий семестр)

Использование среды графического программирования LabView для создания систем сбора данных

Похожий курс читают для студентов 3-го курса волны.

Wolfram Mathematica

Похожий курс читают для студентов 3-го курса волны.

SolidWorks

Похожий курс читают для студентов 3-го курса волны.

Проектирование на ПЛИС

Диагностика электронных схем

Основы Web-технологий

Ссылки