Добре дошли - УПП, Седмица 1, 06.10.2023
Кой съм аз
#Ще водя практикуми - давам ви задачи, вие ги решавате и на живо оправяме проблеми.
Също ще проверявам част от домашните и контролните през семестъра.
Кои сте вие
# Айде сега, ред по ред:- Име
- Едва ли ще го запомня сега, не ми се сърдете :)
- Коя операционна система ползвате
- Писали ли сте код преди? Ако да:
- на кои езици?
- в какво IDE/текстов редактор?
- как сте се научили (чрез интернет, курсове, ...)? Ходили ли сте на курсове? Къде?
Чисто организационно
#syndamia.com/teaching/upp-2023
- Не сме в училище, ако трябва да излезете за разговор или до тоалетна, просто си излезте (за предпочитане по-тихичко).
- Ако ви се наложи да пропуснете някой практикум, пропускайте.
- Само ако решите за постоянно да ходите при някой друг, кажете за да се организираме екипа.
- Оценяване: ще разберете на първата лекция
Как можете да се свържете
#- Facebook messenger:
- Discord:
- Имейл:
- kamen.d.mladenov@protonmail.com
- kamen@syndamia.com
(гледайте си спама!)
- kdmladenov@uni-sofia.bg
- kamen.d.mladenov@protonmail.com
Как ще протичат практикумите
#- Ще започнем всяко упражнение с 5 минутки преговор, какво ново трябва да приложим
и ще го завършим с 15-20 минути (ако има желание/смисъл) обяснение на задача - Ще гледам винаги да има задачи с връзка към реален софтуер. За любителите, където е възможно, ще добавям външни препратки.
- Давам ви много повече задачи, отколкото очаквам да решите на живо!
Хубаво е да имате с какво още да се упражните след практикума, 2 часа писане на код седмично е малко! - Ще качвам решения на задачите, заедно с подробно коментари върху тях, тук: github.com/Syndamia/upp-2023-solutions. Това ще се случва в началото на следващия практикум, тоест ще имате една седмица, от деня в който ви давам задачите, през която няма да имате решения.
- Ще използваме GitHub classroom, където ще трябва да качите работата си през упражнението. Целта е да видя какво сте правили и да връщам обратна връзка на всеки. Дори нещо да е недовършено, да не работи, так. нат. качвайте!
- Това ще играе роля върху оценката ви, но колко ще допринесе зависи изцяло от преценката ми
- Обратна връзка със сигурност ще правя за нещата, предадени по време на практикума. Окуражавам ви да си решите всички задачи и след упражнението, обаче все пак имам лимитирано време, ако искате можете да се свържете с мен за работата ви по някоя от тях, но не гарантирам кога ще мога да го видя.
Оплаквайте се!
#- За първи път водя практикум (и никога не съм преподавал формално)
- Задачите сам си ги измислям
Помагайте си!
#- Аз съм един, вие сте >20
Със сигурност няма да успея да помогна на всеки по всяко време от практикума, не се страхувайте да питате съседите си за помощ.
Няколко съвета в позицията ми на третокурсник
#- НЕ плагиатствайте! НЕ си качвайте решенията на контролни или домашни онлайн! Формално плагиатството е незаконно, ако някой Ви направи доклад, възможно е да бъдете изключени.
- Следвайте материала, който ви се преподава! За хората с опит, ще дойде време когато ще искате да приложите лични знания и практики. Ако не е казано някъде, не го правите и не го обмисляте!
Въпроси ?
ФМИ в контекста на програмирането
Или защо учим толкова много математикаИскам да обясня как аз лично виждам
математиката в компютърния свят.
В КН2 има много и трудна математика
#
- Жълто - математически предмет
- Червено - проблемни предмети
- Всички проблемни предмети също са математики
- Към половината предмети са математики
- Почти всички проблемни са наблъскани в 1ви курс
Защо учим толкова много математика?
#Има добра причина, има директни и основни приложения в компютрите, и без тях до никъде нямаше да сме стигнали. Нека обясня защо:
Дискретни структури
#Смесица на уводите в няколко предмета:

- Булева алгебра: как работим с истина/лъжа, с 0/1
- Доказана е еквивалентност между ел. вериги и булевата алгебра.
- Много типове данни и математически операции могат да се сведат до булева алгебра и работа с памет.
Дискретни структури (продължение)
#- Теория на множествата: множество е някаква съвкупност от обекти
- Позволява ни да третираме колекция от математически обекти като математически обект[1]. Използва се в основата на много математики; колкото са полезни те, толкова са и множествата.
- Комбинаторика [2]: изследва бройки на неща
- Често се ползва за анализ и дизайн на алгоритми и структури от данни
- Употребява се при оптимизации и теория на кодирането (компресиране на данни, отстраняване на грешки, криптография)
- Есенциална в теория на графите
Дискретни структури (продължение)
#- Теория на графите: граф е съвкупност от някакви обекти и връзки между тях.
- Позволява моделиране на много естествени структури: интернет мрежите, географски карти (места и пътищата между тях), йерархии, биологически мрежи и так. нат.
- Използва се във важни структури от данни като heap (и интересната fibonacci heap) и trie
Езици, автомати и изчислимост
#
Stephen Kleene
Това е част от материала в по-общото "theoretical computer science".
Можем формално да опишем и работим с теоретични компютри и програми.
- Позволява ни да използваме математика за създаване, обработка и доказване на програми
Алгебра 1
# Линейни уравнения и операции върху тях.- Линейни уравнения и матрици се срещат сравнително често в софтуер
- Основоположна в компютърната графика
- Много използвана в machine learning
Диференциално и интегрално смятане
# Разглежда функции и по-общо, непрекъснатата промяна на стойности.- Част от компютърната графика (особено обработка на изображения)
- Напреднал machine learning, главно заради употребата на статистиката (която на свой ред се основава на линейната алгебра)
- Анализ на алгоритми
В по-общ план
# Какво не би било възможно без математика в софтуер:- компютрите
- компютърната графика (особено 3D)
- интернет
- GPS
- сателити и ракети
- самолетни системи и инженерство
- ...
Математиката е неразделима част от софтуера!
Друг е въпросът дали на вас лично ще ви се налага да я използвате...
Какво означава да пишеш софтуер?
#- Инженерите и физиците са създали компютрите, едни специални калкулатори с много памет
- Математиката представя света с абстрактни модели/шаблони
- Компютърната наука свързва теоретичната математика с физичната машина
- Най-великият труд на тази дисциплина е постигнат чрез синхрон между тези три предмета
Означава да създадеш
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 ^ |