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

Кирилл Мокевнин

Hexlet Ltd.

Знакомство с миром программирования и популярнейшим языком JavaScript. Этот курс рассчитан на новичков без опыта в программировании. На протяжении десятков уроков вы познакомитесь с фундаментальными понятиями и концепциями программирования, научитесь писать простые программы, понимать ошибки, которые возникают при запуске и выполнении кода, получите опыт работы с модулями в JavaScript и получите необходимую базу для движения к следующим курсам учебной программы «Профессия JavaScript-программист».

Syllabus

1. Введение
Цель: Познакомиться с курсом и программой обучения. Изучить не только содержание курса, но и понять мотивацию при изучении: зачем мы будем изучать те или иные аспекты программирования в целом и языка JavaScript в частности, почему эти аспекты важны.

2. Идеальная программа
Цель: Посмотреть на гипотетическую идеальную программу чтобы лучше понимать к чему стремиться при написании кода. Познакомиться с важными понятиями декларативного и императивного описания кода и взглянуть на языки программирования через призму такой классификации. Ответить на вопрос «для кого пишется код?»

3. Первая программа
Цель: Познакомиться со средой для написания простых программ, написать и запустить свою первую программу на языке JavaScript. Привыкнуть к процессу и поэкспериментировать с программным кодом.

4. Арифметика
Цель: Рассмотреть арифметические операции в языке программирования. Научиться использовать их для выполнения простых математических вычислений в своих программах и выяснить некоторые важные детали, касающиеся приоритета выполнения операций.

5. Числа
Цель: Рассмотреть неочевидности и сложности, связанные с работой с числами в языке программирования JavaScript. Узнать ответ на вопрос «что происходит при делении на ноль?» и «что будет, если работать с бесконечностью?». Изучить причины, по которым числа в компьютерах представлены тем или иным образом.

6. Структура
Цель: Познакомиться со строительными блоками — инструкциями в языке JavaScript и рассмотреть структуру программ. Понять, чем по сути является любая программа (на любом языке), и каким образом происходит последовательное выполнение каждой строчки кода.

7. Онлайн-среда Хекслета
Цель: Познакомиться с онлайн-средой для выполнения практических упражнений на Хекслете. Научиться правильно читать задания, отправлять ваши решения на автоматическую проверку и читать сообщения об ошибках.

8. Константы
Цель: Изучить понятие константы и научиться использовать константы для повышения модульности в программах. Рассмотреть пример использования константы для упрощения процесса вычисления и понять как работает константа в языке программирования JavaScript.

9. Функции
Цель: Изучить главный «строительный блок» программирования — функции. Рассмотреть пример где уместно написание и использование функции. Познакомиться с понятием «абстракции» с помощью функций. Понять структуру функции, как она создается и используется в коде, и что такое возврат функции и аргументы.

10. Выражения
Цель: Познакомиться с понятием «выражение», которое уже использовалось в ранних уроках. Понять очень важную концепцию вычисления в значение и использовать это понимание для чтения и написания кода. Изучить отличие выражений от инструкций, что позволит понимать происходящее в коде.

11. Модули
Цель: Изучить проблематику использования одинаковых имен для констант, функций и других идентификаторов в программах, и рассмотреть способ решения проблем с помощью модулей.

12. Математика
Цель: Рассмотреть несколько стандартных констант и функций, помогающих выполнять математические операции вроде возведения в степень или округления чисел.

13. Булева алгебра
Цель: Рассмотреть случай, когда кроме простых арифметических конструкций есть необходимость оперировать чем-то, что может быть «правдой» или «неправдой», научиться строить условия в программе.

14. Условие с if
Цель: Использовать понимание булевой алгебры для знакомства с конструкцией if, которая позволяет выполнять разный код в зависимости от того, является ли выражение истинным или ложным. Научиться записывать код с условиями в полной и краткой форме.

15. Ошибки и отладка
Цель: Разобраться с тем, какие бывают ошибки в процессе разработки, и научиться правильно реагировать на них, понимать и находить причины их появления.

