Skip to content

📜 Guide for 2nd year ITMO VT students / Гайд для студентов 2 курса ИТМО ВТ

License

Notifications You must be signed in to change notification settings

Imtjl/2nd-year-guide

Repository files navigation

Гайд по II курсу 🐥

Описание

Вашему вниманию представляется продолжение гайда по I курсу

Оглавление

Сокращения

  • Веб - Веб-программирование
  • Теорвер - Теория вероятностей
  • Матан - Высшая математика
  • ЯП(ы) - Языки программирования
  • Алгосы - Алгоритмы и структуры данных
  • АК - Архитектура компьютера
  • Вычмат - Вычислительная математика
  • Матстат - Математическая статистика
  • ОПИ - Основы программной инженерии
    • (легаси) МИСПИ - Методы и средства программной инженерии
  • ТПВ - Техники публичных выступлений
  • ИЭК - Инновационная экономика и технологическое предпринимательство
  • Метопы - Методы оптимизации
  • БМС / Модельки - Бизнес-модели основных секторов инновационной экономики

Гелиос на стероидах

  • Установка и сборка fish, oh-my-fish, neovim
  • TODO: Настройка красивых промптов в cli Postgres
  • TODO: Адекватная работа в cli Postgres

А почему бы не добавить герлянды и свистоперделки на и без того скучный гелиос? Прикольно же :)

image_2024-08-11_03-11-45
image
image

Шаг 0: Настройка оболочки

0.1 Добавление файла .bash_profile (если ещё нету)

touch .bash_profile

он будет запускаться при каждом вашем заходе на гелиос

0.2 Настройка файла .bash_profile

  • используйте редактор vim:
vim .bash_profile
  • скопируйте данную конфигурацию и вставьте в .bash_profile:
if [ -f "$HOME/.local/bin/fish" ]; then
	exec $HOME/.local/bin/fish
fi

export _JAVA_OPTIONS="-Xmx512M -XX:MaxMetaspaceSize=3200m"
export JAVA_VERSION="17.0+"
export JAVA_HOME="/usr/local/openjdk17"
export PATH="$HOME/.local/bin:$PATH"
export PATH="$HOME/neovim/build/bin:$PATH"

Шаг 1: Установка Fish Shell

1.1 Скачивание исходного кода Fish

curl -LO https://github.com/fish-shell/fish-shell/releases/download/3.6.1/fish-3.6.1.tar.xz

1.2 Извлечение архива

tar -xf fish-3.6.1.tar.xz cd fish-3.6.1

1.3 Сборка и установка Fish

cmake -S . -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=$HOME/.local ninja -C build ninja -C build install

1.4 Добавление Fish в PATH

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bash_profile source
~/.bash_profile

Шаг 2: Установка Oh My Fish

2.1 Установка Oh My Fish

curl -L https://get.oh-my.fish | fish

2.2 Установка Fish как оболочки по умолчанию

echo "exec fish" >> ~/.bash_profile source ~/.bash_profile

2.3 Установка темы Oh My Fish (по желанию)

omf install lambda
omf theme lambda

2.4 Удаление приветствия fish (по желанию)

вводить прямо так как написано

vim .config/fish/fish_variables
:25
o
SETUVAR fish_greeting:""
esc
:wqa

Шаг 3: Установка Neovim

3.1 Скачивание исходного кода Neovim

curl -LO https://github.com/neovim/neovim/archive/refs/tags/stable.tar.gz
tar xzf stable.tar.gz
cd neovim-stable

3.2 Сборка и установка Neovim

cd neovim
gmake clean
cmake -S . -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/.local -DMAN_INSTALL_DIR=$HOME/.local/share/man
gmake install

3.3 Клонирование своей конфигурации Neovim

  • Например моя конфигурация, но приготовьтесь умереть:
git clone https://github.com/worthant/nvim.git ~/.config/nvim

TODO: создать урезанную сборку неовима для гелиоса

P.S.: Теперь наслаждаетесь тем, что не запустится половина плагинов. Зависит сильно от вашего конфига, но советую как миниум раза 4 зайти и выйти в неовим, чтобы, к примеру, lazy.nvim и mason проперделись и зарезолвили большую часть проблем.

Cli Postgres

  • edit .psqlrc file
\set VERBOSITY terse
\set QUIET 1
\timing

\pset linestyle unicode
\pset border 2
\setenv CLICOLOR 1
\setenv LESS "-R"

