Краткий обзор урока информатики в 3 классе, что мы знаем о компьютере

Обновлено: 21.11.2024

Что такое информатика на самом деле? Вот краткое руководство по основам компьютерных наук, а также то, как начать изучать больше!

Что такое основы информатики? Информатика — это изучение того, что могут делать компьютеры, и процессов, которые заставляют их работать. Информатика чрезвычайно актуальна в нашей повседневной жизни, в школе, на работе и в свободное время. Компьютеры и компьютерные программы повсюду в нашей повседневной жизни. Если вы просто хотите узнать больше о чем-то, что влияет на вашу жизнь, или если вы думаете о том, чтобы углубиться в эту область, мы предоставили краткий обзор некоторых важных принципов информатики.

Рекомендуется начать с основ работы компьютеров и сетей, а затем найти области обучения, которые могут вас заинтересовать в дальнейшем. Всем, кто интересуется кодированием, также рекомендуется ознакомиться с основами компьютерных наук. перед погружением в кодирование. Если вы думаете о том, чтобы заняться информатикой, хороший выбор! Узнайте, почему вакансии в области информатики важны, и прочтите дополнительную информацию об основах информатики.

Вот наше краткое введение в информатику:

Источник: Pexels

Что есть в компьютере?

Компьютер состоит из четырех основных частей: ввода, вывода, ЦП (центрального процессора) и памяти. Ввод состоит из всего, что вы добавите в компьютер (микрофон, клавиатура, мышь, сканер), а вывод — это то, что компьютер возвращает вам (например, экран, динамики и т. д.). ЦП или центральный процессор расположен на материнской плате и является частью компьютера, где вся эта информация ввода/вывода отправляется в нужное место. Память, обычно называемая ОЗУ (оперативная память), как вы, возможно, уже знаете, — это место, где хранится информация.

В компьютере есть три основных компонента аппаратного обеспечения. Материнская плата является наиболее важной частью компьютера и содержит множество подсистем, таких как центральный процессор (ЦП), микросхемы ввода/вывода, а также память и контроллеры приложений. Плата расширения вставляется в слот расширения на компьютере, и с ее помощью вы можете добавлять дополнительные возможности, например, для видео или графики. Наконец, что очень важно, это источник питания, который подает электроэнергию на электрическую нагрузку компьютера.

Типы компьютеров

Существует четыре типа компьютеров.

1. Суперкомпьютер:

Суперкомпьютер – это компьютер с максимально возможной вычислительной мощностью. Они используются в областях, требующих больших вычислений, таких как прогнозирование погоды, квантовая физика или разведка нефти и газа.

2. Серверный компьютер:

На серверном компьютере может работать серверная операционная система, которая управляет и предназначена исключительно для всех сетевых ресурсов.

Источник: IndiaMart

3. ПК (персональный компьютер):

Персональный компьютер — это именно то, на что это похоже; компьютер, обычно используемый для личного пользования. Ноутбуки и Mac также считаются ПК. Семьи, отдельные лица и малые предприятия обычно используют персональные компьютеры.

Источник: Unsplash

4. Микроконтроллер:

Небольшая схема, предназначенная для выполнения очень специфической задачи электронного устройства. Вы найдете микроконтроллеры в автомобилях, бытовой технике и телефонах.

Программное обеспечение

Двоичный код

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

Размер данных

В чем разница между битом и байтом? Бит — это двоичная единица или 0. А байт — это набор из 8 бит. Оба представляют собой крошечные наборы данных. Все выражается в байтах — числа, буквы и символы. Они упорядочены по размеру (о многих из которых вы слышали) и в основном описывает, сколько битов или байтов содержится в каждом наборе данных.

  • КБ: килобайт
  • MG: мегабайт
  • ГБ: гигабайт
  • ТБ: терабайт
  • ПБ: петабайт

Сети передачи данных

Сеть передачи данных – это цифровая телекоммуникационная сеть, позволяющая обмениваться информацией между узлами или устройствами. Существует три основных типа: LAN, WAN и VPN.

1. Локальная сеть:

Локальная сеть — это группа компьютеров, объединенных общей линией или ссылкой.Примеры могут включать несколько компьютеров в одной компании.

2. ГЛОБАЛЬНАЯ:

Глобальные сети похожи, но объединяют более одной группы компьютеров в большой географической области. Примеры включают сети школьных округов.

3. VPN:

VPN означает виртуальную частную сеть и включает ссылки между общими сетями. В этой сети два компьютера могут обмениваться данными через Интернет.

Интернет

Начнем с вашего IP-адреса: IP означает интернет-протокол и определяется в зависимости от местоположения. Каждый элемент в сетевой системе имеет свой IP-адрес (кстати, так работают службы определения местоположения!), и сообщает информацию, куда идти.

Сеть доставки контента (CDN). CDN или сеть доставки контента позволяет быстрее и напрямую доставлять контент пользователям. Некоторые сайты разрабатывают собственные CDN или нанимают эти сети для обеспечения оптимальной производительности.

Маршрутизаторы и пакеты. Маршрутизаторы лучше всего можно описать как локальные распространители информации, а пакеты – это разделы информации, доставляемые через маршрутизаторы.

Источник: Pexels

Что такое алгоритм?

Сейчас вы наверняка слышали слово "алгоритм". Если вы немного знакомы с машинным обучением или только что слышали термин, используемый для описания ваших результатов Google или лайков в Instagram, алгоритмы у всех на уме. Алгоритмы — это задачи, которые выполняет компьютер. Другими словами, процедура для компьютеров для решения проблемы, рецепт программирования. Это поможет компьютерам предоставлять пользователям нужную информацию, сортировать информацию или находить кратчайший путь к чему-либо.

Хотите узнать больше об основах информатики?

Онлайн-курсы

Если вы готовы узнать больше, но не уверены, хотите ли вы сразу перейти к получению степени, посетите несколько вводных онлайн-курсов. Отличные ресурсы для онлайн-введения в курсы информатики включают Khan Academy, Udemy и Udacity. Некоторые колледжи также предлагают занятия через EdX.

Ученые степени в области компьютерных наук

