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