\set PROMPT1 '%M:%[%033[1;31m%]%>%[%033[0m%] %n@%/%R%#%x '
\set PROMPT2 '%M %n@%/%R %# '

Веб-программирование

Курс веба представляет собой сдачу 4-х лабораторных связанных с разработкой как фронтеда (пользовательского интерфейса), используя базовую связку HTML + CSS + JS и фреймворки react, vue, angular, так и бэкенда (серверной части, обработка запросов от пользователя) используя PHP, Java EE / Spring, JSP.

Important

Не забывайте согласовывать требования с вашим практиком. Если в выполненной лабораторной что-то отличается от того, что говорит ВАШ практик - это нормально. Адаптируйтесь, на работе очень пригодится.

Теперь рассмотрим каждую лабораторную отдельно, кратко опишем основные моменты, чтобы было понятно что вас ждёт и на что стоит обратить внимание:

Лабораторная 1 (веб)

(HTML + CSS + JS) + (PHP)

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

-> Подробное описание с выполненным вариантом
-> Гайд на деплой, теор.вопросы se.ifmo
-> Гайд на поднятие httpd сервера на helios

Имхо: ничего зазорного в чтении гайда для educational purposes нету. Но лучше не опирайтесь на то, что в нём написано - перепроверяйте информацию и сами всё ресёрчите. Условный MDN docs более авторитетен :D

TODO: добавить showcase - гифку

  • Кратко то, что нужно сделать: Рисуем график, табличку, а в заголовке сайта пишем своё ФИО, по нажатию отправляем запрос на PHP веб-сервер с координатами тыка, а сервер проверяет попадание и возвращает ответ. По сути в лабе требуется полный SSR, т.е. веб-сервер должен вернуть табличку, или строчку в таблице. Как практика норм, но это оверхед на ровном месте, поэтому если практик позволит, можете просто вернуть с сервера json {координаты + true/false}, а потом на клиентской части с помощью javascript это удобно отрисовать. Это спойлер, потому что в последующих лабах так и будете делать.

Лабораторная 2 (веб)

(HTML + CSS + JS) + (Servlets + JSP)

-> Защищённая на фулл лаба (RU/EN):
= гифка для демонстрации,
= деплой лабораторной,
= разбор теории и сылки на полезные материалы,
= выполненный вариант

Лабораторная 3 (веб)

(CSS + JSF) + (JSF) + (ORM: Hibernate/Eclipse Link)

JSF - зло, намучаетесь жесть. Если повезёт и аккуратно пройдёте по протоптанной дорожке, то лаба делается супер-быстро. Зло в том что это старый фуллстак фреймворк для веб-приложений. Лютое легаси, отвратительные доки, половина встроенных вещей может просто не работать, потому что так надо и их придётся обходить костыльными путями - будут конфликты устаревших версий пакетов, рандомные ошибки и всё тому прочее. Материалы ниже были созданы в попытках сохранить драгоценное время и нервы студентов:

-> Видос с демонстрацией ёбнутой лабы (если есть много свободного времени)
-> Полностью задокументированный рабочий шаблон для быстрого старта
-> Защищённая на фулл лаба (RU/EN):
= легко поднять в докере / гайд деплоя на гелиос
= ссылки на разбор теории + полезные материалы
= описание / требования

Important

Имхо: вообще неважно как вы тут выкрутитесь - главное найдите способ завести лабу, и сделайте так чтобы было очень сложно её положить. Если этого добьётесь - лаба сдана, больше ничего не надо. Чем меньше придётся работать с этим говном - тем лучше :)

Лабораторная 4 (веб)

(React/Vue/Angular) + (Spring/Jakarta EE) + (Hibernate/Eclipse Link)

Кто бы что ни говорил, тут всё равно что вам попадётся - лаба приятная, потому что относительно новые фреймворки, нет конфликтов зависимостей и вас никто не будет ограничивать. А также у многих практиков можно выпросить желаемый стэк. И если фронтовый фреймворк достаточно просто, то на бэке могут дать Java EE и сказать что всё, иди пиши :)

-> Демонстрация конченной лабы, если у вас нет личной жизни
(все ссылки на исходники в описании)