Готовы к карьере в области компьютерных наук? Лучший способ - через степень. Варианты обучения включают степень младшего специалиста, степень бакалавра (BS), степень магистра (MS) и докторскую степень.

Наиболее распространенным курсом является степень бакалавра наук, но если у вас мало времени, степень младшего специалиста также обеспечит вам начальный уровень в этой области. Если вы планируете продолжить свою карьеру, для некоторых должностей может потребоваться степень магистра наук.

Помните о расходах при выборе степени в области компьютерных наук. Средняя годовая стоимость программы для выпускников составляет 40 000 долларов. Университет народных ассоциаций и программа бакалавриата, с другой стороны, бесплатны. Вы просто оплачиваете регистрационный сбор и сборы за оценку. Помимо бесплатного обучения, степени UoPeople в области компьютерных наук также предлагаются полностью онлайн, что означает большую гибкость для работы в соответствии с вашим графиком. Узнайте больше об этих бесплатных, гибких и аккредитованных программах здесь!

Узнайте здесь больше о том, чему именно вы научитесь со степенью в области компьютерных наук и чем сможете заниматься после нее.

Блоги и информационные бюллетени

Читайте онлайн-блоги и подписывайтесь на информационные бюллетени по компьютерным наукам, чтобы ознакомиться с этой областью и найти темы, к которым вы стремитесь. Узнайте больше о компьютерных науках, стоящих за этими темами. Замечательные ресурсы для дальнейшего обучения и новостей — Wired и Science Daily.

После прочтения этих основных концепций информатики и изучения того, как приступить к работе, пришло время ознакомиться с информацией о вакансиях в области информатики. Читайте дальше, чтобы узнать больше о вариантах карьеры, вакансиях и информации о заработной плате в области компьютерных наук!

За последнее десятилетие был достигнут значительный прогресс в расширении доступа к школьному обучению для детей и молодежи, но немногие из них овладевают базовыми навыками и компетенциями, необходимыми для их будущего. Столкнувшись с этой проблемой, системы образования в настоящее время все больше укрепляют существующие модели обучения, одновременно переориентируя учащихся на мир, в котором технологии вездесущи.

Эмилиана Вегас

Бывший содиректор Центра всеобщего образования

Бывший старший научный сотрудник отдела глобальной экономики и развития

Брайан Фаулер

Бывший аналитик-исследователь Центра универсального образования

Информатика — важный элемент укрепления существующих моделей образования и подготовки учащихся к будущему. Опираясь на предыдущую работу, мы определяем CS как изучение как аппаратного, так и программного обеспечения компьютера, включая теоретические алгоритмы, искусственный интеллект и программирование (Technopedia).1 Обучение информатике может также включать в себя элементы вычислительного мышления: подход к решению проблем, включающий декомпозицию, использование алгоритмов, абстракцию и автоматизацию (Wing, 2006). Компьютерная грамотность отличается от компьютерной грамотности тем, что она больше связана с дизайном компьютера, чем с его использованием. Например, программирование — это навык, которому можно научиться на курсе компьютерных наук, а создание документа или презентации в виде слайд-шоу с использованием существующей программы — это навык, которому можно научиться на курсе компьютерной грамотности.

Множество исследований показывают, что обучение компьютерным наукам может помочь учащимся не только в компьютерных технологиях. Образование в области компьютерных наук было связано с более высокими показателями поступления в колледжи и улучшенными способностями к решению проблем (Brown & Brown, 2020; Salehi et al., 2020). Недавнее рандомизированное контрольное исследование также показало, что уроки вычислительного мышления улучшают навыки торможения реакции учащихся, планирования и кодирования (Arfé et al., 2020). Поскольку эти навыки приобретают первостепенное значение в быстро меняющемся 21 веке, образование в области компьютерных наук обещает значительно повысить готовность учащихся к будущему работы и активной гражданской позиции.

Обучение компьютерным наукам расширяется по всему миру, поскольку все больше образовательных систем признают его важность. Тем не менее, большинство стран не спешат его внедрять. Мы провели поиск в Интернете свидетельств школьного обучения информатике и обнаружили, что из 219 стран: 44 (около 20 процентов) требуют, чтобы школы предлагали его в качестве факультативного или обязательного курса; 15 (около 7 процентов) предлагают CS в отдельных школах и некоторых субнациональных юрисдикциях (штатах, провинциях и т. д.); и 160 (73 процента) только проводят пилотные образовательные программы по компьютерным наукам или не имеют доступных данных о школьном обучении информационным технологиям (рис. 1). Немногие страны предлагают обучение компьютерным наукам достаточно долго, чтобы должным образом оценить эффективность их обучения и деятельности по информационным технологиям.

Несмотря на то, что это необходимо для приобретения навыков в 21 веке, качественное образование в области компьютерных наук для учащихся со всего мира – немалый подвиг. Многие страны по-прежнему пытаются обеспечить, чтобы все учащиеся овладевали основами грамотности и счета. Согласно последним оценкам «Тенденции в международном исследовании математики и естественных наук» (TIMMS) и «Прогресс в международном исследовании грамотности чтения» (PIRLS), только 14 процентов учащихся в странах с низким уровнем дохода достигли уровня знаний по математике и менее 5 процентов — по чтению ( Всемирный банк, 2018 г.). В таких условиях предоставление качественного образования по компьютерным наукам учащимся по всему миру остается сложной задачей.

В ответ на эти проблемы внедрения некоторые системы образования:

  • Введены программы квалификации и подготовки учителей;
  • Приложил усилия для повышения интереса и участия учащихся в CS; и
  • Инвестиции в исследования и разработку новых методов обучения информатике.

Несмотря на то, что эти усилия направлены на решение основных проблем, связанных с расширением образования в области компьютерных наук, существует нехватка заслуживающих доверия исследований, в которых бы строго оценивалась эффективность образования в области компьютерных наук. В рамках более крупного текущего исследовательского проекта Центра всеобщего образования в Брукингсе, посвященного глобальным достижениям в области компьютерного образования, в этом аналитическом обзоре рассматриваются различные усилия во всем мире, направленные на улучшение и масштабирование компьютерного образования.

Квалификация и подготовка учителей

