25 бесплатных онлайн-курсов программирования — Лайфхакер
Java
Java Programming For Complete Beginners
Объём: 11 модулей, 3–4 часа.
Площадка: Alison.
Организатор: ClayDesk E‑Learning.
Язык: английский.
Вводный курс по Java, рассчитанный на новичков без опыта в программировании. Содержит материалы, которые помогут освоить основы языка, и практические задания для закрепления навыков в написании простых программ.
Пройти курс →
Learn to Program in Java
Объём: 4 недели, 6–10 часов в неделю.
Площадка: edX.
Организатор: Microsoft.
Язык: английский.
Начальный курс для всех, хочет изучить язык программирования Java и стать разработчиком. Процесс построен таким образом, что слушатели научатся не только писать код, но и решать проблемы, с которыми неизбежно придётся столкнуться при создании приложений.
Пройти курс →
Java. Быстрый старт
Площадка: GeekBrains.
Организатор: GeekBrains.
Язык: русский.
Практический курс по изучению Java на базе разработки небольшого проекта. Студенты научатся основам языка и потренируются в написании простых консольных приложений, а также узнают, как за несколько минут создать игру с графическим интерфейсом без применения сторонних библиотек.
Пройти курс →
Java. Базовый курс
Объём: 23 лекции (5 часов видео).
Площадка: Stepik.
Организатор: Computer Science Center (CS центр).
Язык: русский.
Курс для тех, кто только начинает изучать Java. Лекции содержат материал, охватывающий синтаксис языка, компиляцию программ, основы объектно‑ориентированного программирования и более сложные аспекты Java, а также контрольные вопросы и практические задания.
Пройти курс →
Android. Быстрый старт
Объём: 15 лекций.
Площадка: GeekBrains.
Организатор: GeekBrains.
Язык: русский.
Практический онлайн‑курс для ознакомления с разработкой под Android, требующий базовых знаний Java. В ходе обучения слушатели создадут простую игру, сразу же применяя полученные теоретические знания в деле.
Пройти курс →
JavaScript
JavaScript для начинающих
Объём: 17 лекций, 1–2 часа в неделю.
Организатор: Stepik.
Язык: русский.
Курс по основам разработки на JavaScript, рассчитанный на любой уровень подготовки. Рассматриваются азы программирования на этом языке, а также инструменты и модели данных, которые пригодятся для применения JavaScript на практике.
Пройти курс →
Основы JavaScript
Объём: 24 лекции (7 часов видео).
Площадка: Loftblog.
Организатор: Loftblog.
Язык: русский.
Очень подробный онлайн‑курс, который поможет изучить JavaScript, начиная с самых азов. Слушатели рассмотрят все аспекты популярного языка программирования от простого к сложному и научатся использовать его на реальных примерах.
Пройти курс →
Python
Основы языка Python
Объём: 17 лекций.
Площадка: GeekBrains.
Организатор: GeekBrains.
Язык: русский.
Этот вводный курс подойдёт как начинающим, так и опытным разработчикам, которые хотят познакомиться с Python. На занятиях рассматриваются основы программирования, различные примеры применения языка для решения практических задач и пишутся полноценные программы.
Пройти курс →
Программирование на Python
Объём: 28 лекций, 3–6 часов в неделю.
Организатор: Bioinformatics Institute.
Язык: русский.
Подробный начальный онлайн‑курс для изучения основ Python и базовых аспектов программирования, ориентированный на людей без опыта. Слушатели познакомятся с такими понятиями, как операторы, переменные, списки, условия и циклы. Среди материалов есть обычные упражнения и необязательные задачи повышенной сложности.
Пройти курс →
Python: основы и применение
Объём: 20 лекций, (5 часов видео).
Площадка: Stepik.
Организатор: Bioinformatics Institute.
Язык: русский.
Базовый курс, посвящённый основам Python и программирования в целом. Содержит упражнения для закрепления материала, которые проверяются с указанием ошибок. В заключительной части рассматриваются реальные задачи, с которыми можно столкнуться в разработке, и даются примеры их решения.
Пройти курс →
Интерактивные уроки по Python
Объём: 11 видеолекций.
Площадка: Pythontuts.
Организатор: Кодкамп.
Язык: русский.
Подборка интерактивных уроков для всех, кто хочет освоить Python, независимо от уровня подготовки. Шаг за шагом рассматриваются такие азы, как переменные и циклы, а затем более продвинутые вещи вроде регулярных выражений и инспекции кода.
Пройти курс →
Machine Learning with Python: A Practical Introduction
Объём: 5 недель, 4–6 часов в неделю.
Площадка: edX.
Организатор: IBM.
Язык: английский.
Вводный онлайн‑курс по основам машинного обучения на Python, который познакомит с различными видами моделирования. Слушатели освоят классификацию, кластеризацию и другие популярные алгоритмы, а также подкрепят полученные теоретические знания практическими навыками.
Пройти курс →
C++
Введение в программирование (C++)
Объём: 12 уроков.
Площадка: Stepik.
Организатор: Академия Яндекса, Высшая школа экономики (НИУ ВШЭ).
Язык: русский.
Базовый курс, который познакомит с основами C++ и поможет прибрести опыт, необходимый для более углублённого изучения программирования. Процесс обучения построен на выполнении множества небольших практических задач, охватывающих все основные конструкции языка.
Пройти курс →
Introduction to C++
Объём: 4 недели, 3–5 часов в неделю.Площадка: edX.
Организатор: Microsoft.
Язык: английский.
Краткий вводный курс в C++ от экспертов Microsoft. На занятиях студенты освоят синтаксис и базовые принципы этого языка программирования, научатся создавать функции и подготовятся к изучению более сложных аспектов C++.
Пройти курс →
Основы C++
Объём: 12 лекций (13 часов видео).
Площадка: «Смотри и учись».
Организатор: «Смотри и учись».
Язык: русский.
Рассчитанный на новичков онлайн‑курс, который посвящён основам языка C++. Охватывает базовые элементы и азы объектно‑ориентированного программирования с примерами и заданиями. Заключительная часть отводится практическому применению полученных навыков.
Пройти курс →
Программирование на языке C++
Объём: 41 урок (10 часов видео).
Площадка: Stepik.
Организатор: Computer Science Center (CS центр).
Подробный базовый курс по C++, в котором особое внимание уделено основным принципам работы программ и процессу компиляции. Синтаксические конструкции рассматриваются лишь на первой лекции, поэтому слушатели должны быть знакомы с понятиями «переменная», «функция», «цикл».
Пройти курс →
Углублённое программирование на C/C++
Объём: 12 уроков (16 часов видео).
Площадка: Stepik.
Организатор: Mail.ru Group.
Язык: русский.
Ориентированный на начинающих разработчиков онлайн‑курс, который предполагает знание основ C++. Материалы помогут приобрести навыки создания программ средней сложности и типовых шаблонов объектно‑ориентированного программирования. Также рассматриваются ключевые аспекты работы с памятью, асинхронные вычисления и диалекты.
Пройти курс →
C++ Programming — Advanced Features
Объём: 5 модулей, 2–3 часа.
Площадка: Alison.
Организатор: Microsoft.
Язык: английский.
Более сложный онлайн‑курс, в котором студенты научатся создавать быстрые программы, используя продвинутые возможности C++. Всего за несколько часов лекторы объяснят ключевые расширенные функции этого языка, которые будут закреплены практическими занятиями.
Пройти курс →
Objective‑C
Become an iOS Developer from Scratch
Объём: 98 лекций (8 часов видео).
Площадка:
Организатор: Udemy.
Язык: английский.
Обширный и детальный курс, который является пошаговым руководством для всех, кто хочет с нуля освоить Objective‑C и научиться создавать программы для iPhone. В ходе обучения слушатели ознакомятся с пакетом iOS SDK и, применяя доступные инструменты, напишут своё первое полнофункциональное приложение.
Пройти курс →
Swift
Swift 5: Основы
Объём: 78 лекций (13 часов видео).
Площадка: Udemy.
Организатор: Udemy.
Язык: русский.
Очень подробный онлайн‑курс, который подойдёт для новичков без каких‑либо предварительных знаний. В материалы включены основы теории программирования, переменные и константы, циклы и условные конструкции, а также объектно- и протокол‑ориентированное программирование.
Пройти курс →
Intro to iOS App Development with Swift
Объём: 5 лекций, примерно 1 месяц.
Площадка: Udacity.
Организатор: Udacity.
Язык: английский.
Практический онлайн‑курс для тех, кто уже владеет основами, который познакомит с разработкой под iOS на Swift. Слушатели изучат все нюансы этого языка программирования и создадут забавное приложение, искажающее голос (звучит как у бурундука или Дарта Вейдера).
Пройти курс →
Веб‑разработка
Веб‑разработка. Быстрый старт
Объём: 13 лекций.
Площадка: Geekbrains.
Организатор: Geekbrains.
Язык: русский.
Комбинированный курс для тех, кто хочет научиться создавать функциональные сайты с нуля. Слушатели познакомятся с основами HTML и CSS, получат начальные навыки веб‑разработки на PHP, а также освоят логику работы с этим языком, его терминологию и принципы функционирования.
Пройти курс →
Основы SQL для начинающих
Объём: 5 лекций (1,5 часа видео).
Площадка: Loftblog.
Организатор: Loftblog.
Язык: русский.
Вводный онлайн‑курс, который откроет основы SQL. На лекциях слушатели узнают, что такое системы управления базами данных, и научатся использовать SQLite, MySQL и другие необходимые для работы инструменты.
Пройти курс →
PHP базовый курс
Объём: 10 лекций (14 часов видео).
Площадка: «Смотри и учись».
Организатор: «Смотри и учись».
Язык: русский.
Подробный онлайн‑курс для всех желающих освоить веб‑программирование с нуля. На занятиях рассматриваются базовые принципы языка и проблемы, с которыми придётся столкнуться. После завершения программы студенты смогут самостоятельно делать несложные сайты.
Пройти курс →
Beginner PHP and MySQL Tutorial
Объём: 156 лекций (10 часов видео).
Площадка: Udemy.
Организатор: Udemy.
Язык: английский/русский.
Объёмный курс для начинающих программистов, охватывающий все аспекты PHP и MySQL. Обучение построено таким образом, что по окончании занятий можно смело браться за разработку функциональных веб‑приложений.
Пройти курс →
Читайте также 🖥⌨📝
lifehacker.ru
Учебный язык программирования — Википедия
Уче́бный язы́к программи́рования — язык программирования, предназначенный для обучения. В качестве таковых разрабатывались такие языки как BASIC[1] и Паскаль[2]. Из разработанного для обучения языка ABC вырос Python[3]. Популярным языком, разработанным специально для образования является LOGO[4]. Специально для российских школ разработана языковая среда КуМир[5]. Набирает популярность созданный в Массачусетском технологическом институте язык визуального программирования Scratch и тому подобные среды программирования[6].
Требования к учебному языку программирования[править | править код]
Учебный язык должен обеспечивать простоту, ясность и удобочитаемость конструкций. Излишняя гибкость, «вседозволенность» синтаксиса может затруднить понимание программ. Не слишком хорошо подходят для обучения языки, поощряющие к использованию различных «программистских трюков»[7]. С этим связаны преимущества использования в образовательном процессе языков семейства Pascal перед Си-подобными языками[8][9].
При выборе языка программирования не играют роль такие факторы, как его новизна, эффективность реализации (в виде компилятора или интерпретатора). Фактор распространённости имеет как психологическое значение (влияя на мотивацию учащихся), так и практическое (востребованность получаемых знаний без необходимости переучивания)[10].
Учебный язык программирования должен обеспечивать плавный переход от псевдокода к собственно программированию. Полезным в обучении может быть возможность использования национальной лексики для ключевых слов и идентификаторов[8].
Альтернативой относительно трудоёмким для изучения комплексным языкам программирования общего назначения могут составить простые миниязыки, в которых, для наглядности, имеется графический исполнитель, вроде черепашки в Лого — первом и одном из самых известных таких языков[11].
BASIC, англ. Beginner’s All-purpose Symbolic Instruction Code — стал в начале 60-х первым, получившем распространение языком программирования для обучения начинающих. Однако он получил резкую критику за несоответствие принципам структурного программирования и лёгкость создания спагетти-кода. Известно высказывание Эдсгера Дейкстры: «Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации». Под влиянием этой критики создатели Бейсика Джон Кемени и Томас Курц в 1975 году расширили язык структурными средствами и отказались от практики использования GOTO. В 1980-х годах они создали обновлённый вариант языка, названный True BASIC[12]. Современные распространённые диалекты Бейсика (QBasic, Visual Basic) отличаются от этого варианта и имеют microsoftовское происхождение, однако и они имеют мало общего с прародителем, являясь вполне современными структурными языками программирования[13]. Специально для целей обучения созданы следующие диалекты Бейсика.
В школьное образование также внедряется «Visual Basic для Linux» Gambas[18]. Доступна бесплатная образовательная экспресс-версия Visual Basic .NET[19].
Языки декларативного программирования[править | править код]
Язык Logo, появившийся на свет между Бейсиком и Паскалем, стал первым языком программирования, изначально предназначенным для обучения детей. Этот язык можно рассматривать как диалект Лиспа — языка, с которого началось функциональное программирование[20]. Хотя этот язык более известен своей черепашьей графикой и рассматривается как первый из графических исполнителей, но такие черты Лиспа, как управление последовательностью действий через рекурсию и списки в качестве основной структуры данных, также остаются свойствами этого (мультипарадигмального по своей сути) языка.
Хотя Пролог — язык, с которого началось логическое программирование, — редко рассматривают как язык начального обучения, он легко осваивается теми, кто только начинает изучать программирование. Этому способствует его ориентированность на человеческое мышление, простой, единообразный синтаксис и отсутствие таких конструкций, как ветвления или циклы[21]. Простота изучения была одной из целей дизайна языка, хотя этот язык остаётся недопонятым. Одна из причин малой распространённости Пролога в начальном обучении — отсутствие в нём удобных средств работы с интерактивной графикой, которая не слишком гладко вписывается в чистое декларативное программирование[22].
Современный «академический» диалект Лиспа — язык Scheme — был изначально ориентирован на образование[23]. Он используется в таком знаменитом курсе компьютерного программирования, как «Структура и интерпретация компьютерных программ». Публикация этой книги не только сделала Scheme популярным языком в университетской среде, но и изменила сам подход к изучению программированию[24]. Этот язык используется также в целом ряде учебников, таких как «How to Design Programs (англ.)русск.»[25], «Programming Languages: Application and Interpretation (англ.)русск.»[26], «Essentials of Programming Languages (англ.)русск.»[27] и др. Обучению программированию с нуля, с использованием Scheme, посвящена и книга Даниэля Фридмана (англ.)русск. «The Little Schemer»[28], впервые изданная под названием «The Little Lisper» в 1974 году и ставшая началом своего рода трилогии. Первая книга, посвящённая языку Racket (прямому потомку Scheme), «Realm of Racket»[29], также представляет собой учебник для детей (впрочем, эта книга одновременно является переработанным вариантом учебника «Land of Lisp»[30], основанного на Common Lisp).
Серьёзным конкурентом различным вариантам Лиспа в университетских курсах функционального программирования стал язык Haskell. Авторы этого языка предназначили его в равной мере для обучения, научных исследоваий и практических приложений[31]. Его отличает то, что он представляет собой чисто функциональный язык программирования, реализующий типизированное лямбда-исчисление, его синтаксис приближён к традиционной математической нотации[32][33].
В 1991 году профессор Лувенского католического университета в Бельгии Герт Смолка начал разработку мультипарадигмального языка Oz. Язык позволяет писать программы в стиле любой из основных распространённых парадигм программирования: как декларативных, таких как логическое и функциональное программирование, так и императивных. Этот язык используется как основа для обучающего курса «Concepts, Techniques, and Models of Computer Programming (англ.)русск.»[34].
Разработанный в качестве развития линии Algol-60 Никлаусом Виртом язык программирования Паскаль автор с самого начала использовал для вводного курса программирования для студентов[2]. Этот язык быстро начал набирать популярность в таком качестве.
Turbo Pascal, Delphi и Free Pascal широко использовались и продолжают использоваться для обучения студентов и школьников. Зародившийся в 2002 году на физфаке МГУ международный научно-образовательный проект «Информатика-21»[35] поставил своей целью внедрение в российское образование системы программирования BlackBox Component Builder[36], реализации Компонентного Паскаля, диалекта Oberon-2 — объектно-ориентированного языка паскаль-семейства, разработанного Виртом. Как и другие языки Никлауса Вирта, он отличается (в том числе от Объектного Паскаля в стиле Borland) минимализмом.
Языки, разработанные для российской школы[править | править код]
Для преподавания элементов программирования в рамках курсов информатики было разработан ряд учебных языков программирования с русскими ключевыми словами[37]. В группе академика А. П. Ершова был выработан подход с изучением двух языков программирования — более простого, предназначенного в основном для управления графическим исполнителем, и более продвинутого универсального. В качестве такой пары были разработаны языки Робик и РАПИРА[13]. Основными российскими образовательными языками являются:
Для начального обучения программированию могут также использоваться простые языки управления графическими исполнителями, такими как Кукарача в системе Роботландия или Кенгурёнок Ру[13].
- ↑ Андрей Колесов. Basic — этапы большого пути Архивная копия от 5 марта 2010 на Wayback Machine (авторский вариант статьи). Опубликована с незначительной литературной правкой в журнале «Наука и жизнь», 2000, № 10. С. 18—20.
- ↑ 1 2 Wirth N. Recollections about the development of Pascal (HOPL II), 3.3
- ↑ Bill Venners. The Making of Python. A Conversation with Guido van Rossum. Part I. 2003, January 13.
- ↑ Язык Лого на сайте «История компьютера»
- ↑ Система программирования КуМир → Учебники
- ↑ Александр Казанцев. Школа. Исполнители и алгоритмы // Linux Format. — январь 2010 г.. — № 126-127 (1).
- ↑ Psychology, 1990, 1. Introduction, p. 176.
- ↑ 1 2 Кобилов С. С. Образовательная информатика: подход к обучению, выбор учебных языков и создание программных систем. — Самаркандский государственный университет.
- ↑ Столяров А. В. Эссе «Язык Си и начальное обучение программированию»
- ↑ Лобачёв А. А., Куликова О. В. Выбор языка для обучения программированию, ИТО-2008.
- ↑ Mini-languages: a way to learn programming principles (неопр.) (недоступная ссылка). Дата обращения 16 апреля 2012. Архивировано 26 марта 2014 года.
- ↑ Дейкстра Эдсгер на сайте «История компьютера»
- ↑ 1 2 3 Леонов А. Г., Первин Ю. А. Роль и место темы «Элементы программирования» в общем школьном информатическом образовании // Компьютерные инструменты в образовании. Информатизация образования. — СПб.: ЦПО, 1999. — № 5. — С. 14-23. Архивировано 9 февраля 2019 года.
- ↑ Джеймс М. Рено. Хотите научиться программировать? = So You Want To Learn to Programm? / Пер. с англ. С. Ирюпина, В. Чёрного. — М.: Альт Линукс, 2011. — 320 с. — ISBN 978-5-905167-06-5.
- ↑ В нём, к примеру, отсутствуют процедуры и функции. Другой, подобный современный диалект — Basic4GL (англ.)русск.
- ↑ David Brin. Why Johnny can’t code // Salon Magazine. — 2006. — № от 14 сентября.
- ↑ Small Basic для начинающих
- ↑ Самарина А. Е. Использование свободного программного обеспечения в образовании Архивная копия от 26 марта 2014 на Wayback Machine (Смоленский государственный университет)
- ↑ Visual Basic Express Edition
- ↑ Сеймур Пейперт (неопр.). История компьютера. Дата обращения 25 марта 2014.
- ↑ Шрайнер П. А. Лекция 1: Введение в язык логического программирования Пролог // Основы программирования на языке Пролог. — ИНТУИТ. — ISBN 978-5-9556-0034-5.
- ↑ Psychology, 1990, 3. The Misconception Problem: Prolog, pp. 186-190.
- ↑ Gerald Jay Sussman and Guy Lewis Steele, Jr. Scheme: An Interpreter for Extended Lambda Calculus. — MIT AI Lab. AI Lab Memo AIM-349. December 1975. [1] from Lambda Papers (англ.)русск.
- ↑ Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi. The Structure and Interpretation of the Computer Science Curriculum // Journal of Functional Programming. — 2004. — Vol. 14. — P. 365. — DOI:10.1017/S0956796804005076.
- ↑ Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi. How to Design Programs. — MIT Press, 2001. — 723 p. — ISBN 9780262062183.
- ↑ Shriram Krishnamurthi. Programming Languages: Application and Interpretation.
- ↑ Daniel P. Friedman, Mitchell Wand. Essentials of Programming Languages. 3rd edition. — MIT Press, 2008. — 432 p. — ISBN 9780262062794.
- ↑ Daniel P. Friedman, Matthias Felleisen. The Little Schemer. — MIT Press, 1996. — ISBN 978-0-262-56099-3.
- ↑ Matthias Felleisen, David Van Horn, Conrad Barski et al. Realm of Racket: Learn to Program, One Game at a Time!. — No Starch Press, 2013. — ISBN 978-1-59327-491-7. Архивная копия от 7 октября 2018 на Wayback Machine
- ↑ Conrad Barski. Land of Lisp: Learn to Program in Lisp, One Game at a Time!. — No Starch Press, October 2010. — 504 p. — ISBN 978-1-59327-281-4.
- ↑ Jones, Simon Peyton. Preface (неопр.). The Haskell 98 report. Haskell 98 working group (2002). Дата обращения 4 апреля 2009.
- ↑ Philip Wadler. Why calculating is better than scheming // ACM SIGPLAN Notices. — 1987. — P. 83—94.
- ↑ Richard Bird. Introduction to Functional Programming using Haskell. 2nd edition. — Prentice Hall, 1998. — P. 66.
- ↑ Peter Van Roy, Seif Haridi. Concepts, Techniques, and Models of Computer Programming. — MIT Press, March 2004. — ISBN 0-262-22069-5.
- ↑ Международный научно-образовательный проект Информатика-21
- ↑ Ткачёв Ф. В. Обучение программированию: российская перспектива // Modular Programming Languages. Lecture Notes in Computer Science 2789. — Springer-Verlag, 2003. — С. 69-77.
- ↑ Городняя Л. В. Школьная информатика // Марчук А. Г. Андрей Петрович Ершов — учёный и человек. — Новосибирск: Изд-во СО РАН, 2006. — 503 с. — (Наука Сибири в лицах). — ISBN 978-5-7692-0819-5.
- ↑ Варсанофьев Д. В., Кушниренко А. Г., Лебедев Г. В. E-практикум — программное обеспечение школьного курса информатики и вычислительной техники // Микропроцессорные средства и системы. — 1985. — № 3. — С. 27—32.
ru.wikipedia.org
Курс «Основы программирования» / Habr
Всем привет. Мы, команда BEEGEEK, запускаем курс по основам программирования. В данной статье расскажу, почему создали такой курс, о его содержании и отвечу на часто задаваемые вопросы.Сразу отмечу, что данный курс не является «идеальным». В нем есть все необходимое для легкого и плавного старта. Жду обратную связь от слушателей, чтобы улучшать наш курс! Итак, поехали!
Проблема
Процесс решения задачи с помощью вычислительной системы состоит из нескольких этапов:
- постановка задачи
- формализация
- алгоритмизация
- программирование
- тестирование
Каждый этап представляет собой целый набор умений, которого нет у начинающих изучение языков программирования. В процессе обучения программированию, т.е. умению реализовать решение задачи на некотором языке программирования, учащимся сложно добраться до этапа программирования, если они не умеют решать задачи вообще. Многочисленные учебные пособия в печатном и электронном виде направлены в первую очередь на описание синтаксиса языка, и не позволяют развить умение решать задачу или записать ее.
С развитием сетевых технологий появилось большое число различных систем автоматической проверки, которые позволяют проверить правильность решения без участия учителя. Однако они ориентированы на учащихся уже готовых написать полную программу, т.е. готовых выполнить все шаги для получения решения, возможно не осознавая их.
Таким образом, люди, начинающие свой путь программиста останавливаются в самом начале, так как не могут перейти от простых упражнений на синтаксис к более профессиональным задачам, требующих целого комплекса умений:
- Умение читать и понимать уже существующий код. Современный разработчик чаще всего работает в команде или продолжает работу своих предшественников, поэтому должен уметь вычленить из существующего кода замысел автора.
- Умение представить как будет работать написанный текст программы. Разработка больших профессиональных приложений может приводить к тому, что скомпилировать код и посмотреть его работоспособность представляется не очень часто, поэтому умение мысленно запустить код на выполнение может сохранить большое число человеко-часов.
- Умение тестировать программу в мысленном режиме, не используя специализированные системы. Именно это умение позволяет еще на этапе написания программы предотвратить многочисленные ошибки. Также, составление трассировочных таблиц помогает выявить ошибку в программе, когда становится ясно, что выходные данные не совпадают с эталонными.
- Умение строить гипотезы неработоспособности кода программы и проверять гипотезу. При обнаружении ошибки в выходных данных программы часто учащиеся пытаются методом случайных изменений текста программы, подогнать решение под верный вывод. “А что если так попробовать” — такой подход свойствен начинающим программистам, не умеющим анализировать совокупность входных и выходных данных.
Решение проблемы
Программа курса на базовом уровне освещает практические основы программирования. В ходе обучения предстоит решить множество небольших и интересных задач, в которых можно потренировать умение читать код, анализировать готовые программы, а также писать самостоятельно программный код.
Такой опыт будет полезен всем, кто хочет углубиться в изучение программирования. Едва ли возможно научиться программировать без практики, поэтому в качестве домашних заданий предлагается довольно много задач.
Содержание курса
Курс состоит из следующих модулей:
- Типы данных. Переменные. В данном модуле научимся вводить и выводить информацию. Познакомимся с понятием «переменная», с помощью которой будем хранить некоторую информацию. Посмотрим какие типы данных существуют, ведь с типом величины связаны три ее свойства: форма внутреннего представления, множество принимаемых значений и множество допустимых операций.
- Условный оператор. В данном модуле научимся пропускать или выполнять некоторый блок кода в зависимости от некоторого условия. Рассмотрим короткую и полную запись условного оператора. Разберем оператор «switch-case«.
- Операторы цикла. Самый большой и важный модуль. В данном модуле разберем цикл со счетчиком for, цикл с предусловием while. Также рассмотрим операторы управления циклом: break, continue. Разберем вложенные циклы, задачи про последовательности, минимаксные задачи, задачи на перебор и задачи на анализ цифр числа.
- Строки и символы. В данном модуле узнаем подробнее про символы, а именно как они представлены в компьютере, какие операции можно производить. Также поговорим про строки и как они связаны с символами.
- Массивы. Большой модуль с большим количеством практических заданий. В данном модуле познакомимся с массивами. Рассмотрим как их объявлять, заполнять, оперировать с элементами массива. Также познакомимся с многомерными массивами, в частности с двумерным массивом.
- Функции. В данном модуле поговорим о том, как структурировать программы. Изучим главный «строительный блок» программирования — функции. Рассмотрим примеры, где уместно написание и использование функции.
Для кого предназначен данный курс?
Курс является вводным и больше всего подойдет слушателям, не имеющим опыта программирования.
На каком языке программирования будет проходить курс?
Курс будет проходить на языке программирования C# (си шарп), однако данный курс не привязывается к одному языку программированию, так как в нем проходят базовые понятия и конструкции, которые включают в себя все современные языки. Решать задачи можно на любом из современных языков программирования.
Где будет проходить курс?
Данный курс будет проходить на образовательной платформе Stepik. Уже сейчас можно записываться на курс.
Что кроме изучения языка программирования будет на курсе?
Кроме изучения языка программирования, затронем базовые алгоритмы поиска, алгоритмы со строками, теорию чисел.
Сколько стоит курс?
Курс будет проходить абсолютно бесплатно!
Записывайтесь на курс! Жду от Вас обратной связи для улучшения курса!
habr.com
Сайт | Направления обучения, языки программирования и технологии | Описание образовательного сайта |
Rsdn.org | Огромная база информации по популярным языкам программирования и ИТ-технологиям (не только в области веба). | На наш взгляд, один из лучших сайтов о программировании. Много учебных материалов, статей, файлов для скачивания, библиотек и другой полезной информации для новичков и специалистов. |
Webformyself.com | HTML, CSS, адаптивная верстка, статьи по CMS (WP, Joomla, DLE, OpenCart, Drupal), JavaScript и Ajax, jQuery, React, Angular, TypeScript, Node.js, PHP, Python, MySQL. | Тематические материалы по веб-разработке и сайтостроению. Много переводных статей. Для просмотра уроков переходите в раздел «Статьи и материалы». Там находятся бесплатные уроки, обучающие верстке и программированию. |
Code-basics.ru | PHP, Python, Java, HTML, CSS, JavaScript, Racket. | Бесплатные практические уроки по программированию для новичков. Обучение ведется на русском языке. |
Нетология | HTML, CSS, JavaScript, React, Django, PHP, Python, SQL, Kotlin, Goland. | Часть курсов доступны бесплатно, часть – платные. Обучение программированию идет на русском языке. Есть курсы для изучения программирования с нуля. |
Coursera.org | HTML, CSS, JavaScript, Angular.js, Java, Python, Ruby, Swift и другие | Курсы на английском и русском языке. Теорию можно проходить бесплатно. Практические задания и тесты платные. |
ИНТУИТ | Web-технологии, мобильные технологии, аппаратное обеспечение, безопасность, базы данных, 1С. | Очень много бесплатных курсов на русском языке. По каждому можно посмотреть отзывы. Обучают дистанционно. |
Code.mu | HTML5, CSS3, JavaScript, jQuery, PHP, MySQL, парсинг сайтов, фреймворки. | Учебники, задачники и справочники по популярным веб-технологиям. Много полезных материалов для изучения программирования для новичков. |
Geekbrains | Веб-разработка (HTML5, CSS3, PHP, Java Script, Node.js, Yii2 Framework), мобильные технологии (iOS, Android), Python, Java, Go-разработка, C, C#, информационная безопасность и другие. Общее число курсов по верстке и программированию – более 120. | Онлайн-школа для обучения программированию. Часть курсов доступна бесплатно (в основном интенсивы для начинающих), часть – платно. Обучение программированию ведется на русском языке. |
Learn.javascript.ru | JavaScript | Бесплатный учебник по JavaScript. Подходит для новичков, которые хотят самостоятельно изучить данный язык программирования. |
Hexlet.io | PHP, Python, JS, Bash | Бесплатно доступно 13 курсов. Практика в браузере. Помощь менторов. Сайт на русском языке. |
Javarush.ru | Java | Сайт обучает программированию на Java в формате игры. Бесплатно доступно два квеста, остальные – по подписке. |
Курс Harvard CS50 на русском языке | Алгоритмы, основные команды Linux, криптография, C, HTML, CSS, протокол TCP/IP и HTTP, JavaScript, Ajax, DOM, язык запросов SQL. | Легендарный курс из Гарварда по основам программирования. Переведен на русский язык. Рекомендуется всем новичкам. |
Яндекс.Практикум | HTML, CSS, JS, Node,js, SQL, Python. | Есть несколько курсов, обучающих профессии веб-разработчика, фронтенд и бэкенд-разработчика. Первые уроки можно пройти бесплатно, остальные – за деньги. |
Pythonworld.ru | Python | Самоучитель по языку программирования Python для начинающих. |
Docs.python.org | Python | Документация по языку программирования Python. На английском языке. |
Htmlbook.ru | HTML, CSS | Популярный онлайн-справочник по HTML и CSS. Незаменим при изучении верстки. |
PHP.net | PHP | Подробный мануал по языку программирования PHP на русском языке. |
PHP.ru | PHP | Справочник по языку программирования PHP. |
Rubycode.ru | Ruby, Ruby on Rails | Статьи по основам Ruby и другие полезные материалы об этой технологии на русском языке. |
Proglib.io | В целом много материалов для программистов. | Библиотека для разработчиков. Также есть тесты для проверки знаний. |
Proglang.su | HTML, CSS, JAVA | На сайте размещены бесплатные онлайн-учебники для изучения верстки (HTML, CSS) и программирования на Java. |
Programbeginner.ru | Системное администрирование, C#, C++, Ruby, программирование в 1С. | Сайт о программировании. Курсов нет, но можно посмотреть статьи и отдельные уроки. |
Swiftbook.ru | Swift | Обучение созданию приложений на Swift. Бесплатно доступен курс по основам. |
Toster.ru | В целом про ИТ. | На сайте можно задать интересующие вопросы, касающиеся изучения программирования, и получить ответы от практиков. |
www.kadrof.ru
почему обучение программированию нужно начинать с функционального языка / Hexlet corporate blog / Habr
Недавний перевод статьи «Пора заменить Python как язык для обучения» спровоцировал большую дискуссию. Очевидно, что программисты считают эту тему очень важной. К сожалению, большинство споров были об императивных языках, и мало кто предлагал функциональные языки в качестве инструмента обучения программированию.
Мы в Хекслете недавно запустили новую версию, ключевой особенностью которой стали практические упражнения по программированию в браузере. В связи с этим мы стали получать еще больше писем от начинающих программистов с вопросами вроде «с чего начать». С одной стороны, они хотят выложить бета-версию приложения в app store через неделю. С другой стороны, мы понимаем, что за такой короткий срок, наверное, можно научиться кодить приложения, но нельзя научиться программировать. И сложно решить, что лучше: как можно быстрее научить созданию простых приложений без реального понимания программирования, алгоритмов и их вычислительной сложности, а потом начать знакомство с этими важными темами, или начать «с начала», и органично придти к созданию приложений и продуктов после освоения фундамента.
В 2001 году, Эдсгер Дейкстра написал письмо экономическому совету университета Техаса. В нем знаменитый ученый призывает членов совета задуматься о смене языка программирования для вводного курса. К сожалению, язык был заменен на Java. Примерно в то же время MIT сменили язык курса «Структура и интерпретация компьютерных программ» с функционального Scheme (диалекта LISP) на Python.
Сегодня мы публикуем перевод этого письма.
Членам Экономического Совета
Я пишу вам по поводу слуха о замене языка во вводном курсе по программированию с функционального языка Haskell на императивный язык Java. Я считаю, что Совет должен взять на себя ответственность, чтобы решение не было принято на неправильном уровне.
Понимаете, это не мелкая деталь. Коллеги из других штатов (все еще!) не понимают, как я могу выживать в таком месте как Остин, Техас, автоматически полагая что консервативный Техас означает посредственность. Обычно я отвечаю «Не волнуйтесь. Департамент информатики — довольно просвещенное место, например, во вводном курсе по программированию мы знакомим студентов с Haskell». Вначале они не верят, а потом начинают завидовать. Обычно оказывается, что их учебный план до сих пор не оклемался от перехода с Pascal на что-то вроде C++ или Java.
Хорошей причиной выбора функционального языка программирования в курсе для новичков является то, что большинство студентов немного знакомы с императивным программированием. Увидев новизну функционального программирования, они понимают, что программирование шире, чем они думали. И студенты довольно быстро замечают элегантность функционального подхода для решений, которые очень сложно (или невозможно) сформулировать знакомыми им со школы инструментами.
Фундаментальная причины выбора в том, что функциональные программы ближе к математическим объектам чем императивные, так что легче объяснять, в чем заключаются строгие рассуждения при программировании. Дополнительный плюс функционального программирования с «ленивыми вычислениями» в том, что оно предоставляет окружение, провоцирующее практические рассуждения.
Наконец, сравнивая конкретно Haskell и Java, хочу сказать, что Haskell хоть и не идеален, но на порядки качественнее чем беспорядочная Java (которой потребовалась широкая рекламна кампания и агрессивные продажники чтобы стать коммерчески приемлемым продуктом). Она настолько плоха, что вся индустрия в целом принимает низкокачественный дизайн как стандарт де факто. Лично я считаю, что университет должен оставить более здоровую альтернативу на плаву.
Не только виолончель влияет на музыканта, мы все подвержены влиянию инструментов, с которыми научились работать, и в этом отношении программирование еще хитрее: оно формирует наш мыслительный процесс. Этот факт делает выбор первого языка программирования таким важным.
Хочется использовать вводный курс по программированию для создания культуры, которая была бы фундаментом для всего учебного процесса. И чтобы обучение не начиналось с попыток забыть или разучиться чему-то (если такое вообще возможно: то, что стало нашим прошлым, навсегда им останется). Выбор подразумевает серьезную ответственность перед нашими студентами, поэтому его нельзя оставлять на совести случайного председателя чего-то. Он должен быть сделан Экономическим Советом. Этот вопрос не могут решать чиновники или политики. Здесь нужны государственные деятели.
habr.com