Към съдържанието
wannacode

Добре дошъл

Накратко: Курсът „Софтуерно инженерство“ учи как се пише код, който понася промени: шаблони за дизайн, чист код, алгоритми, нишки, сигурност и софтуерна архитектура.

Проблем

Знаеш езика. И пак не стига

Програмата върви. После поръчките стават милион и тя чака минута. Колега добавя нов начин на плащане и чупи три други места. Броячът на посещенията понякога е с няколко по-малко, без никой да е пипал кода. Някой влиза в акаунт, който не е негов, с една кавичка в полето за име.

Нито едно от тези неща не е грешка в синтаксиса. Компилаторът няма да ги хване. Те идват от това как е подредена програмата и какво прави с данните, и са едни и същи на Java, C#, Python и JavaScript.

Идеята

Какво учиш

  • Шаблони за дизайн. Решения на задачи, които се повтарят във всеки проект: как да добавиш нов начин на плащане, без да пипаш старите. И кога шаблонът е излишен.
  • Чист код и refactoring. Как се чете чужд код, как се разбира защо е труден за промяна и как се подобрява на малки стъпки, без да се счупи.
  • Алгоритми и сложност. Това е най-големият модул, с подмодули: сложност, търсене, сортиране, рекурсия, структури от данни, графи, динамично програмиране, алчни алгоритми, техники и накрая проект.
  • Нишки и race conditions. Защо две нишки губят увеличения на брояча и как се пазят данните.
  • Сигурност за програмисти. Недоверен вход, пароли, сесии и CSRF, токени, тайни, зависимости и случайни числа.
  • Софтуерни архитектури. Как се подрежда цяла система: слоеве, модули и услуги, събития, API, кеш, мащабиране, и как се записва защо е избрано едно, а не друго.
  • Архитектът в работа. Допълнение за solution и enterprise архитекти: от нуждата на бизнеса до измерими изисквания, варианти с цена, решение и миграция без спиране.

Идеята

Как се учи тук

Всеки урок започва от проблем в истински код, като този на първата карта. После идеята се показва със сцена, синхронизирана с кода ред по ред: как се движат обектите, как расте броят стъпки, как се преплитат нишките. Следват задачки и тест.

Текстът е един за четирите езика. Кодът е на езика, който избереш с „Код на:“ над урока, и можеш да го смениш по всяко време. Всяка програма в курса е пусната и проверена.

Идеята

Какво трябва да знаеш

От езика ти трябват поне модулите „Класове и обекти“ и „Колекции“. За нишките трябва и „Програми в истинския свят“. Всеки модул казва в началото си кои уроци от езика ползва.

Ако ти липсва нещо, картата на курса е на Java.

Тест

Провери се

1. Програмата дава верен отговор, но при десет пъти повече данни чака сто пъти повече. Кой модул е за това?
2. Защо курсът е отделен от езиците?

Създаден от Иво Гергов като част от кампанията на Evo Tech за достъпно обучение по програмиране ·