Имхо: неважно у вас Java EE / Spring. Многим нравится спринг потому что он простенький, и потому что на нём работы много. Я писал на Java EE, и хоть сначала и плевался, со временем понял что фреймворк буквально проще спринга во всём, и в этом его огромное преимущество. Придётся ручками написать большую часть бэка, но это компенсируется тем что Java EE простая как пробка и в отличие от спринга - на защите вам тоже должно быть сильно легче.

Important

Учтите, что всех ждёт рубежка, на которой может попасться как java EE, так и Spring и любой фронтовый фреймворк, поэтому учить надо в любом случае всё, даже если практик будет вас спрашивать лояльно. Поэтому при написании лабы на Java EE, Spring MVC никто не отменял :D

Деплой лабораторной 4 (веб)

Способов на самом деле много, я делал хостинг фронта на github pages и бэка на гелиосе, а сайт был доступен через мой домен. Поэтому domain.com/api форвардился на гелиос, а domain.com показывал фронт сайта, который раздавался бесплатным хостингом github pages. Это сложный варик, но мне его одобрил практик. Бэк надо в любом случае хостить на гелиосе - это дурацкое требование, но оно есть и никуда вы не денетесь, учитите.

TODO тут надо написать про vite, npm, относительные пути, чтоб лаба работала на se.ifmo, по-хорошему и другие сборщики в единый index.html файл

Рубежка (веб)

TODO: ссылки на разборы рубежки, вопросы и варики рубежки

Теория вероятностей

Курс теорвера представляет собой написания КР, небольших лаб. Основные темы: Среднеквадратическое отклонение, Дисперсия, Математическое ожидание, коэффициент стьюдента, проверка нулевой гипотезы и тд. Рекомендую делать решаторы так как в следующем семе будет всё буквально то же самое на курсе матстата. Курс ведут два преподавателя: Селина и Кудашов, так что ваше обучение зависит от того к кому ваша группа попадёт

Селина (теорвер)

С долгами лучше не оставаться и как следствие пропускать пары, так как в противном случае придётся сдавать лабораторные вместе со всем потомком и очередью из 100+ человек, в то время как скорость очереди около 10-15 минут на человека. На лекции можно не ходить, так как они добавляют не значительные 3 балла, которые по сути бесполезны, так как закрывая все ключевые точки вовремя вы с большой долей вероятности получите зачёт.

TODO возможно доделать описание, добавить ссылки на сливы кр, эксель таблички-решаторы лаб, в идеале наверное вспомнить все лабы и написать их список

Кудашов (теорвер)

Прикольный чел, забавный. К нему лучше приходить с хорошим настроением и немного подготовленным, чтобы выходить к доске, отвечая на достаточно простые вопросы и получая плюсики. Если будете чуть готовиться к каждой паре, курс пиво, но учтите что лучше всю теорию хоть немного понимать, потому что потом будет мат.стат, как и было сказано выше.

Математика (базовый уровень)

TODO тут если честно не знаю что писать и надо ли, учитывая что у нас другая математика нежели у них. // тру, пока так оставим

Языки программирования

Тяжелый предмет. Дистанционный. Антиплагиат. Требует написания программ на ассемблере и С. Так же требуется небольшие знания Git (GitLab)

TODO найти гайд по регистрации на гитлабе // камон бля, зайти на сайт, ввести логин/пароль

TODO найти гайд по установки виртуалки // проще по факту прийти на первый семинар и всё поставить, он лютое пиво

Important

Лично я рекомендую поставить заранее линукс на дуал бут, потому что курс супер-интересный, семинары не сложные и вас всему научат и если что помогут, пользоваться линуксом, если стоят условные KDE/Gnome/другие гуи не сложно, но работать на семинарах будет сильно приятнее. Рекомендую поставить linux fedora и проблем вообще не должно быть, с убунтой будьте аккуратны, были у кого-то проблемы на последних семинарах. Если хотите пуститься во все тяжкие - ставьте neovim, в нём есть классный дебаггер

TODO Возможно не требуется разбития на лабы здесь, так как всю нужную информацию можно найти на гитлабе, где и стырить лабу у другого студента // В целом согласен, можно написать что этот курс даёт дохрена крутых возможностей - от навыков код ревью до работы на низком уровне с программами и их дебагом. Но описания лаб как будто бы за нас Жирков лучше сделал

Лабораторная 1 (ЯП(ы))

Input/Output library in assembly

Лабораторная 2 (ЯП(ы))

Dictionary in assembly

Лабораторная 3 (ЯП(ы))

Image rotation

Лабораторная 4 (ЯП(ы))

