Подробен конспект за Програмиране 101

Стартът на първия курс наближава!

След няколко итерации успяхме да синтезираме програмата за курса по Програмиране 101.

Оказа се толкова интересна, че ни се прииска да се запишем, вместо да преподаваме и помагаме. Ама съдба!

Следващата снимка показва разбивката на всички часове по седмици (За феновете на снимки от скицници, могат да погледнат тук.)

Конспект по програмиране 101

Един ред представлява една седмица, а 3те елемента в едната седмица са 3те занятия по 4 часа, през които ще се виждаме.

Ето и подробностите за всяко едно занятие:

Седмица 1

Езици за програмиране

Започваме с най-базово нещо за един програмист - езиците за програмиране. Ще ги разпределим в различни групи и ще кажем всяка с какво се отличава.

Когато човек знае за компилация, интерпретация и виртуални машини, много по-лесно хваща концепциите на нов език за програмиране.

Shell Scripting + Компилиране и Интерпретиране

Тъй като ще работим основно на Линукс, ще се запознаем с основните компанди, които се пишат в Shell-a, както и ще напишем няколко прости Bash script-а.

Ще се упражняваме върху това да компилираме и интерпретираме програми, написани на различни езици (Които не е задължително да знаем), под формата на интересна игра, където ще събираме Output :)

Целта е да покажем, че дори и да не знаем език, може да се оправим с него на ниво компилация / интерпретаиця.

Основени инструменти за работа. Редактор + Python

За текстови редактор ще използваме Sublime.

Ще покажем основна конфигурация на Sublime, както и основния инструментариум, с който ще боравим при работа с Python - интерпретатор и pip.

Ще започнем да решаваме прости Python–ски задачи, за да наберем скорост.

Седмица 2

Unit Testing с Python

Unit Testing-a е като ходенето.
По-добре да се научиш, когато си на годинка, вместо когато станеш на 10!

За това ще покажем какво представлява тестването и как да го правим с Python, за да може да тестваме всички програми, които пишем в последствие.

Тук ще трябват знания по Обекто Ориентирано програмиране, които ще набавим в движение :)

Git Yourself 1 (Основи на Git)

Започваме да боравим с Git и Github, за да намери нашият код пристан!

Source Control Системите са неизменна част от ежедневието на програмиста, за това ще се погрижим да се запознаем с тях от рано.

Работа с чужд код 1 - clone & test

Работата с чужд код е нещо, което много често се случва в реалния свят. За това ще се случва и често при нас :)

Ние ще връчим проекти, вече написани (Чужд код) и основната ни задача ще бъде, да ги вземем от Github и да напишем тестове за тях!

И ако се намерят бъгове, да ги отстраним.

Седмица 3

Работа с чужд код 2 - добавяне на нова функционалност

След като сме свикнали да навигираме в чужд код, ще започнем да добавяме нова функционалност към него. И разбира се, ще я тестваме :)

Git Yourself 2 (Git & Github multiplayer)

След като сме се запознали с базовата Git функционалност, която ни помага да работим сами, ще се запознаем и с методите на Git и Github, за работа в екип.

Ще се запознаем с Merging, Branching, Rebasing, Pull Requests, както и с методологии за работа в екип, използвайки Git.

Работа с чужд код 3 - работа в екип по нова функционалност

И след като знаем как да използваме наличните ни инструменти, за да работим в екип, __ще добавяме нова функционалност към чужд код - екипно.

Седмица 4

Работа в екип. Инструменти и процеси. Code Reviews & Pair Programming.

Едно от занятията, което ще бъде повече към дискусия и лекция.

Тук ще си говорим на по-високо ниво за това как се работи с други хора ( В програмирането, това е неизменна част от играта).

Какви са наличните инструменти и какви процеси се използват в реалния свят?

Ще покажем Code Review & Pair Programming като концепции.

Bug Tracking системи & Документация на код.

Когато даден софтуерен продукт започне да се използва, често се появяват бъгове. И често се присъединяват нови хора към екипа.

Тук ще отговорим на следните въпроси:

  • Как се поддържа един софтуерен продукт?
  • Как следим всички бъове, които се случват в него?
  • Как присъединяваме нов човек в екип по вече съществуващ продукт ?
  • Как документираме кода?

Ще покажем различни инструменти и похвати, така че да се оправим, независимо от технологиите, които използваме.

Shell & Bash Scripting 2

Тук ще разширим познанията си по Shell-а и Bash Script–овете.

С тези налични умения, ще може да автоматизираме много процеси, което ни спестява време и досадна повтаряща се работа.

Седмица 5

Качествен програмен код. Принципи.

Качествения програмен код е като секса в училище. Много хора говорят за него, но малко хора са го правили (писали).

За това ще си поговорим за основните принципи и защо същетвува такова понятие като "Качествен Код"

Ще покажем качествен и некачествен код.

И ще завършим с това, че в крайна сметка, всичко е субективно.

Testing, Building & Deploying. По-голямата картина.

След като сме се написали на Unit тестове, ще погледнем по-голямата картина на процеса по цялостно тестване на даден софтуерен продукт, неговото build–ване и в крайна сметка, deploy-ване.

Това е един цикъл, през който минават голяма част от приложенията, които пишем.

Ще си говорим за:

  • Интеграционно и Системно тестване.
  • Какво означава TDD и BDD?
  • Какво е build? Ще разгледаме Travis.
  • Development vs. Production среда.

Редактори & IDEs. По-голямата картина.

Програмистът пише код, който в крайна сметка представлява текст.

Ще погледнем работата на програмиста от гледната точка на : създаване и редактиране на текст.

Ще си поговорим за разликата между текстови редактори (vim, emacs, sublime и други) и Integrated Development Environments (Eclipse, Visual Studio и други).

Седмица 6

Софтуерни библиотеки. Package Managers. pip

Топлата вода и колелото са открити.

Същото важи и за голяма част от Софтуерните библиотеки, които могат да ни спестят време и да направят кода, който пишем, по-добър.

Ще се върнем отново на pip (Python Package Manager) и ще си поговорим за пакетните мениджъри като цяло - защо съществуват и къде ги има?

Също така, ще разгледаме често срещани библиотеки, които се използват ежедневно.

Писане на код по проект

Започваме писане на код, в екипи, по по-големи проект - зададени от нас или измислени от вас.

Разполагаме с време за разработка, в което ние ще помагаме!

Писане на код по проект

Започваме писане на код, в екипи, по по-големи проект - зададени от нас или измислени от вас.

Разполагаме с време за разработка, в което ние ще помагаме!

Писане на код по проект

Започваме писане на код, в екипи, по по-големи проект - зададени от нас или измислени от вас.

Разполагаме с време за разработка, в което ние ще помагаме!

Седмица 7 и 8

Писане на код по проект

Започваме писане на код, в екипи, по по-големи проект - зададени от нас или измислени от вас.

Разполагаме с време за разработка, в което ние ще помагаме!

Като за финал

Това е draft на конспекта за Програмиране 101, който на нас ни харесва много!

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

Разбира се, ще се радваме да чуем и вашите мнения и предложения за изложения по-горе материал!

Регистрацията за Програмиране 101 е отворена до 27.01.2014 и може да кандидатствате тук.



comments powered by Disqus