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

Софтуерно инженерство: C#

Курсът е един за четирите езика, а кодът тук е на C#. Всеки модул казва кои уроци от езика трябва да знаеш преди него.

Модул 0

Добре дошъл

1 урок · какво учи курсът и какво трябва да знаеш

  1. Добре дошъл

Модул 1

Шаблони за дизайн

14 урока · Strategy, Observer, Builder, State…

  1. Защо шаблони
  2. Strategy
  3. Observer
  4. Factory Method и Simple Factory
  5. Builder
  6. Singleton и Dependency Injection
  7. Adapter и Facade
  8. Decorator
  9. Composite
  10. Command
  11. State
  12. Template Method и Iterator
  13. Repository
  14. Магазинът: кой шаблон къде

Модул 2

Чист код и refactoring

8 урока · имена, функции, миризми, малки стъпки

  1. Имена в кода
  2. Функции: една работа, малко параметри, без скрити странични ефекти
  3. Коментари, които лъжат, и такива, които помагат
  4. Миризмите: дълъг метод, голям клас, дублиране, примитиви вместо типове, дълга верига if
  5. Тестовете като предпазна мрежа
  6. Refactoring на малки стъпки
  7. SOLID без догма
  8. Упражнение: разхвърлян клас, изчистен стъпка по стъпка

Алгоритми и сложност

Модул 3

Сложност

5 урока · Big-O, време и памет, измерване

  1. Времева сложност: броене на стъпки
  2. Big-O: как расте работата
  3. Най-добър, среден и най-лош случай
  4. Сложност по памет
  5. Амортизирана сложност

Модул 4

Търсене

3 урока · линейно и двоично търсене

  1. Линейно търсене
  2. Двоично търсене
  3. Двоично търсене по отговора

Модул 5

Сортиране

6 урока · insertion, merge, quick, heap, counting

  1. Insertion sort и selection sort
  2. Merge sort и „разделяй и владей“
  3. Quick sort и лошият пивот
  4. Heap и heap sort
  5. Counting sort и radix sort
  6. Стабилно сортиране и вграденият sort

Модул 6

Рекурсия

4 урока · стекът от извиквания, разделяй и владей

  1. Стекът от извиквания отвътре
  2. От рекурсия към цикъл
  3. Бързо степенуване
  4. Разделяй и владей и дървото на рекурсията

Модул 7

Структури от данни

8 урока · масив, списък, hash таблица, дървета, heap

  1. Динамичен масив отвътре
  2. Свързан списък
  3. Стек и опашка
  4. Хеш таблица
  5. Двоично дърво за търсене
  6. Приоритетна опашка
  7. Trie
  8. Union-find

Модул 8

Графи

6 урока · BFS, DFS, Dijkstra, зависимости

  1. Граф: списък от съседи и матрица
  2. BFS: най-малко спирки
  3. DFS: острови и кръгове
  4. Топологично сортиране
  5. Dijkstra
  6. Минимално покриващо дърво

Модул 9

Динамично програмиране

5 урока · запомняне, таблица, раница

  1. Припокриващи се подзадачи
  2. Задачата за монетите
  3. Задачата за раницата
  4. Най-дълга обща подредица и diff
  5. Как да разпознаеш DP задача

Модул 10

Алчни алгоритми

2 урока · кога работят и кога лъжат

  1. Алчният алгоритъм и кога работи
  2. Кога алчният алгоритъм греши

Модул 11

Техники за задачи

4 урока · два указателя, плъзгащ прозорец, префиксни суми

  1. Два указателя
  2. Плъзгащ прозорец
  3. Префиксни суми
  4. Хеш таблица като брояч

Модул 12

Проект: навигация в града

1 урок · картата като граф, BFS, Dijkstra

  1. Навигация в града

Модул 13

Нишки и race conditions

9 урока · заключване, deadlock, async

  1. Защо нишки
  2. Race condition
  3. Заключване
  4. Атомарни операции и неизменими обекти
  5. Deadlock
  6. Производител и потребител
  7. Пул от нишки и задачи
  8. async не е нишка
  9. Как се тества конкурентен код

Модул 14

Сигурност за програмисти

9 урока · недоверен вход, пароли, сесии, токени, тайни

  1. Недоверен вход
  2. Инжекции: когато данните станат команда
  3. XSS: чужд скрипт в твоята страница
  4. Пароли
  5. Сесии, бисквитки и CSRF
  6. JWT и капаните му
  7. Тайни в кода и в git
  8. Зависимостите: чужд код, който пуска твоят
  9. Криптографията, която не пишеш сам

Модул 15

Софтуерни архитектури

9 урока · слоеве, модули, събития, API, кеш, мащабиране

  1. Слоеве
  2. Hexagonal и clean architecture
  3. Монолит, модулен монолит, услуги
  4. Събития и опашки
  5. Transactional outbox
  6. Дизайн на API: договор, версии, повторени заявки
  7. Кеш
  8. Мащабиране
  9. ADR: записани архитектурни решения

Модул 16

Архитектът в работа

9 урока · NFR, компромиси, интеграция, миграции, преглед

  1. Нефункционални изисквания, които се мерят
  2. Компромиси
  3. Когато съседът е бавен: timeout, retry, circuit breaker
  4. Транзакция през няколко услуги (saga)
  5. Интеграция със стари и чужди системи
  6. Смяна на жива система (strangler fig, expand–contract)
  7. Архитектурен преглед
  8. Enterprise ландшафт и капабилитита
  9. Твоята първа архитектурна задача

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