Memory allocator

Лабораторная 5 (ЯП(ы))

Sepia filter + ускорение через SSE инструкции

Физика

ИВТ

Пока кратко - оба семестра нереально пивные. Больше всего баллов приносит работа на практиках, которая интересная и не особо замысловатая, а также ответы на вопросы на лекциях.

Описание

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

Рубежка

Стот мало баллов. Если хорошо решите, ну может 5 баллов поставят, но по сути можно скипать или не писать и вообще побоку, экз всё решает в любом случае потому что весит 40 баллов. Задачи из рубежки - те же задачи с практик + дополнительные. Половина минимум из рубежки будет в экзамене.

Экзамен

Important

на практиках будете решать задачи - они не сложные, но рекомендую все конспектировать и разбирать, потому что потому 1 в 1 будут на экзамене.

Экз - просто билеты заботайте и пиво. Их не мало, но и не сильно много, половина как минимум скорее всего уже есть в голове со школы. Сначала получаете одну задачу из обязательного списка и решаете её перед преподом. Это задачи которые вы решали на практике, и они будут ещё раз разобраны накануне самого экзамена, поэтому просто не проморгайте и допуск к экзамену у вас в кармане. Затем вам дадут уже нормальные задачи и будете сидеть их решать. Как решите - тяните теор.билет, или сам препод вам его называет и потом его рассказываете. Обычный экз, достаточно простой.

СППО

// алёёёёё гайз

Алгоритмы и структуры данных

Пока напишу коротко, как наполнение:

Все лекции в записи, будут лежать на диске. Материал лекций классный, многому научит, особенно тех, кто так себе шарит за алгосы и хочет научиться.

Закрыться на 3 можно с закрытыми глазами, без рук и вообще доступа в интернет. На 4C надо решить 14 из 16 задач с Яндекс контеста. Даже если вы очень слабый студент - не переживайте. Есть задачи которые заставят поломать мозг, может даже неделю с лишним, но у вас весь семестр, а задач надо всего 14. Часть из них вообще не на алгосы, а на умение разрабатывать свой язык из курса АК (привет задача на написание менеджера памяти и на парсер).

Архитектура компьютера

Warning

Не относитесь халатно к этому курсу, не пропускайте дедлайнов и согласовывайте темы докладов заранее. Может прозвучать душно, но потом просто не будет дороги назад и вы окажетесь в очень неприятной ситуации, которую можно было бы избежать, не применив слишком много усилий

В целом ggwp. Один из самых крутых курсов с точки зрения образования. С точки зрения закрытия - если организуетесь, не пропустите дедлайны, всё будете делать в срок и хорошо, то курс спокойно закрывается на 3-4 без экза. На 5 без экза надо нормально сделать 3 лабу, тут уже у кого на что сил хватит и смотря как стоят приоритеты.

Вычислительная математика

Курс +- пивной. Это не алгосы, АК или ОПИ. Но времени займёт предостаточно, а если будете сильно нарушать дедлайны то можно и проблем огрести в конце сема, не советую.

Надо сделать 5 лаб и написать 2 рубежки. Если закрываете все лабы до какого-то дедлайна, у нас было до мая, тогда всё остальное автоматом.

Note

Как обычно вместо личной жизни я ёбнулся, поэтому вот вам репа. Все лабы я делал в латехе, поэтому шаблоны легко взаимозаменяемы, а вот код писал на плюсах, тут уже на любителя.

Каждая лаба это какой-то вычислительный метод - его нужно заботать, нарисовать диаграмку последовательности, которая будет полноценно описывать работу метода, а также его запрограммировать и подготовить хороший отчёт. За все маленькие помарки снижают баллы, но даже если вам по 50% будут снимать - их хватит :)

Лабы по вариантам, но методов буквально по пальцам пересчитать, поэтому вам точно будут попадаться одинаковые половине группы.

Warning

На курсе есть антиплагиат и если вас за это уличат, то поминай как звали. Поэтому все эти материалы строго для первичного ознакомления в образовательных целях - копировать и вставлять не думая не стоит. Но переиспользовать для себя можно :)

Математическая статистика

Методы оптимизации

Основы программной инженерии

Техники публичных выступлений

Особая благодарность

  • <T>
  • worthant
  • TsenekovIT

About

📜 Guide for 2nd year ITMO VT students / Гайд для студентов 2 курса ИТМО ВТ

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •