Добре дошли - УПП, Седмица 1, 06.10.2023




Добре дошли

https://upload.wikimedia.org/wikipedia/commons/3/3c/Chimpanzee_seated_at_typewriter.jpg

Кой съм аз

Казвам се Камен (моля не ми говорете на Вие), в момента съм третокурсник в КН2.
Ще водя практикуми - давам ви задачи, вие ги решавате и на живо оправяме проблеми.
Също ще проверявам част от домашните и контролните през семестъра.

Кои сте вие

Айде сега, ред по ред:
  • Име
    • Едва ли ще го запомня сега, не ми се сърдете :)
  • Коя операционна система ползвате
  • Писали ли сте код преди? Ако да:
    • на кои езици?
    • в какво IDE/текстов редактор?
    • как сте се научили (чрез интернет, курсове, ...)? Ходили ли сте на курсове? Къде?

Чисто организационно

Задачи, презентации, ...
syndamia.com/teaching/upp-2023
  • Не сме в училище, ако трябва да излезете за разговор или до тоалетна, просто си излезте (за предпочитане по-тихичко).
  • Ако ви се наложи да пропуснете някой практикум, пропускайте.
    • Само ако решите за постоянно да ходите при някой друг, кажете за да се организираме екипа.
  • Оценяване: ще разберете на първата лекция

Как можете да се свържете

Директни линкове към Facebook и Discord има на профила ми в мудъл.

Как ще протичат практикумите

  • Ще започнем всяко упражнение с 5 минутки преговор, какво ново трябва да приложим
    и ще го завършим с 15-20 минути (ако има желание/смисъл) обяснение на задача
  • Ще гледам винаги да има задачи с връзка към реален софтуер. За любителите, където е възможно, ще добавям външни препратки.
  • Давам ви много повече задачи, отколкото очаквам да решите на живо!
    Хубаво е да имате с какво още да се упражните след практикума, 2 часа писане на код седмично е малко!
  • Ще качвам решения на задачите, заедно с подробно коментари върху тях, тук: github.com/Syndamia/upp-2023-solutions. Това ще се случва в началото на следващия практикум, тоест ще имате една седмица, от деня в който ви давам задачите, през която няма да имате решения.
  • Ще използваме GitHub classroom, където ще трябва да качите работата си през упражнението. Целта е да видя какво сте правили и да връщам обратна връзка на всеки. Дори нещо да е недовършено, да не работи, так. нат. качвайте!
    • Това ще играе роля върху оценката ви, но колко ще допринесе зависи изцяло от преценката ми
  • Обратна връзка със сигурност ще правя за нещата, предадени по време на практикума. Окуражавам ви да си решите всички задачи и след упражнението, обаче все пак имам лимитирано време, ако искате можете да се свържете с мен за работата ви по някоя от тях, но не гарантирам кога ще мога да го видя.

Оплаквайте се!

  • За първи път водя практикум (и никога не съм преподавал формално)
  • Задачите сам си ги измислям
Ако задачите са трудни, зле направени, ако нещо не обяснявам като хората, изобщо ако нещо не е ок, свържете се с мен, ще го обсъдим.

Помагайте си!

  • Аз съм един, вие сте >20

Със сигурност няма да успея да помогна на всеки по всяко време от практикума, не се страхувайте да питате съседите си за помощ.

Няколко съвета в позицията ми на третокурсник

  • НЕ плагиатствайте! НЕ си качвайте решенията на контролни или домашни онлайн! Формално плагиатството е незаконно, ако някой Ви направи доклад, възможно е да бъдете изключени.
  • Следвайте материала, който ви се преподава! За хората с опит, ще дойде време когато ще искате да приложите лични знания и практики. Ако не е казано някъде, не го правите и не го обмисляте!

Въпроси ?

ФМИ в контекста на програмирането

Или защо учим толкова много математика
Ще си позволя едно отклонение.
Искам да обясня как аз лично виждам
математиката в компютърния свят.

В КН2 има много и трудна математика

./img/u4-mat-hard.gif
  • Жълто - математически предмет
  • Червено - проблемни предмети

  • Всички проблемни предмети също са математики
  • Към половината предмети са математики
  • Почти всички проблемни са наблъскани в 1ви курс

Защо учим толкова много математика?

Има добра причина, има директни и основни приложения в компютрите, и без тях до никъде нямаше да сме стигнали. Нека обясня защо:

Дискретни структури

Смесица на уводите в няколко предмета:

Claude Shannon

Дискретни структури (продължение)

  • Теория на множествата: множество е някаква съвкупност от обекти
    • Позволява ни да третираме колекция от математически обекти като математически обект[1]. Използва се в основата на много математики; колкото са полезни те, толкова са и множествата.
  • Комбинаторика [2]: изследва бройки на неща
    • Често се ползва за анализ и дизайн на алгоритми и структури от данни
    • Употребява се при оптимизации и теория на кодирането (компресиране на данни, отстраняване на грешки, криптография)
    • Есенциална в теория на графите

Дискретни структури (продължение)

  • Теория на графите: граф е съвкупност от някакви обекти и връзки между тях.
    • Позволява моделиране на много естествени структури: интернет мрежите, географски карти (места и пътищата между тях), йерархии, биологически мрежи и так. нат.
    • Използва се във важни структури от данни като heap (и интересната fibonacci heap) и trie

Езици, автомати и изчислимост

https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Kleene.jpg/421px-Kleene.jpg?20230630215747

Stephen Kleene

Това е част от материала в по-общото "theoretical computer science".
Можем формално да опишем и работим с теоретични компютри и програми.

  • Позволява ни да използваме математика за създаване, обработка и доказване на програми

Алгебра 1

Линейни уравнения и операции върху тях.
  • Линейни уравнения и матрици се срещат сравнително често в софтуер
  • Основоположна в компютърната графика
  • Много използвана в machine learning

Диференциално и интегрално смятане

Разглежда функции и по-общо, непрекъснатата промяна на стойности.
  • Част от компютърната графика (особено обработка на изображения)
  • Напреднал machine learning, главно заради употребата на статистиката (която на свой ред се основава на линейната алгебра)
  • Анализ на алгоритми

В по-общ план

Какво не би било възможно без математика в софтуер:
  • компютрите
  • компютърната графика (особено 3D)
  • интернет
  • GPS
  • сателити и ракети
  • самолетни системи и инженерство
  • ...

Математиката е неразделима част от софтуера!
Друг е въпросът дали на вас лично ще ви се налага да я използвате...

Какво означава да пишеш софтуер?

  • Инженерите и физиците са създали компютрите, едни специални калкулатори с много памет
  • Математиката представя света с абстрактни модели/шаблони
  • Компютърната наука свързва теоретичната математика с физичната машина

  • Най-великият труд на тази дисциплина е постигнат чрез синхрон между тези три предмета

https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Black_hole_-_Messier_87_crop_max_res.jpg/600px-Black_hole_-_Messier_87_crop_max_res.jpg

https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Internet_map_1024.jpg/600px-Internet_map_1024.jpg?20121030160606

Означава да създадеш
deus ex machina

С други думи, позволява ни да разрешим неразрешими проблеми

Употреба на изображения

Снимки на Claude Shannon и Stephen Cole Kleen, предоставени от Konrad Jacobs с авторско право от MFO, лицензирано с CC BY-SA 2.0 DE в Уикипедия.

Снимка на черната дупка Messier 87, предоставена от ESO с лиценз CC BY 4.0 в Уикипедия.

Изображение на интернет мрежата направено от Matt Britt с данни от The Opte Project, лицензирано с CC BY 2.5 в Уикипедия.


[1]https://math.stackexchange.com/a/536172 ^
[2]https://math.stackexchange.com/questions/2146051/where-do-combinatorics-play-a-role-in-computer-science ^