Хорошо подготовленный и знающий учитель является наиболее важным фактором в обучении учащихся со стороны школы (Chetty et al., 2005; Chetty, 2014; Rivkin et al., 2005). Это также верно для обучения CS. Тем не менее, несколько недавних исследований показывают, что в системах образования не хватает квалифицированных учителей компьютерных наук. Например, при опросе учителей начальной школы в США только 10% ответили, что понимают концепцию вычислительного мышления (Campbell & Heller, 2019). Другое исследование показало, что 75% учителей в США ошибочно считают «создание документов или презентаций на компьютере» темой, которую они изучают на курсе информатики (Google/Gallup, 2015), демонстрируя плохое понимание различий между компьютерной наукой и информатикой. компьютерная грамотность. Другие тематические исследования, опросы и интервью показали, что учителя в Индии, Саудовской Аравии, Великобритании и Турции сообщают о низкой уверенности в своем понимании CS (Ramen et al., 2015; Alfayez & Lambert, 2019<). /u>; Королевское общество, 2017 г., Гюльбахар и Калелиоглу, 2017 г.). Действительно, во многих мировых системах образования подготовка учителей остается сложной задачей для развития необходимых навыков и уровней уверенности в себе для эффективного преподавания и обучения компьютерным наукам.

Чтобы решить эти проблемы, школьные системы внедрили программы непрерывного профессионального развития (PD), программы сертификации и сертификаты CS, выдаваемые в рамках программ обучения для учителей до начала работы.

Профессиональное развитие и официальные сети

Учитывая нехватку знающих учителей информатики, несколько систем образования привлекли учителей к ПД. Они варьируются от однонедельных летних семинаров по вычислительной технике, посвященных блочным языкам программирования, до многодневных семинаров, предназначенных для ознакомления учителей с CS и обучения их тому, как помочь учащимся овладеть навыками программирования (Liu et al., 2011). Группы профессионального развития под руководством учителей продемонстрировали потенциал для содействия совместному обучению учителей информатики (Cutts et al., 2017; Alkaria & Alhassan, 2017; Goode et al., 2014). ). Тем не менее, необходима более тщательная оценка, чтобы понять их эффективность.

Сертификация учителей

Схемы сертификации служат двойной цели: проверяют знания преподавателей предметной области и сообщают потенциальным работодателям об их уникальной квалификации. Это, в свою очередь, побуждает учителей продолжать обучение, чтобы установить цикл повышения квалификации преподавателей компьютерных наук.

Спрос на образование в области информатики

Из-за высокого спроса на их навыки специалисты в области компьютерных технологий делают стабильную карьеру с высоким доходом. По данным Бюро статистики труда, средняя годовая заработная плата для профессий CS в 2019 году составила 88 240 долларов, что примерно на 48 000 долларов больше, чем средняя заработная плата для всех профессий в США. Бюро также прогнозирует, что рынок профессионалов CS будет продолжать расти в два раза. скорость остальной части рынка труда в период с 2014 по 2024 год (Национальные академии наук, 2018). Несмотря на эти преимущества, технологическая отрасль не смогла привлечь в свои ряды талантливых специалистов из разных стран.

Чтобы удовлетворить спрос на специалистов по информационным технологиям, государственные и благотворительные организации внедрили программы, знакомящие учащихся с компьютерными технологиями. Повышая осведомленность и интерес учащихся K-12 к профессиям компьютерных наук, можно решить проблему нехватки разнообразия в технологической отрасли (Harrison, 2019; Ioannou, 2018).

Заинтересованность учащихся и родителей в обучении информатике

Несмотря на явный экономический стимул для изучения компьютерных наук, относительно небольшое число учащихся K-12 проявляют интерес к компьютерному образованию. Одной из причин может быть то, что изучение компьютерных наук сопряжено с изрядной социальной стигматизацией студентов. Эта стигматизация может быть связана с широко распространенным мнением о том, что CS — это область, ориентированная на мужчин, которая предполагает социальную изоляцию и акцент на машинах, а не на людях (Cheryan et al. 2015).

Родители положительно относятся к обучению компьютерным наукам, но у них есть неправильное представление о том, кто может этому научиться. Более 80% родителей в США, опрошенных в ходе исследования Google/Gallup в 2016 году, сообщили, что они считают компьютерные науки столь же важными, как и любые другие дисциплины. Тем не менее, те же родители указали, что у них есть предубеждения относительно того, кому следует посещать курсы информатики: 57% опрошенных родителей в США заявили, что нужно быть «очень умным», чтобы изучать информатику (Google, 2015). Распространено ошибочное мнение, что некоторые люди от природы талантливы в CS, иначе известном как «ген гика», в то время как другие от природы неспособны к CS (McCartney, 2017). Это убеждение отпугивает некоторых студентов от развития интереса к CS. Напротив, статистические данные показывают, что учащиеся изучают компьютерные науки, изучая и применяя на практике основные понятия, и, таким образом, «ген гика» — это скорее миф, чем реальность (Patitsas et al. 2019).

Обучение CS для девочек и недостаточно представленных меньшинств (URM)

Вмешательства для повышения интереса учащихся

Также были предприняты попытки реализации трудоемких программ, направленных на повышение интереса учащихся к компьютерным наукам. Например, в американском штате Джорджия в течение шести лет была реализована программа, включающая внеклассные, выходные и летние семинары. За время действия программы в Грузии увеличилось количество участников экзамена Advanced Placement (AP) CS, особенно среди девочек и URM (Guzdial et al., 2014). Некоторые штаты ввели аналогичные программы, организуя летние лагеря и семинары по выходным в университетах, чтобы помочь старшеклассникам познакомиться с CS (Best College Reviews).

Эти инициативы, будь то разовое знакомство с информационными технологиями или программы, требующие много времени, обычно имеют явную цель поощрения участия в обучении информационным технологиям среди всех учащихся, особенно девочек и URM. Хотя исследования показывают, что «Час кода» и летние лагеря могут повысить энтузиазм учащихся в области компьютерных наук, они не дают строгой оценки воздействия, необходимой для окончательного вывода об их эффективности. Например, в случае с Грузией невозможно подтвердить, можно ли напрямую отнести клубы продленного дня к увеличению числа девочек и УРМ, принимающих CS.

