Основы программирования и компьютерных наук — бесплатный курс

Основы программирования

Это самоучитель программирования с нуля для начинающих

Для того, чтобы научиться программированию в целом — необходимо понимать основы программирования. Этот открытый мини-курс создавался в помочь всем, кто толко начал разбираться в программировании

Длительность: 8 недель
Формат обучения: онлайн (практические задания, самостоятельная работа)
Уровень: для начинающих
Нагрузка: 10-15 часов в неделю

Модуль 1: Введение в программирование и алгоритмическое мышление (1 неделя)

Темы:

  • Что такое программирование и области его применения
  • Алгоритмы: определение, свойства, способы записи
  • Базовые алгоритмические конструкции (ветвления, циклы)
  • Псевдокод и блок-схемы
  • Оценка сложности алгоритмов (Big O)

Практика:

  • Составление алгоритмов для решения простых задач
  • Анализ готовых алгоритмов и оценка их эффективности
  • Создание первой программы

Модуль 2: Базовые структуры данных (1 неделя)

Темы:

  • Понятие структур данных и их классификация
  • Массивы и их особенности (одномерные и многомерные)
  • Связные списки (односвязные и двусвязные)
  • Операции над базовыми структурами данных
  • Практические задачи с использованием массивов и списков

Практика:

  • Решение задач с использованием массивов
  • Реализация базовых операций со связными списками
  • Сравнение производительности различных структур данных

Модуль 3: Продвинутые структуры данных (1 неделя)

Темы:

  • Стеки и очереди: принципы работы и области применения
  • Деревья: основные понятия, виды, обходы
  • Бинарные деревья поиска
  • Графы: представление в памяти, основные алгоритмы
  • Хеш-таблицы и хеш-функции

Практика:

  • Реализация стека и очереди
  • Решение задач с использованием деревьев
  • Поиск кратчайшего пути в графе
  • Реализация простой хеш-таблицы

Модуль 4: Командная строка и Git (1 неделя)

Темы:

  • Основы работы с командной строкой
  • Базовые команды и утилиты (cd, ls, mkdir, cp, mv)
  • Системы контроля версий: концепция и преимущества
  • Git: основные понятия (репозиторий, коммит, ветка)
  • Базовые операции в Git (init, add, commit, push, pull)

Практика:

  • Работа с файловой системой через командную строку
  • Создание репозитория и первый коммит
  • Работа с ветками и слияние изменений
  • Разрешение конфликтов при слиянии

Модуль 5: Объектно-ориентированное программирование (1 неделя)

Темы:

  • Парадигмы программирования (процедурное, ООП, функциональное)
  • Основные концепции ООП: инкапсуляция, наследование, полиморфизм
  • Классы и объекты: свойства и методы
  • Видимость и области видимости
  • Конструкторы и деструкторы

Практика:

  • Проектирование классов для решения задач
  • Реализация иерархии классов с использованием наследования
  • Демонстрация полиморфизма на практических примерах
  • Моделирование реальных объектов с помощью классов

Модуль 6: Принципы проектирования программного обеспечения (1 неделя)

Темы:

  • SOLID-принципы:
    • S: Принцип единственной ответственности
    • O: Принцип открытости/закрытости
    • L: Принцип подстановки Лисков
    • I: Принцип разделения интерфейса
    • D: Принцип инверсии зависимостей
  • DRY (Don’t Repeat Yourself)
  • KISS (Keep It Simple, Stupid)
  • YAGNI (You Aren’t Gonna Need It)

Практика:

  • Анализ и рефакторинг кода с применением принципов SOLID
  • Выявление и устранение повторяющегося кода (DRY)
  • Упрощение сложных решений (KISS)
  • Код-ревью и обсуждение возможных улучшений

Модуль 7: Основы сетевых технологий (1 неделя)

Темы:

  • Модель OSI и стек протоколов TCP/IP
  • Основные протоколы прикладного уровня (HTTP/HTTPS)
  • Система доменных имен (DNS)
  • Принципы клиент-серверного взаимодействия
  • Основы безопасности в сетях

Практика:

  • Работа с HTTP-запросами через API
  • Использование инструментов для анализа сетевого трафика
  • Настройка простого веб-сервера
  • Разбор структуры HTTP-запросов и ответов

Модуль 8: Итоговый проект (1 неделя)

Темы:

  • Объединение полученных знаний в комплексном проекте
  • Планирование и архитектура проекта
  • Работа с документацией
  • Тестирование и отладка

Практика:

  • Разработка небольшого приложения, использующего:
    • Различные структуры данных
    • Принципы ООП
    • Git для версионирования
    • Сетевое взаимодействие (при необходимости)
  • Презентация проекта и получение обратной связи

Формат занятий:

  • Самостоятельная работа: 4-6 часов в неделю
  • Проверка домашних заданий: по запросу в комментариях под уроками
Поделиться с друзьями
Уроки программирования