Курсът ще бъде с продължитеност 3 месеца, като:
- Започва на 12ти януари и завършва на 1ви април.
- Веднъж на седмица ще имаме занятия 2 пъти - понеделник и сряда.
- През една седмица, ще имаме занятия 3 пъти - понеделник, сряда и събота.
В курсът ще се изучават основи на програмирането, като за целта ще използваме:
- Python като език за програмиране (версия 3.4)
- Елементи от Дискретната Математика - като фундаментални и необходими знания. Ще си говорим за множества, функции, релации, наредби и други интересни неща.
- Python IDLE за среда за разработка през първия месец.
- Sublime Text версия 3 за текстов редактор за втория и третия месец.
- Операционната система ще бъде по избор, като ще работим главно под Windows. Linux-а ще дойде в курса по Програмиране 101.
- Ще започнем с мотивация и поглед над света на програмистите. Ще покажем и разкажем каква е разликата между различните професии, свързани с разработката на софтуер. Ще покажем и примерния път, по който човек трябва да мине, за да стигне до една от тези професии.
- Ще разкажем какво ни чака и ще настроим Python и Python IDLE, който ще използваме през първия месец за писане на код.
- Започваме със основите - Как да говорим на компютъра на език, близък до английския? Как да даваме определени команди и как да сме сигурни, че компютъра ни разбира.
print
ще стане нашият нов най-добър приятел в света на Python. - Основен синтаксис на Python - променливи и изрази с променливи. Каква е разликата между 1 ред код и 10 реда код? Какво наричаме програма?
- Какво е оператор, какво са операнди и защо ги използваме още от първи клас в часовете по математика, без да знаем?
- Как програмата ни взима решения? Истина, Лъжа. Синтаксис на
if / elif / else
конструкция. - Оператори за работа с Истини и Лъжи. Истини в таблици или Таблица на истините. Ще комбинираме
True
иFalse
и ще получаваме различни резултати. - Писане на текст в компютърна програма - работа с низове и различни оператори за тях.
- Основните типове в Python или как Python прави разлика между число, низ, истина или лъжа?
- Ще решаваме задачи с всичко научено до тук.
- Ще завършим с една Zen Философска лекция, свързана с данните, входно-изходни операции и как нашата програма взима данни, обработва ги и праща на някъде другаде.
- Ще видим как може да представим колекция от типовете, които видяхме до сега. Много числа? Много низове? Много истини или пък много лъжи? Ще се запознаем с концепцията за списъци и колекции от неща.
- За да работим добре със списъци, ще се запознаем със синтаксиса на
for
цикъла в Python и ще видим как да го използваме, за да не повтаряме дадена работа много пъти. - Започваме с дискрентата математика - множества и операции с множества. Какво представлява едно множество и какво може да правим с него? Ще се занимаваме със сечения, обединения, разлики на множества.
- Как може да представим тези множества в Python с инструментите, които имаме до момента? Ще използваме списъци, за да направиш същите операции, които направихме на хартия с множествата от предната тема.
- Ако има Кралица в света на програмирането, то функцията би била много добър кандидат за титлата. Ще погледнем функциите през погледа на дискретната математика и ще решаваме интересни задачи с тях.
- Ще се запознаем с функциите в Python - синтаксис и смисъл от тях. Ще започнем да правим разлика между print и return
- Следват релациите, погледни отново през Дискретната Математика. Ще порешаваме интересни неща с тях и ще видим какъв дълбок смисъл може да намерим в релациите. Ще видим какво става като вземем множество от цели числа и релациите
<
,>
,<=
,>=
межу две числа. - Ще се запознаем с абстрактния проблем, който много често се решава в програмирането - сортиране на поредица от нещa. Ще си поговорим за числа и низове като за начало.
- Ще вдигнем нивото на абстракция и ще си говорим за модули в Python. Ще видим как изграждаме абстракция чрез функции и как изграждаме абстракция чрез модули. Ще вникнем в техния смисъл и причината за тяхното съществуване и използване.
- Ще си поговорим за входно/изходи операции и ще се запознаем с термина
I/O
(Input-Output). Ще видим как имаме I/O на ниво функция, на ниво модул и на ниво програма. - Ще се запознаем с концепцията за файл и файлова система. Ще се преместим от средата Python IDLE към текстовия редактор Sublime.
- Ще порешаваме задачи с файлове, илюстрирайки концепцията за I/O.
- Ще си поговорим отново за типове и типови преобразувания. Ще видим разликата между Implicit и Explicit Type Casting и какво мисли Python по въпроса.
- Като за финал, ще решаваме задачи с наученото досега.
- Ще се запознаем с речниците -
{}
- в Python, като средство, чрез което може да пазим данни под формата на таблица, където ключът е низ. Ще видим как може да добавяме, премахваме и обхождаме стойности в един речник. - Ще си поговорим за оперативна памет и твърд диск. Къде се пазят данните ни и какво се случва в тях? Как преобразуваме данните от един вид в друг вид? Ще се запознаем с термините Сериализация и Десериализация.
- Ще си поговорим за абстракция на ниво данни. Ще кажем какво представлява понятието Структури от данни. Ще направим разлика между Интерфейс и Реализация
- Ще се запознаем с още една абстракна задача за решаване - Търсене на игла в купа сено. Как решаваме този проблем? Двоично търсене и Линейно търсене като вид алгоритъм за решаване на абстракния проблем за търсенето.
- Ще комбинираме абстракция проблем за сортиране с абстракния проблем за търсене и ще решим задачи, включващи и двете неща.
- Ще си поговорим за стил на писане на код и защо е важно да пишем така, че ние да го разчитаме. PEP8
- До края на месеца ще решаваме много задачи с наученото досега.
- Ще завършим с идеята и концепцията зад обектния модел и Обектно Ориентираното Програмиране.
На 19ти Октомври се състоя се демо събитие, по време на Europe Code Week - http://blog.hackbulgaria.com/demo-for-programming-0-code-eu/
Може да разгледате материалите от него в тази папка:
- В
setup.md
има информация за инсталация на Python и Sublime - В
problems.md
има задачи за решаване - В
summary.md
има обобщение на целия ден - Има и качени решения