Методы обучения, основные компетенции и исследования

Несмотря на то, что были достигнуты большие успехи в создании увлекательной учебной среды, как и в других обсуждаемых здесь областях, существует недостаток исследований, достоверно оценивающих эффективность различных учебных программ и методов обучения для развития навыков CS (Saeli et al., 2011; Хабвизер и др., 2013). Действительно, наш обзор фактических данных показывает, что расширение образования в области компьютерных наук во всем мире потребует консенсуса в отношении стратегий оценки понимания учащимися основных компетенций в области компьютерных наук и качественных данных об эффективных учебных программах и методах обучения.

Учебные программы и основные компетенции

Не существует универсальной учебной программы по информатике для всех систем образования, школ и классов. Региональные контексты, школьная инфраструктура, предшествующий доступ и воздействие CS должны учитываться при разработке учебных программ и компетенций CS. Некоторые навыки CS, такие как языки программирования, требуют доступа к компьютерной инфраструктуре, которая может отсутствовать в некоторых контекстах (Lockwood & Cornell, 2013). По мнению участников Международной олимпиады по информатике «Создание международной учебной программы по информатике для начального и старшего школьного образования», при разработке учебных программ следует учитывать конкретные обстоятельства (Ackovska, 2015).

Вместо того, чтобы предписывать учебную программу, K-12 Computer Science Framework рекомендует базовые концепции информатики и компетенции для систем образования. Эта структура позволяет разработчикам учебных программ и преподавателям создавать учебный процесс, выходящий за рамки структуры и учитывающий интересы и способности учащихся.

К основным навыкам, которые учащиеся могут освоить к концу начальной школы, относятся: (1) абстракция (создание модели для решения проблемы); (2) обобщение (ремикширование и повторное использование ранее созданных ресурсов); (3) декомпозиция (разбиение сложной задачи на более простые подзадачи); (4) алгоритмическое мышление (определение ряда шагов для решения, составление инструкций в правильной последовательности и формулирование математических и логических выражений); и (5) отладка (распознавание, когда инструкции не соответствуют действиям, а затем удаление или исправление ошибок) (Angeli, 2016).

Компетенции, которые учащиеся старшего возраста могут освоить на курсах информатики, практикуемых в Польше, включают: (1) логическое и абстрактное мышление; (2) представления данных; (3) решение проблем путем разработки и программирования алгоритмов с использованием цифровых устройств; (4) выполнение расчетов и выполнение программ; (5) сотрудничество; и (6) этические нормы, такие как конфиденциальность и безопасность данных (Syslo & Kwiatkowska, 2015 г.).

Часто используемые методы обучения

В ряде исследований описаны различные методы обучения основным компетенциям компьютерных наук. Интегрированные среды разработки особенно рекомендуются для обучения навыкам кодирования (Florez et al., 2017; Saez-Lopez et al., 2016). 3 Эти среды обучают блочным языкам программирования, которые побуждают начинающих программистов заниматься программированием, частично облегчая учащимся нагрузку на синтаксис (Weintrop & Wilensky, 2017; Repenning, 1993). Другие рекомендовали различные методы обучения, сочетающие компьютеризированные уроки с занятиями в автономном режиме (Тауб и др., 2009; Керзон и др., 2009; Ачковска, 2015). Этот подход предназначен для обучения основным понятиям вычислительного мышления, в то же время поддерживая вовлеченность учащихся в физическую, а также в цифровую среду (Nishida et al., 2009). CS Unplugged, например, предоставляет кинестетические планы уроков. которые включают игры и головоломки, обучающие основным понятиям CS, таким как декомпозиция и алгоритмическое мышление.

В различных исследованиях также предпринимались попытки оценить традиционное лекционное обучение информатике (Alhassan, 2017; Cicek & Taspinar, 2016). 4 Эти исследования, однако, основаны на небольших размерах выборки, где каждая экспериментальная и контрольная группы состояли из отдельных классов. Необходимы более тщательные исследования, чтобы понять эффективность стратегий обучения информатике.

Отсутствие единого мнения по оценке

Несмотря на то, что для оценки знаний учащихся по основным понятиям CS используются различные методы — стандартизированные тесты, цифровая среда, классические когнитивные тесты и тесты активности CS Unplugged, единого мнения относительно наилучшего метода для этого нет (So et al. ., 2019; Джамбонг и Фрейман, 2016). Хотя эти методы широко доступны, по-прежнему не хватает сопоставимых оценок, которые исследователи могли бы использовать для оценки различных учебных программ или методов обучения информатике. Без данных оценки невозможно оценить учебную программу или стратегии обучения в разных классах или школах (Webb et al., 2016; Tew, 2010). Отсутствие результирующих данных, в свою очередь, мешает системам образования улучшать свои программы CS.

Хорошей новостью является то, что все больше организаций разрабатывают стандартизированные тесты по компьютерным наукам и вычислительному мышлению. В Международное исследование компьютерной и информационной грамотности в 2018 году были включены экзамены по вычислительному мышлению, состоявшие из двух 25-минутных модулей, в которых студентов просили разработать последовательность задач в программе, связанной с единой темой (Fraillon et al., 2018). В 2021 году PISA ОЭСР будет включать вопросы для оценки вычислительного мышления.Экзамен AP CS также позволил провести полезные сравнения, которые использовались для оценки программ подготовки учителей (Brown, 2018).

Системы образования во всем мире все чаще обращают внимание на необходимость интеграции компьютерных наук в свои стандартные учебные программы. Тем не менее, появилось много проблем. Во многих системах образования ощущается нехватка квалифицированных учителей, которые разбираются в концепциях и методах обучения информатике. Несмотря на высокий спрос на специалистов по компьютерным наукам, относительно небольшое количество студентов проявляют интерес к компьютерным наукам по сравнению с другими предметами STEM. Разработка основных компетенций, учебных программ и оценок, адаптированных к контексту различных образовательных систем, еще не завершена.

