Рэкет? Что это?

О, извечный вопрос для любого ученика самого популярного вводного курса информатики на Северо-Западе. EECS 111 — это самое первое практическое требование к программированию для всех специальностей CS в Северо-Западном университете, но оно также открыто для всех, кто не является специалистом, который хочет изучить основы кодирования.

Учебная программа 111 уникальна для Северо-Запада тем, что она сосредоточена на обучении студентов языку программирования Racket. Racket — это диалект Scheme, языка программирования общего назначения, разработанного в 1975 году в Массачусетском технологическом институте.

Курс уникален из-за Racket? Почему?

Вводные курсы CS во многих университетах преподаются на широко известных языках, таких как Java и Python. В 2014 году в научном журнале Communications of the ACM была опубликована статья, в которой исследуются самые популярные языки для вводного обучения в ведущих университетах США.

Как видно выше, Scheme и связанные с ней диалекты преподавались только на пяти из 78 вводных курсов ведущих факультетов компьютерных наук в США. С другой стороны, почти две трети курсов в выборке преподавались на Python или Java. Это включает в себя курсы вводного уровня в Массачусетском технологическом институте и Калифорнийском университете в Беркли, которые сначала обучали студентов Scheme, а затем перешли на учебные программы на основе Python несколько лет назад.

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

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

Если эти другие языки так популярны, почему Northwestern придерживается Racket?

В то время как EECS 111, преподаваемый на Racket, является самым популярным вводным курсом по программированию в Северо-Западном университете, есть еще один курс CS для неспециалистов: EECS 110. Этот курс преподается на C осенью и на Python зимой и весной. Таким образом, студенты Северо-Запада, которые хотят изучать программирование, имеют в своем распоряжении больше, чем просто Racket.

Тем не менее, есть несколько объяснений того, почему EECS 111 преподается в Racket. Конкретные причины нынешней структуры курса более подробно представлены ниже. (Следующий список был составлен с помощью профессора Яна Хорсвилла, члена Северо-Западного факультета компьютерных наук и главного разработчика текущей учебной программы EECS 111.)

1. Никто этого не знает.

«Я знаю, что это может показаться не преимуществом, но это не позволяет людям, уже имевшим опыт владения другими языками, иметь преимущество», — говорит профессор Хорсвилл.

Учитывая, что 111 предназначен для начинающих, студенты в классе имеют самые разные знания в области компьютерных наук. Курс, преподаваемый на Python или Java, будет в значительной степени благоприятен для студентов, которые хорошо знают эти языки. Незнание студентами Racket уравновешивает игровое поле, так что новички в программировании не чувствуют себя обделенными.

2. Синтаксис прост.

Синтаксис относится к правилам, регулирующим структуру и расположение символов в компьютерной программе. Каждый язык программирования имеет свой синтаксис.

По словам профессора Хорсвилла, синтаксис Racket настолько прост, что «все можно уместить на двух слайдах PowerPoint». Это преимущество для курса начального уровня, такого как 111, на котором учащиеся должны изучать язык, который у них есть хорошие шансы понять.

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

3. Учащиеся могут легко понять, что не так с их кодом.

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

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

Racket поставляется с мощным отладчиком, который предоставляет интуитивно понятное описание почти каждой ошибки, с которой могут столкнуться начинающие программисты. «Ошибки в других языках, таких как C++, бывает очень трудно обнаружить, — говорит профессор Хорсвилл. «Для некоторых из этих ошибок вам нужен высший уровень понимания, чтобы знать, почему они происходят». К счастью, это не относится к Racket.

4. Основные концепции Racket можно распространить на другие языки и курсы.

Racket — мультипарадигмальный язык, что означает, что он поддерживает различные типы программирования. Эти типы включают функциональные, императивные, объектно-ориентированные (ООП) и другие. Навыки, которые учащиеся изучают Racket, можно применить к языкам с одной парадигмой, таким как Haskell (функциональный) или Smalltalk (ООП), а также к более универсальным языкам, таким как Python или Java.

Кроме того, многие ключевые слова и процедуры, используемые в современных программах обработки данных, получены из Scheme/Racket. Например, язык программирования SQL и синтаксис библиотеки pandas в Python, которые сегодня широко используются в науке о данных, основаны на таких процедурах, как «отобразить», «уменьшить», «свернуть» и «фильтровать» из Racket.

Racket также поддерживает функцию программирования, называемую рекурсией, которую учащиеся могут относительно легко освоить на языке. Профессор Хорсвилл отмечает, что «поскольку 111 является частью последовательности для тех, кто планирует углубленно изучать CS, он также готовит студентов к EECS 214, который полностью посвящен рекурсии». Преподавание Racket в EECS 111, таким образом, помогает основным и несовершеннолетним CS изучать концепции, которые будут более подробно изучены позже в этой последовательности.

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

Примечательной особенностью EECS 111 является уникальная система наставничества. Благодаря этой системе студенты, уже прошедшие курс, выступают в роли «равных наставников», помогая нынешним студентам усвоить материал.

Каждый наставник-равный проводит «учебное занятие» один раз в неделю для групп из шести или менее студентов, участвующих в курсе. «Наличие среды шесть на один, где вы можете задавать вопросы, которые вы не смогли бы задать на большой лекции, безусловно, является преимуществом», — говорит Даниэль Бирнбаум, который является наставником EECS 111 в этом зимнем квартале.

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

Система наставников-равных является относительно новым компонентом EECS 111. По словам профессора Хорсвилла, раньше в курсе были разделы для дискуссий с участием более тридцати человек и ограниченные возможности для студентов, испытывающих затруднения, получить помощь. Только в 2015 году благодаря щедрому вкладу выпускников НУ Боба и Шарлин Шоу была реализована инициатива равных наставников. Система, работающая уже пятый год, каждый квартал получает положительные отзывы от студентов.

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

EECS 111 определенно не подходит для всех. «Не существует правильного способа что-то делать», — говорит профессор Хорсвилл. «Хотя я действительно считаю, что Racket — отличный выбор для обучения EECS 111, вы также можете начать с курса «анти-111», основанного на языке C, или придумать что-то совершенно другое».

Даниэль также говорит, что он «возможно, хотел бы, чтобы задания были более связаны друг с другом от недели к неделе», чтобы между изучаемыми понятиями было больше преемственности. «Опять же, это происходит чаще в 211 году», — отмечает он. Он согласен с тем, что существуют ограничения по глубине курса, учитывая, что 111 предназначен в первую очередь для того, чтобы «почувствовать, что такое CS».

В конечном счете, EECS 111 далека от совершенства. Тем не менее, преимущества Racket и системы наставничества очевидны — и в качестве центра знакомства многих северо-западных студентов с компьютерными науками курс выполняет свою роль довольно хорошо.