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

Добре дошъл

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

Проблем

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

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

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

Идеята

Какво учиш

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

Идеята

Как се учи тук

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

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

Идеята

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

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

Ако ти липсва нещо, картата на курса е на C#. Модулът „Програми в истинския свят“ (тестове, нишки) още се пише за C#. Дотогава модулът за нишките тук ще има код на C#, но основите на нишките засега ще трябва да вземеш от урока на друг език.

Тест

Провери се

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

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