Правительства и некоммерческие организации по-разному решают эти проблемы. Учителя могут участвовать в программах обучения и сертификации, а учащиеся могут участвовать в коротких уроках кодирования, внеклассных клубах и летних лагерях. Педагоги-практики внесли новшества в дизайн методов обучения информатике, начиная от блочного программирования и заканчивая кинестетическими уроками.

Эти мероприятия и программы часто хорошо организованы и могут решить проблемы, для решения которых они предназначены. Тем не менее, Королевское общество (2017 г.) рекомендует проводить более тщательные исследования в области компьютерного образования по следующим приоритетам: педагогика, модели обучения и методы обучения, структура класса и физические ресурсы, языки программирования, вовлечение учащихся и методы оценки. Полученное исследование может помочь образовательным системам инициировать, масштабировать и улучшить свое обучение компьютерным наукам.

Авторы выражают признательность Пэту Йонгпрадиту, Марку Гуздиалу и Бенсону Нитипуди за их комментарии к более ранним вариантам этого аналитического обзора.

The Brookings Institution – некоммерческая организация, занимающаяся независимыми исследованиями и политическими решениями. Его миссия состоит в том, чтобы проводить высококачественные независимые исследования и на основе этих исследований предоставлять новаторские практические рекомендации для политиков и общественности. Выводы и рекомендации любой публикации Brookings принадлежат исключительно ее автору (авторам) и не отражают точку зрения Учреждения, его руководства или других ученых.

Brookings выражает благодарность Amazon, Atlassian Foundation International, Google и Microsoft за поддержку.

Brookings признает, что ее ценность заключается в стремлении к качеству, независимости и влиянию. Мероприятия, поддерживаемые его донорами, отражают это обязательство.

Недавно я написал статью о том, нужна ли вам степень в области компьютерных наук, чтобы получить работу в сфере технологий. Я подумал, что просмотр стенограммы будет полезен. Надеюсь, обсуждение того, что я изучил, поможет людям. Я хочу, чтобы каждый мог принять максимально взвешенное решение, выбирая свою карьеру в сфере технологий.

Отказ от ответственности: это написано на основе моих воспоминаний о классах и с точки зрения мобильного разработчика. Многие темы этих занятий можно было бы специализировать и превратить в карьеру. Так что все они важны для кого-то в мире. Я пишу со своей точки зрения и с точки зрения человека, выбравшего карьеру мобильного разработчика.

Первый код, который в конечном итоге пишет большинство людей. Изображение Кляйнера.

Программирование I, II

Это была суть всего, чему я научился, и что привело меня к программированию. Это были классы, на которых вы учились программировать. До того, как я пошел на эти курсы, я вообще почти не программировал. Я пытался получить фору, но не продвинулся дальше циклов.

Этот класс начался с создания пустого файла и его компиляции в среде IDE (я использовал Code::Blocks). И мы сами работали до создания собственной текстовой боевой игры. Оглядываясь назад на код, который я написал, мне становится неловко. С тех пор я прошел долгий путь. Вот репозиторий, если хотите посмеяться (я использую только файл main.cpp с 1063 строками кода).

Итак, что я здесь узнал? Я хочу сказать все. Эти курсы были безумно ценными и дали мне как минимум 70% знаний, необходимых для профессиональной работы программистом. Я изучил операторы if, циклы, логическую логику, создание классов, создание структур, создание интерфейсов, полиморфизм, наследование и многое другое. Также использовались базовые структуры данных, такие как массивы и векторы.

Одна из многих тем, охватываемых дискретными структурами. Изображение предоставлено Benji3.141 в соответствии с лицензией Creative Commons Attribution-Share Alike 3.0 Unported.

Дискретные структуры в информатике

Этот курс был добавлен в расшифровку, чтобы люди привыкли к логической логике.Что у нас было вниз в первые две недели класса. К несчастью для нас, ничего не подозревающих студентов, это заходит довольно далеко в кроличью нору. Вот некоторые из затронутых тем: «логика, множества и операции над множествами, методы доказательства, рекурсивные определения, комбинаторика и теория графов».

Теперь все это полезно знать. Но проблема в том, что студентов поощряли брать этот класс раньше. Обычно вместе с программированием I и II. И это некоторые продвинутые темы. Сейчас мне было бы трудно использовать математические методы доказательства. И я помню, что я действительно боролся тогда. Кроме того, мне просто нужно было погуглить, что такое комбинаторика, поэтому я, очевидно, не использую ее слишком часто.

Дело в том, что многие вещи, которые они преподавали в этом курсе, казались неприменимыми к карьере в области компьютерных наук в то время, когда я проходил курс. Теперь я знаю, что логика, множество и множество операций, рекурсивные определения и теория графов могут быть полезны. Но это только с учетом того, что я несколько лет работал программистом.

Что я ежедневно применяю в своей нынешней карьере, так это логику и, возможно, набор операций. Рекурсивные определения и теория графов действительно были полезны только для интервью. Но отнеситесь к этому с недоверием, потому что я мобильный разработчик. Разработчику бэкенда теория графов, вероятно, покажется очень полезной.

То же самое реализовано с двумя разными структурами данных. Изображение предоставлено Filosoficos.

Структуры данных

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

Я узнал о массивах, стеках, связанных списках, двусвязных списках, деревьях, графах, кучах и обо всех различных вариантах этих структур данных (например, о самобалансирующихся деревьях). Этот курс не только помог мне понять структуры данных, но и лучше организовать хранимые данные.

Это занятие было выполнено на C, что делало его еще более интересным. C может быть очень привередливым, но также и очень мощным, если его правильно использовать. Мне приходилось быть очень осторожным с выделением и очисткой памяти, что также было очень полезно для обучения управлению памятью.

В этом классе было так много полезных вещей, что трудно охватить их все. Я даже не упомянул тот факт, что это ключевой компонент знаний для собеседования в сфере технологий. Если вы не уверены в структурах данных, начните освежать некоторые основы, потому что они очень важны.

Старый добрый поиск в ширину. Я не могу сосчитать, сколько раз алгоритм спасал меня на собеседованиях. Изображение
Mre под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.

Анализ алгоритмов

Этот класс был несколько полезен. Алгоритмы полезны. Они управляют лучшим программным обеспечением в мире и делают его достаточно мощным, чтобы оставаться актуальным в современном мире. Но у этого класса были некоторые проблемы.

