1. Введение

1.1. Из чего состоит курс

1.2. План лекции

  1. Операционная система
  2. Редакторы
  3. Системы сборки
  4. Отладка и тестирование
  5. Системы контроля версий
  6. Программирование
  7. Заключение

2. Операционная система

2.1. Основные компоненты ОС

2.2. Объекты ядра ОС

2.3. Linux

$ ls /
bin  boot  dev  etc  home include lib  lib64 proc  root  run  sys  tmp  usr  var

2.4. Жизнь в консоли

2.5. Linux в использовании

3. Редакторы

3.1. Популярные редакторы

3.2. Процесс редактирования

  1. Перемещение по тексту, поиск, скроллинг (view-mode)
  2. Разделение области просмотра/редактирования
  3. Подсветка синтаксиса
  4. Редактирование, замена, удаление, вставка
  5. Поиск-замена
  6. Поддержка пользовательских плагинов
  7. Использование уже готового функционала сторонних программ

3.3. Пример: Vim

4. Системы сборки

4.1. Известные системы сборки

4.2. Makefile

SRC := $(wildcard src/*.cpp)
HDR := $(wildcard include/*.h)
OBJ := $(patsubst src/%.cpp,build/%.o,$(SRC))

%.o: %.cpp
»»»»@g++ -c $< -o $@

lib.a: $(OBJ)
»»»»@ar -c $@ $^

app: main.cpp lib.a
»»»»g++ $^ -o $@

all: app

clean:
»»»»@rm -f $(OBJ) app *.a

4.3. CMake

5. Отладка и тестирование

5.1. Отладка программ

5.2. Тестирование

6. Системы контроля версий

6.1. Разновидности

6.2. Основные понятия VCS

  • Концепция diff-patch
  • Изменения
  • Коммит: изменения + сообщение + автор
  • Ветка разработки
  • Слияние (merge)
  • Конфликты слияния
  • pull, checkout, fetch, push

http://nvie.com/img/centr-decentr@2x.png

7. Программирование

7.1. Программирование на C++

7.2. Документация

7.3. Разработка в команде

8. Заключение

8.1. Бесплатные ссылки

Бесплатные книжки про программирование в целом:

8.2. Лабораторная работа

  1. Заводим аккаунт на github
  2. Возвращаемся на главную страницу проекта и переходим по ссылке с заданиями
  3. Задания можно делать в любом порядке