Summary Files Commits Branches @commit @diff @stats
path: root / src
diff options
context:
space:
mode:
Commite3f6690808d606913359ca677526d46cf0660ddf (patch)
Author
 Syndamia <kamen@syndamia.com>
2025-09-27 17:37:54 +0300
Committer
 Syndamia <kamen@syndamia.com>
2025-09-27 17:37:54 +0300
Files5bac9641da6be44f7cdf784054362da99c5d776b /src
syndamia.com-e3f6690808d606913359ca677526d46cf0660ddf.tar
syndamia.com-e3f6690808d606913359ca677526d46cf0660ddf.tar.gz
syndamia.com-e3f6690808d606913359ca677526d46cf0660ddf.zip
Parent118f5b3915013ebeb8d2eacf67145001e2e3e35a (diff)
feat(teaching/upp-2025/w1): Add slides and exercises
diff --git a/src/teaching.du b/src/teaching.du
index b51fe8a..463262b 100644
--- a/src/teaching.du
+++ b/src/teaching.du
@@ -5,6 +5,8 @@ This is a list of all the subjects I've taught professionally.
\n
:defs
+; [$bg] 2025-2026 &emsp; [url /teaching/upp-2025 3107 Увод в програмирането - практикум, КН, 5 група]
+: Хоноруван преподавател във [url https://www.fmi.uni-sofia.bg/ ФМИ] на специалност [url https://www.fmi.uni-sofia.bg/bg/kompyutrni-nauki Компютърни науки]
; [$bg] 2025 &emsp; [url https://github.com/universal-configurations-with-nix Универсални конфигурации с Nix] - [url https://github.com/universal-configurations-with-nix/academy-2025 лекции, материали, задачи] и [url https://www.youtube.com/watch?v=QcHIeRtySxA&list=PLjPLCCBcJVpGfRHmHlucj3D7lbNkQZAH- записи]
: Преподавател в частна академия по Nix към [url https://blocksense.network blocksense.network]
diff --git a/src/teaching/index.du b/src/teaching/index.du
index b51fe8a..463262b 100644
--- a/src/teaching/index.du
+++ b/src/teaching/index.du
@@ -5,6 +5,8 @@ This is a list of all the subjects I've taught professionally.
\n
:defs
+; [$bg] 2025-2026 &emsp; [url /teaching/upp-2025 3107 Увод в програмирането - практикум, КН, 5 група]
+: Хоноруван преподавател във [url https://www.fmi.uni-sofia.bg/ ФМИ] на специалност [url https://www.fmi.uni-sofia.bg/bg/kompyutrni-nauki Компютърни науки]
; [$bg] 2025 &emsp; [url https://github.com/universal-configurations-with-nix Универсални конфигурации с Nix] - [url https://github.com/universal-configurations-with-nix/academy-2025 лекции, материали, задачи] и [url https://www.youtube.com/watch?v=QcHIeRtySxA&list=PLjPLCCBcJVpGfRHmHlucj3D7lbNkQZAH- записи]
: Преподавател в частна академия по Nix към [url https://blocksense.network blocksense.network]
diff --git a/src/teaching/upp-2025/index.du b/src/teaching/upp-2025/index.du
new file mode 100644
index 0000000..1494e65
--- /dev/null
+++ b/src/teaching/upp-2025/index.du
@@ -0,0 +1,28 @@
+# Увод в програмирането - практикум, Компютърни науки, 8 група
+
+Материали на проведените през 2024/2025 практикуми по Увод в програмирането на Компютърни науки (2 поток), 5 група.
+
+=[Зала:]= ФМИ 217 [$dbarsep]
+=[Време:]= 16:00 - 18:00 [$dbarsep]
+=[Ден:]= Четвъртък
+
+=[Директни връзки:]=
+[url ./week01/introduction.html?a#section-3 Контакт с мен]
+'stop_output
+| [url https://github.com/Syndamia/upp-2023-solutions Решения на задачи]
+| [url https://github.com/ivanahristova/introduction-to-programming-2023-2024 Материали от семинари]
+| [url https://learn.fmi.uni-sofia.bg/course/view.php?id=9567 Курс в мудъл]
+'resume_output
+
+:table
+|=&#8470;=||=Дата=||=Материали=|
+
+|:1:|
+ |:02.10.2025:|
+ |:Въведение:|
+|::||::||:
+ [url ./week01/introduction.html?a Уводни бележки] || [url ./week01/concepts.html?a Общи концепции] || [url ./week01/github_classroom.html?a GitHub Classroom упътване] || [url ./week01/visual_studio.html?a Visual Studio упътване] || <br>[url ./week01/zip.html?a ZIP архиви упътване]
+ :|
+|::||::||:
+ [url ./week01/index.html Задачи] || [url https://classroom.github.com/a/-1l498jX GitHub Classroom]
+ :|
diff --git a/src/teaching/upp-2025/week01/concepts.du b/src/teaching/upp-2025/week01/concepts.du
new file mode 100644
index 0000000..c1bbacc
--- /dev/null
+++ b/src/teaching/upp-2025/week01/concepts.du
@@ -0,0 +1,116 @@
+# Общи концепции - УПП, Седмица 1, 02.10.2025
+
+'define expected-reading 4 min
+'define created 27 September 2025
+'define edited 27 September 2025
+[$pagenav]
+
+[$presentation-controller]
+
+:title_slide35
+
+# Общи концепции
+
+
+:slide35
+
+## Компютър, код, компилиране
+
+[$br2]
+
+:unordered
+- Компютърът е една гигантска елка с много бутони и памет
+- Видео, аудио, ... се свеждат до записване на число в паметта
+ .unordered
+ - Например, записване на 255 в определена памет, казва че червеното на първия пиксел е с максимална яркост
+
+- Как числото става нещо осезаемо е въпрос по елетротехника
+
+
+
+:middle_slide
+
+.unordered
+- В древността (около 1940те) програмистите са ръчно са размествали жички за да работят с компютъра
+- Електротехниката се развива и това "разместване" се случва без нуждата от промяна в електрическата схема
+- На хората им омръзва от писането на числа, изобретяват програмните езици
+- Това е (=[неформатиран]=) текст, като комбинации от знаци се свеждат до съответните цифри
+ .unordered
+ - Например, нека числото 200 да обозначава\n
+ "добавяне на единица към *[(регистър)]* Y"
+ - С програмен език текста `[INY]` или `[++Y]` се свежда до числото 200
+
+
+:middle_slide35
+
+.unordered
+- Програмите които превръщат този текст в числа се наричат =[компилатори]=.
+ Самия процес - =[компилиране]=.
+- Разногласия по какъв текст какво трябва да значи още текат, затова имаме различни (програмни) езици
+- Допълнително, хората правят комбинации от знаци, които се превеждат до много числа по сложни начини
+- Така се зараждат =[парадигмите]=
+
+
+:slide35
+
+## История на версиите, git
+
+[$br2]
+
+.unordered
+- Microsoft Word, браузърите, ... следят история на действия
+- Можем да се движим назад и напред
+- Но ако се върнем назад и направим нова промяна, "бъдещите" промени се забравят
+- Би било полезно в някои ситуации всъщност да правим разклонение и да пазим и двете редици промени
+
+
+:middle_slide35
+
+.unordered
+- [url https://git-scm.com/ git] е програма, която пази такива разклонени редици от промени върху файловете в директории
+- Всяка промяна се нарича "=[commit]="
+- Различните разклонения се наричат "=[branch]="-ове
+- Всеки "commit" трябва да има автор и описание, тоест commit-ове не се правят автоматично!
+- Създаването/изтриването на файлове с/без съдържание също се включва в commit-ите
+- Папка (и всички под-папки в нея) в която git следи за промени се нарича "=[repository]=" (хранилище)
+
+
+:slide35
+
+.unordered
+- Понякога искаме да споделим нашите промени и да смесим чужди промени при нас\n
+ *[(примерно няколко програмиста паралелно правят модификации по един и същ код)]*
+- Можем да използваме Google Drive/Dropbox/... и ръчно да смесваме, но става сложно и тромаво
+- Сайтове като [url https://github.com GitHub] са специализирани за работа с repository-та.
+ Предоставят:
+ .unordered
+ - безплатно пространство (облак) за repository-и
+ - съвместна интеграция с git
+ - "pull request": улеснено смесване на два branch-а с възможност за дискусии
+
+
+:middle_slide35
+
+.unordered
+- git и GitHub (или техни близки алтернативи) се използват масово от програмисти по целия свят
+- С цел да видите как се ползват и свикнете с тях, ще ги използваме по време на упражнения
+
+
+:slide35
+
+## GitHub Classroom
+
+[$br1]
+
+.unordered
+- Чрез [url https://classroom.github.com GitHub Classroom] ще създавам =[задания с ограничен срок]= (края на съответното упражнение)
+- Когато вие приемете заданието, автоматично се създава git repository към което имате (ограничен) достъп
+- Преди срока трябва да добавите commit с вашата работа по време на упражнението, =[колкото и малко да е!]=
+- Добавя се един автоматичен "pull request" в който ще пиша отзивите.
+
+
+Да, странно е, че използваме системата за смесване на branch-ове за обратна връзка, но така са решили да го направят.
+
+:title_slide35
+
+.p [url ./github_classroom.html?a Към "GitHub Classroom упътване"]
diff --git a/src/teaching/upp-2025/week01/github_classroom.du b/src/teaching/upp-2025/week01/github_classroom.du
new file mode 100644
index 0000000..216a09d
--- /dev/null
+++ b/src/teaching/upp-2025/week01/github_classroom.du
@@ -0,0 +1,174 @@
+# GitHub Classroom упътване - УПП, Седмица 1, 02.10.2025
+
+'define expected-reading 5 min
+'define created 27 September 2025
+'define edited 27 September 2025
+[$pagenav]
+
+[$presentation-controller]
+
+:title_slide
+
+# GitHub акаунт
+
+.p Може да пропуснете тази секция ако вече имате GitHub акаунт
+
+
+:slide
+
+## Сега всички (които нямат) трябва да си направят GitHub акаунти
+
+.p
+Отивате на [url https://github.com/signup github.com/signup], въвеждате си данните една по една и се регистрирате
+
+.p [image ../../upp-2023/week1/img/github-signup.gif]
+
+
+:middle_slide
+
+.p
+След това, като влезете в акаунтите си (което става автоматично след регистрация), на заглавната страница ще имате нещо такова:
+
+.width75% [image ../../upp-2023/week1/img/github-index.gif]
+
+.p
+В горния десен ъгъл, където е иконката с квадрати на бял фон, след натискане получавате sidebar.
+От него, може да достъпите профила си, repository-та които имате, и так. нат.
+
+
+:slide
+
+### Проверете дали сте маркирани!
+
+.p
+Понякога при създаване на нов акаунт, GitHub го маркира (като "проблемен").
+В такава ситуация, няма да можете сами да го изтриете и няма да можете да го ползвате за GitHub classroom.
+
+.p
+Най-простия начин, който намерих, е да отворите
+[url https://support.github.com/contact/reinstatement support.github.com/contact/reinstatement]\n
+Ако отгоре пише "Your account has been flagged", тогава имаме проблем.
+
+.p
+[image ../../upp-2023/week1/img/github-support-flagged.gif]
+
+
+:title_slide35
+
+# Конфигуриране и ползване на GitHub Classroom
+
+
+:slide
+
+## Как ще ползваме GitHub Classroom
+
+[$br3]
+
+.p
+За всеки практикум ще има направя линк.
+При приемане на заданието се генерира repository.
+
+.p
+Трябва да сте качили работата си =[по време]= на упражнението (или малко след това) в това repository.
+GitHub предоставя лесни начини да правите промени по файлове директно чрез браузъра, така че за незаинтересуваните, може да го ползвате като усложнен Google Drive.
+
+.p
+След това аз ще направя отзиви върху вашата работа.
+Те ще се намират в таба "Pull Requests" на конкретното repository.
+Четете ги, отговаряйте, целта е да дискутираме какво сте направили.
+
+
+:slide
+
+.p
+За всяко упражнение ще има отделен линк.\n
+Този за днеска е: [url https://classroom.github.com/a/-1l498jX]
+
+[$br1]
+
+:row
+.p След като го отворите, ще видите съобщение за разрешение, авторизирайте го.
+
+.p [image ../../upp-2023/week1/img/github-classroom-authorize.gif]
+
+
+
+:middle_slide
+
+:row
+
+.width60% [image ../../upp-2023/week1/img/join-the-classroom.gif]
+
+:column
+
+.p При първо влизане ще получите страница с имената и факултетните имена на всички студенти от групата.
+
+.p Изберете своето.
+
+.p Това се прави само веднъж, и след това никога пак.
+
+
+
+
+:slide
+
+.p След това, би трябвало да видите страницата за "Приемане на заданието".
+
+.width40% [image ../../upp-2023/week1/img/accept-assignment.gif]
+
+.p След като го приемете, на новата страница, изчакайте няколко секунди и презаредете.
+Трябва да видите това:
+
+.width40% [image ../../upp-2023/week1/img/ready-to-go.gif]
+
+
+:middle_slide
+
+.p Сега сте готови, кликнете върху синия линк и ще стигнете във вашето GitHub repository.
+
+.p Вътре в това конкретно repository очаквам да качвате работата ви през упражнението.
+Повтарям, дори да е недовършено, дори да има някакви празни файлове и такива, трябва да го качите.
+
+.p Който иска спокойно може да прави няколко commit-и, да им прави съобщения и так. нат., ама към този етап, това не е нужно.
+
+.p В края на презентация показвам как точно е най-лесно да качите работата си.
+
+
+:slide
+
+.p
+В таба "Pull requests", още от началото, ще имате едно "Feedback".
+В него ще ви връщам отзиви относно работата ви, и вие също можете да пишете неща и да ми отговаряте.
+
+.p
+Целта е да видя какво правите и да ви помогна, моля проверявайте какво съм ви писал, по подразбиране би трябвало да получавате известия на имейл-а.
+
+.centered
+.width80% [image ../../upp-2023/week1/img/feedback.gif]
+
+
+:slide
+
+## Качване на решенията
+
+.p
+След като сте решили една задача, имате два варианта за писане на следващата: или да създадете нов проект, или да презапишете кода.
+Второто е най-лесно.
+
+.p
+Във всеки случай, ще се наложи сегашния файл с код да го качите.
+Най-елементарния начин: копирате всичко, след това отивате на вашето GitHub repository, кликвате "Add", после "Create new file".
+
+.p
+Отгоре на "Name your file..." пишете някакво име, което =[моля да завърша на `[.cpp]`!]=
+Това показва, че файла съдържа код на C++.
+Също, когато решавате много задачи и създавате много такива файлове, =[напомням че имената на файловете трябва да са различни.]=
+
+.p
+В "Enter file contents here" пействате копирания код.
+Горе в дясно натискате "Commit changes...", в pop-up-a после пак натискате "Commit changes" (ако искате, променяйте "Commit message" и "Extended description", но не е нужно) и сте готови с този файл/задача.
+
+
+:title_slide35
+
+.p [url ./visual_studio.html?a Към "Visual Studio упътване"]
diff --git a/src/teaching/upp-2025/week01/helloworld.cpp b/src/teaching/upp-2025/week01/helloworld.cpp
new file mode 100644
index 0000000..3e7b24d
--- /dev/null
+++ b/src/teaching/upp-2025/week01/helloworld.cpp
@@ -0,0 +1,6 @@
+#include <iostream>
+
+int main()
+{
+ std::cout << "Hello World\n";
+}
diff --git a/src/teaching/upp-2025/week01/index.du b/src/teaching/upp-2025/week01/index.du
new file mode 100644
index 0000000..0d3eaa6
--- /dev/null
+++ b/src/teaching/upp-2025/week01/index.du
@@ -0,0 +1,42 @@
+# Задачи - УПП, Седмица 1, 01.10.2025
+
+'define expected-reading 2 min
+'define created 27 September 2025
+'define edited 27 September 2025
+[$pagenav]
+
+.warn
+Не сте имали нито лекция нито семинарно упражнение, затова в задачите няма писане на код.
+
+GitHub Classroom: [url https://classroom.github.com/a/-1l498jX]
+
+## 1 задача - Hello, World!
+
+Изкарайте на екрана съобщението "Hello, World!".
+
+Ако използвате Visual Studio, проектът по подразбиране трябва да съдържа програмата за "Hello, World!".
+Нужно е единствено да я компилирате и пуснете, както са инструкциите в [url ./visual_studio.du#section-6 презентацията "Visual Studio"].
+
+Ако използвате друга среда/редактор, създайте `[C++]` файл със следното съдържание:
+
+```c++
+'include ./helloworld.cpp
+
+Компилирайте го и го изпълнете според инструкциите на вашата програма.
+
+### Исторически контекст
+
+В модерно време, това е класическата първа задача по програмиране.
+Цялата идея идва от книгата/упътване [url https://en.wikipedia.org/wiki/The_C_Programming_Language The C Programming Language] (първо издание 1978).
+
+Тази книга (и съответния език) са едни от най-популярните в програмирането.
+Ако някой не е запознат, целия свят се крепи на C :)
+
+## 2 задача - Качване в GitHub Classroom
+
+Създайте =[ZIP архив]= който съдържа вашия `[.cpp]` файл (съдържащ "Hello, World!" програмата).
+Качете архива във вашето repository към заданието най-отгоре на страницата.
+
+Инструкции за създаване на ZIP архив [url ./zip.html тук].
+
+Инструкции за използване на GitHub Classroom [url ./github_classroom.html#-github-classroom-1 тук].
diff --git a/src/teaching/upp-2025/week01/introduction.du b/src/teaching/upp-2025/week01/introduction.du
new file mode 100644
index 0000000..3ea07b9
--- /dev/null
+++ b/src/teaching/upp-2025/week01/introduction.du
@@ -0,0 +1,236 @@
+# Уводни бележки - УПП, Седмица 1, 02.10.2025
+
+'define expected-reading 4 min
+'define created 27 September 2025
+'define edited 27 September 2025
+[$pagenav]
+
+[$presentation-controller]
+
+:title_slide35
+
+# Добре дошли!
+
+.p
+.width65%
+[image_url https://upload.wikimedia.org/wikipedia/commons/3/3c/Chimpanzee_seated_at_typewriter.jpg https://en.wikipedia.org/wiki/Infinite_monkey_theorem]
+
+
+:slide35
+
+## Кой съм Аз
+
+[$br5]
+
+.unordered
+- Казвам се Камен.
+- Четвъртокурсник* във ФМИ, КН, втори поток.
+- Водех УП Практикум 2023/2024 година.
+
+
+:slide
+## Връзка с мен
+
+:unordered
+- Facebook messenger: <img class="file-type-icon" src="/files/ephemeral/facebook.png">
+
+- Discord: <img class="file-type-icon" src="/files/ephemeral/discord.png">
+
+- Имейл:
+ .bulleted
+ - <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#107;&#097;&#109;&#101;&#110;&#064;&#115;&#121;&#110;&#100;&#097;&#109;&#105;&#097;&#046;&#099;&#111;&#109;">&#107;&#097;&#109;&#101;&#110;&#064;&#115;&#121;&#110;&#100;&#097;&#109;&#105;&#097;&#046;&#099;&#111;&#109;</a> <a class="borderless" href="/files/publickey-&#107;&#097;&#109;&#101;&#110;&#064;&#115;&#121;&#110;&#100;&#097;&#109;&#105;&#097;&#046;&#099;&#111;&#109;-0x354C5F95.asc"><img class="borderless unzoomable" src="/img/pgpkey.gif" alt="PGP key"></a>
+ - <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#107;&#97;&#109;&#101;&#110;&#46;&#100;&#46;&#109;&#108;&#97;&#100;&#101;&#110;&#111;&#118;&#64;&#112;&#114;&#111;&#116;&#111;&#110;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">&#107;&#97;&#109;&#101;&#110;&#46;&#100;&#46;&#109;&#108;&#97;&#100;&#101;&#110;&#111;&#118;&#64;&#112;&#114;&#111;&#116;&#111;&#110;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;</a> <a class="borderless" href="/files/publickey-&#107;&#97;&#109;&#101;&#110;&#46;&#100;&#46;&#109;&#108;&#97;&#100;&#101;&#110;&#111;&#118;&#64;&#112;&#114;&#111;&#116;&#111;&#110;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;-62ca52e87475c874b9e6ebf3c4c9f716b6ce4c9d.asc"><img class="borderless unzoomable" src="/img/pgpkey.gif" alt="PGP key"></a>
+
+
+.p Директни линкове към Facebook и Discord има на [url https://learn.fmi.uni-sofia.bg/user/profile.php?id=23229 профила ми в мудъл].\n
+
+
+
+:slide35
+
+## Кои сте вие?
+
+[$br2]
+
+.unordered
+- Няма да обикалям човек по човек.
+
+[$br1]
+
+.unordered
+- Кои са състезатели?
+- Кои не са програмирали преди?
+- Кой е работел с указатели?
+
+
+:title_slide35
+# Относно курса
+
+.p Защото това упражнение е преди първата лекция...
+
+
+:slide35
+
+## Занятията
+
+[$br3]
+
+.unordered
+- =[Лекции]= - теория и формалности зад нещата
+- =[Семинари]= (семинарни упражнения) - как теоретичните неща се реализират
+- =[Практикуми]= (практически упражнения) - реализиране на нещата от вас
+
+
+:slide35
+## Оценяване
+
+[$br4]
+
+.unordered
+- Ще разберете на лекцията утре, от доц. Нора Ангелова.\n
+ Тя води курса и тя определя точната скала.
+- Ще има контролни през семестъра.\n
+ Ще се разглежда теория и практика.
+
+
+:slide35
+
+## Материала
+
+[$br4]
+
+.unordered
+- Ще работим изцяло с езика `[C++]`
+- Ще разглеждаме общи концепции: оператори, цикли, функции, масиви, низове
+- И някои по-специални понятия: =[указатели]=, =[рекурсия]=
+
+
+:slide35
+
+[$br2]
+
+### За състезателите
+
+.unordered
+- Ще трябва да научите как се пише четим код
+- Може би не сте запознати с някои детайли
+
+[$br1]
+
+### За хората без опит
+
+.unordered
+- Материалът е =[много]= и бързо напредваме.
+ Няма да имаме време всичко да изговорим.
+- Допълнителна самоподготовка е =[нужна]= и едва ли ще можете да се справите без нея.
+
+
+:slide35
+
+### За всички
+
+[$br3]
+
+.unordered
+- =[Не се отпускайте!]=
+- `[C++]` е език на ниско ниво, има безброй много детайли които може да ви спънат.
+- Ние имаме специфични изисквания за писане на код.\n
+ =[Ако не ги спазвате, дори решението да работи, може да получите слаба оценка!]=
+
+
+:slide35
+
+## Плагиатство
+
+[$br2]
+
+.unordered
+- В училище (разкрито) преписването води до двойка и потенциално обаждане към родителите.
+- Във ФМИ при установено плагиатството, =[в срок от една година]=, студента *[може]* да бъде =[изключен от университета без възможност да се запише обратно]=.
+- По-добре си изкарайте двойката, ще ви дадем достатъчно шансове да си минете курса.
+
+
+:middle_slide35
+:centered
+
+.p *[Пък и може би не си заслужава...]*
+
+<iframe width="480" height="360" src="https://www.youtube.com/embed/hMloyp6NI4E">
+</iframe>
+
+
+
+:title_slide35
+
+# Практикумите
+
+
+:slide35
+
+## Как ще ги водим
+
+[$br2]
+
+.unordered
+- В началото на часа давам задачи, вие ги решавате.
+- Всички текстови редактори/IDE-та са позволени.
+- До края на часа трябва да предадете написаното от вас в GitHub Classroom
+- Ще връщам обратна връзка към предаденото, *[моля да я четете!]*
+
+
+:slide
+
+## Видове задачи
+
+[$br1]
+
+.defs
+; За решаване
+: Прости задачи, които очаквам да можете да решите (повечето през упражнението)
+; За самоподготовка
+: По-сложни задачи, които ще описват възможни проблеми от реалния свят
+; За любознателните
+: 1-2 сложни задачи, чиято цел е да се реализира *[реалистичен]* използваем софтуерен компонент
+
+
+:middle_slide35
+
+.unordered
+- На първия тип винаги ще качвам решения.
+- На останалите е условно.
+- Въпреки това, ако някой иска решение за нещо, да ми пише.
+
+
+:slide35
+
+## Изкуствен интелект
+
+[$br4]
+
+.unordered
+- Ще чуете и други мнения от екипа по тематa
+- Анализ на генериран изход от ИИ ще бъде разглеждан в курса
+- На практикумите ви е позволено да го ползвате, =[но]= не го окуражавам
+
+
+:slide35
+
+[$br2]
+
+.p Различни умения са:
+.numbered
+1. да =[напишеш сам]= код от нулата
+2. да =[четеш]= код и разбереш какво прави
+3. да =[модифицираш/допълниш]= вече наисан код
+
+.p
+Чрез ИИ избягвате да правите първото.
+То е най-важно (особено за контролни) и може би най-трудно.
+
+.p
+Най-много мога да ви помогна и най-много имате да научите покрай него.
+
+
+:title_slide35
+
+.p [url ./concepts.html?a Към "Общи концепции"]
diff --git a/src/teaching/upp-2025/week01/visual_studio.du b/src/teaching/upp-2025/week01/visual_studio.du
new file mode 100644
index 0000000..e899c05
--- /dev/null
+++ b/src/teaching/upp-2025/week01/visual_studio.du
@@ -0,0 +1,245 @@
+# Visual Studio упътване - УПП, Седмица 1, 02.10.2025
+
+'define expected-reading 6 min
+'define created 27 September 2025
+'define edited 27 September 2025
+[$pagenav]
+
+[$presentation-controller]
+
+:title_slide35
+
+# IDE и текстови редактори
+
+
+:slide
+
+## Къде пишем код?
+
+[$br2]
+
+.p
+=[Кодът е чисто и просто текст]=, компилаторът е специалната програма, която превръща този текст в нещо, което може компютъра да изпълни.
+
+.p
+За писане и редактиране на текст ползваме =[текстови редактори]=.
+Програмистите са искали да улеснят работата си, затова модерните текстови редактори поддържат много помощни функционалности: показване на грешки на точния ред, автоматично форматиране, ...
+
+.p
+За някои и това не е било достатъчно удобно, затова са създадени =[Integrated Development Environment]= (IDE), програми които съдържат в себе си всичко нужно за разработка на код.
+Тоест, те са текстови редактори, но "вградено" могат да компилират код, да менижират сегашното repository, ...
+
+
+:middle_slide
+
+.p
+Главно очакваме да пишете на IDE-то наречено Visual Studio.
+Разработено е от Microsoft и е едно от най-използваните и развитите IDE-та на пазара.
+
+.p
+Разбира се, може да ползвате и текстови редактори като Visual Studio Code, vim, emacs, ...
+Но изисква повече конфигуриране от ваша страна.
+
+.p
+Извън това, с мен може да говорите за vim и neovim :)
+
+
+:title_slide35
+
+## Инсталация
+
+.p
+Може да пропуснете тази секция ако работите с машините в компютърните зали.
+Visual Studio е вече инсталирано там.
+
+
+:slide
+
+### Инсталация
+
+[$br5]
+
+.p
+За Visual Studio, отивате на [url https://visualstudio.microsoft.com/ visualstudio.microsoft.com], скролвате малко надолу, избирате "Download Visual Studio" и след това "Community 2022".
+.bulleted
+'footnote vs-2022-old-win Може би има трикове с които да инсталирате 2022 версията, но те не са официални и затова няма да го преподам
+- Ако искате да ползвате по-стара ОС, като Windows 8.1 или Windows 7 ще трябва да използвате "Community 2019"[$vs-2022-old-win], разликата между версиите не е съществена, затова не се притеснявайте.
+
+
+:slide
+
+.p
+След като изтеглите инсталатора за Visual Studio и след като изчакате да заредят работи, би трябвало да имате прозорец на име "Installing - Visual Studio Community 2022".
+
+.p
+Единствено избирате "Desktop development with C++" в таба Workloads, и натискате "Install".
+Би трябвало да заема към 11 GB памет и в моето тестване се инсталира за 10тина минути.
+
+.centered
+.width80% [image ../../upp-2023/week1/img/vs-install.gif]
+
+
+:slide
+
+.p
+Когато е готово, би трябвало да се включи автоматично и да имате прозорец с име "Sign in to Visual Studio".
+За сега това не е нужно, спокойно изберете "Not now, maybe later."
+
+.p
+След това, на "Start with a familiar environment", отново, не е нужно да променяте нищо, просто натиснете "Start Visual Studio".
+
+:centered
+:width75%
+:row
+
+.p [image ../../upp-2023/week1/img/vs-signin.gif]
+
+.p [image ../../upp-2023/week1/img/vs-start-env.gif]
+
+
+
+
+
+:title_slide35
+
+## Как да използваме Visual Studio
+
+
+:slide
+
+### Създаване на нов проект
+
+.p
+Това е първия прозорец, който се отваря.
+В лявата колона имате скорошни проекти, в дясната имате начини да създадете нов проект.
+
+:centered
+:width80% [image ../../upp-2023/week1/img/vs-open-recent.gif]
+
+
+
+
+:slide
+
+.p
+Нека да направим нов проект, кликнете "Create a new project".
+В този прозорец избирате началната "конфигурация" на проекта.
+В този курс ще работим само и единствено с "Console App", затова изберете него и кликнете "Next".
+
+:centered
+:width75% [image ../../upp-2023/week1/img/vs-create-project.gif]
+
+
+
+
+:slide
+
+.p
+Последния прозорец преди писането на код е за конфигурация на проекта.
+Тук единствено може да искате да промените Project Name и Location, другото не е важно.
+
+:centered
+:width80% [image ../../upp-2023/week1/img/vs-configure-project.gif]
+
+
+
+
+:slide
+
+#### Бърза вметка, какво и защо конзолата?
+
+.p
+През 19ти век са изобретени teleprinters: пишещи машини с възможности да печат текст от електрически сигнал.
+Използвали са се в телеграфията: пишеш като на пишеща машина съобщението и отговора се напечатва на същия лист хартия.
+
+В ранните години на компютрите, точно тези teleprinters са били използвани, все пак са били съществуваща технология, която "изпраща" текст като ел. сигнали и може да принтира ел. сигнали като текст.
+
+.p
+Имало е неудобства, използвало се е много хартия, и механиката на бутоните е била сложна.
+С времето компаниите са разработвали такива устройства, който обаче ползват електронно-лъчева тръба и "нормални" бутони за клавиши.
+
+.p
+Чисто практически, ние това знаем като конзолата: устройство (или в модерно време, програма) което може да получи входен текст и да изкара текст.
+
+
+:slide
+
+### Компилиране на код
+
+.p
+След малко чакане, най-после ще се намираме в средата за писане на код.
+
+:centered
+:width60%
+.p [image ../../upp-2023/week1/img/vs-general.gif]
+
+
+
+.p
+В Solution Explorer имате всички файлове от проекта (Visual Studio позволява да групирате няколко проекта в едно, наречено Solution, не е нужно да се занимавате).
+
+.p
+Тук =[единственото важно за вас се намира в папката "Source Files"]=.
+В нея ще се намира вашия код, всичко останало са допълнителни неща, които са релевантни за по-големи проекти.
+
+
+:slide
+
+:row
+
+.p
+Компилирането на код става от менюто "Debug" най-отгоре, и след това избиране на "Start Without Debugging".
+
+:width50%
+:fright
+.p [image ../../upp-2023/week1/img/vs-debug-menu.gif]
+
+
+
+
+.p
+След малко чакане, би трябвало да излезе един прозорец, който изглежда горе-долу така:
+
+.p [image ../../upp-2023/week1/img/vs-console.gif]
+
+
+:slide
+
+### Дебъгване
+
+[$br1]
+
+.p
+Bug е когато нещо непланирано се случи в кода.
+Debuging е глаголът за откриване на причината за един bug.
+Visual Studio предоставя много функционалности, които да ускорят debugging.
+
+.p
+Нека да въведем една грешка, в реда на който изкараме "Hello, World!", нека да махнем последната ";".
+
+.p
+При компилиране, ще получим съобщение за грешки по време на компилирането.
+
+.p [image ../../upp-2023/week1/img/vs-build-errors.gif]
+
+
+:slide
+
+.p
+Нека да натиснем "No" и да погледнем Visual Studio.
+
+.p
+Грешките, или поне където то си мисли че са, ще бъдат подчертани с червена зигзагообразна линия.
+Ако сложим мишката върху тях, ще получим popup, в който ще пише каква е грешката на това място.
+Грешки също се виждат в така наречения "Error List", който се намира директно под кода.
+Той се появява когато при компилиране получим грешки и изчезва когато няма.
+
+:centered
+:width70% [image ../../upp-2023/week1/img/vs-errors.gif]
+
+
+
+
+:title_slide35
+
+.p [url ./zip.html?a Към "ZIP архиви упътване"]
diff --git a/src/teaching/upp-2025/week01/zip.du b/src/teaching/upp-2025/week01/zip.du
new file mode 100644
index 0000000..2bc18fa
--- /dev/null
+++ b/src/teaching/upp-2025/week01/zip.du
@@ -0,0 +1,116 @@
+# ZIP архиви упътване - УПП, Седмица 1, 01.09.2025
+
+'define expected-reading 2 min
+'define created 27 September 2025
+'define edited 27 September 2025
+[$pagenav]
+
+[$presentation-controller]
+
+:title_slide35
+
+# ZIP архиви
+
+
+:middle_slide
+
+.unordered
+- Чрез ZIP архив обединяваме един или повече файлове и папки в един единствен файл
+- Ще използваме ZIP архиви на контролни/изпити, така че е добре от сега да се запознаем как да боравим с тях
+
+
+:slide
+
+## Windows 11
+
+[$br4]
+
+:unordered
+- Под Windows 11 с *[новото]* меню което излиза при натискане на десен бутон, можете директно да архивирате селектираните файлове
+- Тоест, процедурата е
+ .numbered
+ 1. Селекция на файловете за архивиране
+ 2. Десен бутон
+ 3. "Compress to ZIP file"
+
+- Въпреки всичко, имало е случаи, когато това не работи, затова препоръчвам да разгледате метода и за другите Windows версии
+
+
+
+:slide
+
+## Windows 2000 - Windows 11
+
+[$br3]
+
+:unordered
+- Ще трябва да инсталирате програма за ZIP файлове.
+- Тази която аз препоръчвам е 7-Zip, спрямо WinRAR:
+ .unordered
+ - Няма дразненето с безплатния trial
+ - Поддържа повече формати
+ - Налично е за повече ОС
+- Инсталацията е стандартна: от заглавната страница изтегляте 64bit-овата версия, пускате инсталатора
+
+
+
+:slide
+
+[$br3]
+
+.ordered
+1. Селектирате файловете които искате да архивирате
+2. Десен бутон *[(под Windows 11 трябва да натиснете "Show more options")]*
+3. Задържате курсора върху "7-Zip"
+4. Избирате `[Add to "SOMETHING.=[zip]="]`, където `[SOMETHING]` ще е името на папката в която се намирате.
+ Това директно създава архив с името на текущата папка.
+5. Алтернативно избирате `[Add to archive...]`.
+ От там се отваря прозорец с настройки, най-важно под "Archive format" да изберете ZIP.
+ Другите неща не е нужно да променяте.
+
+
+:slide
+
+## MacOS
+
+[$br6]
+
+.ordered
+1. Селектирате файловете които искате да архивирате
+2. Натискате десен бутон
+3. Избирате "Compress"
+
+
+:slide
+
+## Linux
+
+.p
+.font20
+*[Ползваш Linux и се нуждаеш от туториал? Слабо.]*
+
+[$br5]
+
+### Чрез командния ред
+
+.ordered
+1. Инсталираш `[zip]` командата (пакета почти винаги също се казва `[zip]`)
+2. Извикваш команда във следната форма:
+```bash
+zip archive.zip file1 file2 ...
+
+
+:slide
+
+### Графично приложение
+
+[$br7]
+
+.unordered
+- Отваряш съответния "App Store", търсиш "zip", инсталираш първото и ползваш.
+- Почти винаги може да го отвориш и след това драг-неш селектнати файлове в празното пространство
+
+
+:title_slide35
+
+.p [url ./index.html Към задачите]