Самой полезной частью этого было изучение нотации Big O. Нотация Big O позволяет вам оценить код и понять, насколько хорошо он будет работать с точки зрения времени и пространства. В общем, если вы измеряете производительность кода в компании, вы будете использовать таймер для отслеживания времени между взаимодействиями. Это позволяет вам увидеть, насколько хорошо работает ваше программное обеспечение. Это требует от вас написания кода и последующей оценки результатов.

Обозначение Big O позволяет оценивать производительность кода, просто взглянув на код. Я не хочу вдаваться в подробности, но если вы не знакомы с нотацией Big O, прочитайте этот пост в блоге.

Настоящие алгоритмы, которые мы рассмотрели, оказались не такими полезными. Все, что я помню, это задача о рюкзаке и задача о коммивояжере. Мне также пришлось писать код для них в группах, что было не очень хорошо, потому что в моей группе был один человек, который вышел за рамки того, для чего он был предназначен. Это означало, что каждый раз я писал меньше кода для окончательной реализации, чем мне хотелось бы.

Основное понимание того, какие известные алгоритмы существуют, их предназначение и то, как они реализованы, может быть полезным (в основном для проведения интервью). Обозначение Big O является ключевым здесь. Это очень полезно на работе, а также невероятно полезно на собеседованиях.

Стек веб-разработчика. Изображение от lakexyde на Pixabay.

Веб-разработка

У этого класса было больше всего навыков, непосредственно применимых к работе в сфере технологий. Я узнал о HTML, CSS, JQuery, JavaScript, PHP и JSON. Я узнал, как запрос отправляется с внешнего интерфейса веб-сайта на серверный, как он обрабатывается на внутреннем интерфейсе, а затем отправляется обратно на внешний интерфейс с ответом. Я научился создавать пользовательский интерфейс и взаимодействовать со слоем данных, который затем взаимодействует с сетью.

В конце курса я создал свой собственный веб-сайт и взял на себя инициативу по изучению Angular.Я использовал Angular, чтобы мой сайт выглядел броско, что в итоге привело меня к моей первой стажировке. Я также хорошо понял, как веб-сайт работает внутри.

Одно только это знание было отличным, но я также научился подбирать и изучать незнакомый язык, фреймворк или формат данных и работать с ними на лету. Я много гуглил по этим темам, чтобы увидеть конкретные примеры. Я научился использовать документацию и онлайн-исследования, чтобы лучше понять концепцию, которую мне нужно было применить непосредственно в короткие сроки. Это ключевой навык опытного программиста.

Схемы базы данных. Изображение mcmurryjulie на Pixabay.

Введение в базы данных

В основном я только что выучил SQL в этом классе. Я уверен, что мы рассмотрели некоторые другие концепции, такие как сегментирование и кластеризация, но я их не помню. Я иногда использую SQL на своей текущей работе для выполнения запросов данных для событий, которые я зарегистрировал. SQL либо станет неотъемлемой частью вашей работы, либо вы почти не будете его использовать. Если вам это нужно, изучите это и станьте экспертом. Если нет, то не беспокойтесь об этом слишком сильно.

Кратко о скраме. Изображение предоставлено Lakeworks под лицензией Creative Commons Attribution-Share Alike 4.0 International.

Разработка программного обеспечения I, II

Также я не могу вспомнить еще один класс. Я считаю, что мы рассмотрели кучу общих понятий в этом классе. Мы рассмотрели методы управления проектами Scrum и Waterfall. Мы прошли тестирование и все возможные типы тестирования. Мы рассмотрели некоторые концепции удобства использования и доступности. На самом деле это был просто универсальный набор концепций, которые не вписывались в свои собственные классы.

Из-за лоскутного характера курса я не слишком хорошо усвоил ни одну из концепций. Хорошо иметь базовый обзор затронутых концепций, но я бы хотел, чтобы больше времени было уделено важным отдельным темам, таким как тестирование.

Различные типы компьютерной архитектуры. Изображение предоставлено Virtual_Loïc.

Архитектура компьютера и язык ассемблера

Я хорошо помню этот урок. Этот урок посвящен тому, как работает компьютер. Как машинные инструкции передаются и обрабатываются компьютером. Нам также нужно написать код на MASM, языке ассемблера, который очень тесно взаимодействует с машинным кодом.

Большинство языков программирования, которые я использовал до прохождения этого курса, были языками высокого уровня. Языки высокого уровня, как правило, ближе к человеческому языку, чем к машинному коду. MASM очень близок к машинному коду, и я бы сказал, что он ближе к машинному языку, чем к человеческому.

Самая важная часть этого занятия — получить представление о том, что происходит с вашим кодом после его компиляции. Было очень интересно узнать о различных логических единицах в компьютере и о том, как они обрабатывают ваш код.

С практической точки зрения я не думаю, что этот курс сыграл решающую роль в моей карьере в области технологий. Я до сих пор не использовал большую часть знаний, полученных на этом курсе, в своей карьере.

Операционные системы позволяют нам выполнять свою работу. Изображение на 200 градусов на Pixabay.

Операционные системы

Честно говоря, мне очень трудно вспомнить, чему я научился на этом занятии. Единственное, что я могу вспомнить, это создание программы обмена сообщениями, которая использовала программирование сокетов на C для связи. Я также узнал об открытии файлов и управлении папками с помощью скриптов.

Я хочу откровенно рассказать, что я помню из своего диплома, но факт в том, что я мало что помню из этого курса. Я просто не использовал большую часть полученных знаний в своей нынешней карьере.

Компьютерные сети действительно удивительны. Изображение The Opte Project доступно по лицензии Creative Commons Attribution 2.5 Generic.

Введение в компьютерные сети

Это не только увлекательно, но и может быть полезно. Я использовал вещи, которые я узнал из этого класса, для устранения проблем, с которыми я столкнулся, когда я получал ошибки из сети. Я смог точно определить проблемы, с которыми столкнулся, и помочь разработчику серверной части, с которым я работал, найти ошибку на их стороне.

Взаимодействие с пользователем — это прекрасный баланс между многими сторонами. Изображение Бориса Козельского под лицензией Creative Commons Attribution 4.0 International.