16. Автоматические тесты и модульное тестирование
Цель: Понять каким образом можно справляться с логическими ошибками в коде используя автоматическое тестирование собственного кода. Познакомиться с одним из видов такого тестирования — модульным тестированием, и написать свои первые тесты.

17. Рекурсивный процесс
Цель: Рассмотреть необходимость повторного выполнения кода, и написать программу для вычисления факториала числа, следуя простой математической рекуррентной формуле.

18. Итеративный процесс
Цель: Рассмотреть понятие итеративного процесса, а также понять, что такое «состояние программы», и почему это понятие может быть важным в контексте программирования.

19. Цикл while и переменные
Цель: Понять, в какой парадигме мы изучали основы программирования до текущего урока, понять отличие декларативной парадигмы от императивной. Познакомиться с циклами и переменными.

20. Отладочная печать
Цель: Научиться решать проблемы с неработающим кодом используя метод отладки под названием «отладочная печать». Рассмотреть типичные проблемы с кодом, понять, как их обнаружить, проверить и исправить.

21. Мутаторы
Цель: Познакомиться со специальными конструкциями, упрощающими изменение переменных в языке JavaScript.

22. Цикл for
Цель: Изучить альтернативу конструкции while — цикл for.

23. Строки и работа со строками
Цель: Узнать что такое строка в программировании, для чего используются строки и почему они важны. Научиться работать со строками и манипулировать ими.

24. Значение null
Цель: Узнать о специальном типе и значении null и его семантическом смысле. Понять отличие null от undefined.

25. Switch
Цель: Рассмотреть частный случай условия if и специальную конструкцию switch, позволяющую проще и удобнее работать с подобными условиями.

26. Окружение
Цель: Изучить очень важную тему, актуальную для программирования на любом языке — окружение.

27. Функции и побочные эффекты
Цель: Рассмотреть некоторые свойства функций, о которых важно задумываться при построении программы и ее анализе. Узнать о детерминированности функции, побочных эффектах и чистых функциях.

28. Типы данных
Цель: Познакомиться поближе с понятием "тип данных", рассмотреть примитивные типы данных в JavaScript. Понять отличие динамической типизации от статической, и изучить плюсы и минусы, которые возникают при использовании того или иного подхода, а главное — понять проблемы, которые помогает решить система типов.

key words, tags

программирование, разработка программного обеспечения, javascript


Course properties

Competition track
Science and engineering
Form of education
Nonformal
Formal education level
High school
Recommended age for informal learning
19-25
Learning language
Russian
Discipline
Software and applications development and analysis
Course authors
Кирилл Мокевнин
Author’s characterization
Кирилл Мокевнин. Со-основатель и технический директор образовательного проекта Hexlet. Со-организатор конференции Nastachku.ru. В прошлом руководил филиалом undev.ru в Ульяновске, а до этого работал в Qik (Skype). Создает инженерную культуру в компаниях и несет в массы XP, DDD и DevOps. Евангелист ментального программирования.
Organization
Hexlet Ltd.
Organization characterization
Hexlet Ltd. (Финляндия) https://hexlet.io info@hexlet.io
Knowledge level entrance requirements
Школьный уровень математики
Career list corresponds to course
Программирование
Entrance test
Groups formation by readiness level
Teachers presence
Tutors presence
Facilitators presence
Training materials forms
texts, video lecture, synchronous video, quiz questions, professional software access
Interactivity in training materials
Collaborative learning presence
Practical activities
project, labs
Discussions, forums presence
Webinars, video conferences presence
meetup presence
LMS integration
Learning Analytics
Certification presence
Course time limits
Learning types (sync/async)
asynchronous
Assessment types
test
Personal learning path possibility, course individualization
Operating System
Любые
Supported browsers
Chrome, Firefox, Safari, Edge, Opera
Learner’s devices
Десктоп
Special needs support

Comments