Введение в проектирование удобства использования

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

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

Хотя информация была интересной, конкретные реализации того, как вы создадите удобную и доступную часть программного обеспечения, зависят от платформы. Например, у Apple есть собственный набор руководств по пользовательскому интерфейсу, в которых описаны общие принципы проектирования и конкретные сведения о том, как следует разрабатывать программное обеспечение, которое будет работать на любой из платформ Apple.

Из-за того, что для каждой платформы требуется конкретная информация, я не уверен, что этот курс был невероятно полезен. Это было хорошее вступление, но в итоге мне пришлось изучить рекомендации Apple по интерфейсу, которые касались всех тем, рассмотренных в этом классе.

Так много приложений. Есть так много возможностей для мобильных разработчиков. Фото Рахула Чакраборти на Unsplash.

Разработка мобильного и облачного ПО

Я буду краток. Я уже был мобильным инженером, когда пошел на этот курс. Я создал дрянное мобильное приложение за несколько часов, чтобы как можно скорее получить степень. К этому моменту я уже достиг своей цели и получил работу инженера-программиста, но мне просто нужно было получить степень в области компьютерных наук, так как я почти закончил. На тот момент мне не хотелось учиться.

Даже с учетом сказанного, я не думаю, что этот курс был проведен хорошо. Это было лениво спроектировано. Они призвали людей писать код для приложения Windows Phone для этого класса, и спрос на эти вакансии намного ниже, чем на другие. И я чувствую, что это поощрялось только потому, что среду проще настроить, а код можно написать на JavaScript и это напоминает веб-разработку.

Кроме того, мне было ясно, что руководитель курса не знает обо всех платформах мобильных приложений. От нас требовалось написать небольшую часть бэкенда, но я действительно не хотел этого. В итоге я подделал веб-запрос, вместо этого прочитав его с диска и вернув готовый ответ через несколько секунд. Это сработало, потому что мне нужно было только отправить демо и исходный код. И у меня такое ощущение, что оценивающий смотрел только демоверсию.

В целом, в классе преподавались устаревшие и неиспользуемые технологии, они не оценивались должным образом и не давали особых указаний. Это был не очень хороший урок.

Какой красивый и современный интерфейс. Кто не был бы в восторге от изучения этого графического интерфейса Python после работы мобильным разработчиком? /с. Изображение предоставлено jim212jim под лицензией Creative Commons Attribution 2.0 Generic.

Проект программного обеспечения Capstone

Говоря об устаревших технологиях, этот проект требовал от нас создания графического интерфейса для доступа к базе данных с помощью curses. Вот полный проект, если интересно. Мы не выбирали, каким должен быть наш завершающий проект, он был назначен нам. И все должны были сделать один и тот же проект. Это также было сделано в группах по 3 человека, поэтому вы по-настоящему охватили только одну небольшую часть проекта. Это был очень плохой урок.

Взаимодействия с учителем практически не было. У меня не было никакого интереса к проекту, и то, что мы изучали, казалось абсолютно бесполезным. Чтобы вызвать интерес к теме, вам нужно предоставить людям некоторую свободу воли, когда дело доходит до выбора того, что они изучают. Не иметь выбора в вашем завершающем проекте просто глупо. Этот проект бесполезен для большинства профессий, и нет смысла навязывать его людям.

Класс должен был заставить каждого учащегося представить предложение с приблизительными оценками сроков завершения каждой части проекта. Это позволяет достичь двух целей: заставить людей начать практиковаться в оценке работы и позволить им работать над тем, что им интересно. Таким образом, класс был бы в 100 раз лучше.

Еще один алгоритм GIF, потому что они классные. Поиск в глубину, чтобы сбалансировать поиск в ширину. Изображение Mre под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.

Заключительные мысли

Я мог бы не посещать большую часть занятий и по-прежнему оставаться инженером-программистом, которым я являюсь сегодня. Но я думаю, что пропуск некоторых из этих курсов может оставить огромный пробел в ваших знаниях как разработчика. Я думаю, что каждый инженер-программист должен иметь некоторые знания по темам, связанным со структурами данных и алгоритмами.

Другие классы зависят от выбранной карьеры. Если вы решили заняться разработкой встраиваемых систем, вам следует узнать об архитектуре компьютера. Если вы решили стать фронтенд-инженером, вам следует узнать о компьютерных сетях.

Ключевым выводом здесь является то, что хороший инженер постоянно учится. Если вам не хватает каких-то знаний, которые, как вы знаете, будут полезны и применимы в вашей работе, пойдите на курсы, чтобы получить эти знания. Так вы станете лучше писать хороший код. Всегда учитесь.

Учащиеся могут развивать навыки информатики, начиная с младших классов, даже без компьютера, в рамках проектного обучения и других модулей.

Информатика – это не просто школьный предмет или предмет. Это набор навыков, которые учителя могут интегрировать в другие учебные области, чтобы учащиеся поняли, насколько широко они применимы. Темы CS интересны и интерактивны, они учат детей мыслить вычислительно, что помогает им приобретать навыки, необходимые для многих полезных компьютерных работ.

Если вы новичок в компьютерных технологиях и компьютерных технологиях, вот небольшая статья:

Эти привлекающие внимание статистические данные являются хорошим аргументом в пользу преподавания CS. Вот три способа намеренно интегрировать важные и фундаментальные темы и навыки CS в ваши предстоящие уроки.

1. Как работает Интернет

Протоколы связи, благодаря которым Интернет стал возможен, приписывают инженеру-электрику Роберту Кану и специалисту по информатике Винтону Серфу. Несмотря на то, что мы очень полагаемся на Интернет, многие из нас не знают, откуда он взялся. По правде говоря, нам это и не нужно, но все должны знать, как это работает.

Учителя могут помочь учащимся открыть для себя внутреннюю работу Интернета, заставив их создавать вычислительные артефакты (все, что создается человеком с помощью компьютера), к которым необходимо получить доступ через Интернет. Некоторые примеры вычислительных артефактов, которые могут создавать учащиеся, включают веб-страницы, программы, изображения, подкасты и видеопрезентации — все это можно создавать в любом классе.

Вот несколько хороших подсказок и вопросов для учащихся, которые помогут вам и вашим учащимся начать работу над проектом CS. Ведущие вопросы к студенческим проектам:

  • Как мы можем разработать приложение, полезное для других и доступное в Интернете?
  • Как работает интернет-инфраструктура и как мы можем способствовать ее дальнейшему развитию, предоставляя ее тем, у кого нет доступа?

Ключевые вопросы учащихся:

  • Как тексты, изображения, видео и электронные письма передаются от одного человека к другому?
  • Как работают и взаимодействуют независимые сети и как мы получаем к ним доступ?
  • Какую роль играют протокол управления передачей (TCP) и интернет-протокол (IP) в общении в Интернете?
  • Как бинарная информация перемещается в Интернете?
  • Кто и как контролирует и регулирует Интернет?

2. Разработка приложений

"Приложение" – это сокращенный разговорный термин, означающий "приложение", который используется как в отношении компьютерных программ, так и в отношении программ. Хотя большинство из нас использует его для обозначения программ на наших смарт-устройствах, это относится к программам, разработанным для любой аппаратной платформы.

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

Попросив учащихся разрабатывать приложения по своему выбору, преподаватели могут использовать всю мощь среды App Lab, чтобы помочь как новичкам, так и опытным пользователям начать создавать приложения, которые соответствуют их желаниям и потребностям и которыми можно поделиться с другими.

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

  • Отслеживание симптомов COVID-19
  • Рестораны с обслуживанием на улице
  • Расположение и расписание местных продуктовых магазинов
  • Места мирных демонстраций
  • Возможности волонтерства

Мне нравится использовать инструмент App Lab, поскольку он адаптируется к разным уровням моих учащихся и помогает упростить разработку приложений за счет быстрого прототипирования, блочного или текстового кодирования, создания интерактивности (с помощью кнопок, раскрывающихся списков и т. д.) и использования базы данных. Это также позволяет им делиться своими конечными продуктами с другими.

3. Использование алгоритмов

Алгоритмы очень важны в CS, потому что они сообщают компьютерам, что делать, используя набор последовательных шагов. Примеры включают поиск Google и многие функции веб-сайтов. Разработчики приложений и программисты также используют алгоритмы в качестве строительных блоков для создания эффективных программ без ошибок.

Отличный способ научить детей алгоритмам — научить их более осознанно относиться к алгоритмам, которые они используют в повседневной жизни, например, при приготовлении любимого блюда или подготовке к школе. Для многих учащихся именно так включается вычислительное мышление (КТ) для решения проблем. КТ является необходимым условием для многих компьютерных должностей, прогнозируемых Бюро статистики труда.

К счастью, учебные подходы, такие как проектное и смешанное обучение, могут служить средством обучения основам CS, поскольку они позволяют учащимся выполнять аутентичные задачи, которые помогают им применять алгоритмы, сначала в сценариях без подключения к сети, а затем в цифровых.

Вот несколько незанятых уроков и заданий, которые можно включить в проекты, чтобы дети начали использовать алгоритмы:

По мере того, как ваши учащиеся смогут использовать алгоритмы, вы сможете интегрировать более сложные задания по алгоритмам и программированию в учебные блоки, основанные на проектах.

Мой опыт в CS научил меня тому, что для развития нужного опыта требуются решимость, ноу-хау, технологические инструменты, практические стратегии и терпение. Но я считаю, что путь к мастерству CS достигается быстрее, когда учащиеся овладевают вышеупомянутыми основами и руководящими принципами.

Когда вы интегрируете CS в учебный процесс своих студентов, вы расширяете их возможности и даже создаете новые, о существовании которых они могли и не подозревать.

Информатика – это изучение принципов работы компьютеров и их использования. Проще говоря, это наука, которая занимается теорией и методами обработки информации в цифровых компьютерах, проектированием компьютерного оборудования и программного обеспечения, а также применением компьютеров. Компьютер — это просто инструмент для компьютерного ученого, как телескоп для астронома. Научите себя!

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

Программирование – это процесс создания набора инструкций, которые сообщают компьютеру, как выполнять ту или иную задачу. Программирование можно выполнять с использованием различных компьютерных «языков», таких как SQL, Java, Python, R и C++

10 причин изучать информатику

  1. Вычисления — это часть всего, что мы делаем!
  2. Знания в области вычислительной техники позволяют решать сложные сложные задачи.
  3. Компьютерные технологии позволяют изменить мир к лучшему.
  4. Вычислительная техника предлагает много видов прибыльной карьеры.
  5. Вакансии в сфере вычислительной техники никуда не денутся, где бы вы ни находились.
  6. Опыт работы с компьютерами поможет вам, даже если вы выбрали другую профессию.
  7. Компьютерные технологии открывают большие возможности для истинного творчества и инноваций.
  8. Компьютерные технологии позволяют работать как совместно, так и индивидуально.
  9. Вычислительная техника — неотъемлемая часть всесторонней академической подготовки.
  10. Возможности будущего в области вычислительной техники безграничны.

12 специализаций в области информатики

  1. Искусственный интеллект (ИИ)
  2. Компьютерная инженерия
  3. Компьютерная безопасность
  4. Компьютерное программирование
  5. Робототехника
  6. Нейронные сети
  7. Разработка программного обеспечения
  8. Компьютерная графика
  9. Машинное обучение
  10. Компьютерные сети
  11. Вычислительная биология
  12. Наука о данных

Лучшие языки программирования для изучения

Следующие языки представляют собой разумное сочетание парадигм и практических приложений:

Лучшие языки программирования для изучения!

В этом видео я рассказываю о лучших языках программирования для изучения прямо сейчас! Этот список основан на перспективах трудоустройства, вознаграждении и легкости изучения языков.

Книги по алгоритмическому анализу и рекуррентным отношениям

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

Легкое и простое руководство по анализу программ и алгоритмов с использованием Big-O, Big Omega и Big Theta, включая шпаргалки и практические задачи.

100 проблем с рекуррентными отношениями и решения

Включает 100 практических задач на рекуррентные отношения и решение в терминах Big-O.

Читайте также: