Через несколько недель я собираюсь провести своего рода «день открытых дверей» в моем университете. В течение этого времени мне (вместе с коллегой) дают по два часа целую группу учеников старших классов, а также компьютерную лабораторию, достаточно большую, чтобы вместить их всех, и я должен сделать какое-то деятельность или набор действий с ними, чтобы побудить их заниматься информатикой (в моем университете, в идеале, но в целом также). Я в полном недоумении относительно того, что здесь делать, и приветствую любые предложения.
40
Ответы:
источник
Проверьте компьютерные науки отключен . С их сайта:
источник
Большинство студентов-компьютерщиков, которых я знаю, считают обучение программированию самой болезненной и деморализующей частью своего образования. Поэтому я бы держался подальше от всего, что имеет отношение к самому программированию. Как уже говорил scphantm , у вас, вероятно, тоже не будет времени для этого.
То, что вы ищете, - это двухчасовое упражнение, которое удовлетворяет двум целям:
Первая цель довольно независима от того, что вы на самом деле собираетесь показать, и имеет гораздо больше общего с тем, чтобы быть хорошим учителем / докладчиком. Хорошая дидактическая практика, т.е. держать аудиторию в тонусе, позволять им пробовать небольшие вещи в группах, давать им передышку каждые 15 минут и так далее.
Вторая цель немного сложна, и, на мой взгляд, лучше всего здесь взять проблему, которую можно объяснить с помощью имеющихся у них знаний, показать, как можно описать решение алгоритмически, а затем показать, как можно проанализировать это решение. и улучшилось.
Хорошим примером является проблема кратчайшего пути на графиках, также известная как навигационная система GPS. Никаких объяснений не требуется. Вы можете дать им небольшую карту с нарисованными весом / длиной ребер и набором мелков, чтобы фактически выполнить алгоритм, как вы его описываете.
Затем вы можете начать обсуждение того, как найти кратчайший путь и т. Д., Пусть они попытаются сформулировать его как алгоритм и т. Д. Затем вы описываете алгоритм Дейкстры , позволяя им раскрасить узлы как посещенные , предварительные и не посещенные наборы. Bam. У вас есть алгоритм!
источник
Если у вас есть только 2 часа, вы не собираетесь много писать. Простое изучение синтаксиса в это время будет трудным, но есть множество вещей, которые можно сделать вместо этого.
В качестве предложения, попробуйте научить их контролировать поток и важность специфики:
В качестве примера задания установите несколько баков разноцветных шариков с соответствующими цветными полосками бумаги в другом месте и достаточным количеством маленьких ведер для каждой пары робот / программист. Задача состоит в том, чтобы заставить робота заполнить ведро шариками, однако для этого они могут брать только шарики, которые соответствуют определенной полоске бумаги. Если в ванне больше нет шаров такого цвета, то робот должен вернуть свою полоску бумаги и собрать новую.
Эта задача требует условного ветвления, зацикливания, обработки ошибок и продуманного мышления. Все, в чем должен быть хорош программист, независимо от языка или вида деятельности.
Запустите что-нибудь подобное дважды, чтобы «роботы» и «программисты» могли поменяться местами. В промежутке дайте небольшой урок о вышеупомянутых моделях мышления, а во втором они будут работать намного лучше, завершите небольшой беседой о важных событиях в программировании - победе над нацистами, отправке на Луну, в Интернете и у вас будет комната потенциальных и занятых программистов!
источник
Я обучил много программистов. Если все, что у вас есть, это 2 часа, не утруждайте их обучением кодированию. Компьютерная лаборатория тоже не нужна. Чтобы перейти от нуля к привет-миру, вы потеряете половину класса и потратите 45 часов из ваших 2 часов на борьбу с глюками и ничего не сделаете.
Возможно, вам повезет больше показать им, что значит думать как программист. Дайте каждому из них блокнот и ручку и попросите их написать на их родном языке программу о том, как поднять свой сотовый телефон со стола и сделать телефонный звонок. Пройдите через их ответы. Если ваш код не совсем понятен, вы можете пройтись по их программам и рассказать им, как сделать их лучше и как выполнить детали, которые вам нужны. Затем попросите их написать программу своими словами, чтобы сделать что-то еще мирское. наденьте штаны, почистите зубы, откройте дверь, что угодно. Сделайте то же самое с этой программой.
Дайте им почувствовать, каково это думать, как программист. Они, безусловно, получат от этого больше, чем вы, пытаясь научить их Python за 2 часа.
источник
Вы можете попробовать Алису . Это IDE и API для 3D-анимации. Он имеет всевозможные встроенные объекты (кролики, инопланетяне, деревья, здания, ...), которые вы можете поместить в начальную сцену, используя методы очень высокого уровня: like
walk(north)
(который анимирует руки и ноги во время движения персонажа) а такжеsay("my name is Winky")
это может привести к появлению пузыря мультфильма изо рта персонажа.Это позволяет вам перехватывать события клавиатуры и мыши, чтобы вы могли выполнять интерактивные действия.
Базовым языком программирования является Java, но IDE предоставляет вам графический вариант, в котором вы перетаскиваете части выражений в окно редактора. (Это не позволит вам создать синтаксическую ошибку.)
Я думаю, вы могли бы подготовить сцену так, чтобы кто-то, не имеющий опыта программирования, мог сделать что-то интересное всего за пару часов.
источник
Кодирование даже на игрушечном или графическом языке кажется надуманным в течение часа. Черт, я не уверен, что смогу снова взять Алису и сделать что-нибудь стоящее за 2 часа. Возможно выходные, но не 2 часа.
Я бы посоветовал свести CS до самого необходимого: решения проблем и анализа. Разбейте группу на команды. Потратьте 10 минут, чтобы описать несколько вычислительных проблем высокого уровня. Это должны быть простые проблемы, которые могут быть легко объяснены людям с небольшим опытом математики или CS. Примеры включают в себя:
Потратьте еще 10 минут на дальнейшее обсуждение и объяснение задачи. Каждой группе назначается одна проблема, для которой они должны найти решение. У команды будет полчаса, чтобы совместно найти решение или решение для их назначенной проблемы. Затем потратьте час на то, чтобы обдумать решения во всей группе, и пусть дети выяснят, работают они или нет, есть ли более быстрый / лучший способ решения проблемы и т. Д.
Если дети не выбирают правильное / оптимальное решение, это нормально. Не просто раздавайте ответы - это абсолютно важно. Причина, по которой дети больше не делают STEM, заключается в том, что воспитатели создают у детей впечатление, что все уже понято. Потребуются очень зрелые консультанты, чтобы позволить детям попытаться решить эти проблемы, и преуспеть или потерпеть неудачу самостоятельно. Правильный ответ не в этом. Суть в том, чтобы дать детям интересные проблемы и показать детям, что такое информатика: решать проблемы и оценивать правильность и эффективность решений. Разрешение детям придумывать свои ответы даст им чувство причастности и поможет им чувствовать себя заинтересованными.
Конечно, если дети спросят, получили ли они правильный / хороший / самый известный ответ, скажите им правду. Но не просто раздайте ответы, если они не возникнут органически в результате обсуждения решений учащихся. Обобщить:
источник
Мне сейчас 17 лет, и я начал программировать примерно в то время, когда мне исполнилось 16. Я собираюсь рассказать свою историю, а затем высказать некоторые предложения: Мой интерес к программированию начался, когда я наблюдал за парнем, специализирующимся на компьютерных технологиях, я позвонил в свои реестры и командную строку хотя он хотел 500 $, чтобы исправить мои BSOD, а я не заплатил, я починил их самостоятельно) Так что я погуглил «язык командной строки» и обнаружил, что есть что-то под названием «исходный код», и это позволило вам программировать , В то время я понятия не имел, что такое с ++, даже не думаю, что когда-либо слышал об этом. Поэтому я пошел на cpp.com (очень плохие учебники, вы будете изучать плохие и устаревшие методы) и начал изучать основы. Мой разум сошел с ума, и я действительно узнал, что вирус, которым я заражен, вызывая мои проблемы, был написан на c ++, что еще больше заинтересовало меня. Позже я начал читать, изучать ассемблер и другие языки высокого уровня. Сначала я захотел узнать о вредоносных программах и графическом программировании, и я это сделал.
Lego Mindstorms - отличная идея. Если вы не хотите идти по длинному маршруту и использовать основной язык, он поставляется с языком программирования блочного стиля, который вы можете использовать. Я разобрался с языком примерно через 30-40 минут, все выстраивается, когда вы об этом думаете
Вы можете быстро разработать приложение и показать его, поговорить с ними о $$, который может прийти от разработки приложения.
источник
некоторые из моих любимых
порождающие фракталы . они имеют сильную связь с глубокой математикой и компьютерной графикой, а также они естественно подходят для параллелизма. он иллюстрирует сложность и возникающее поведение , особенно когда вы приближаетесь к произвольным масштабам, и имеет сильные связи с наукой и природными явлениями. нетрудно написать некоторый параллельный фрактальный код, который работает на нескольких машинах. Один эксперимент состоит в том, чтобы каждая машина отображала случайные строки, которые она обрабатывала (например, «подчиненные» машины, которые обрабатывают строки из очереди), а затем центральный компьютер отображал объединенные результаты.
Lego робототехника (или другие комплекты робототехники, например, штамп ). mindstorms - это игрушка, но она может быть очень продвинутой, служащей ощутимой демонстрацией абстрактных понятий. программное обеспечение, которое может быть запущено на них, может быть очень сложным, и у них могут быть сложные циклы / алгоритмы, основанные на чувственном мышлении и действии. Есть много хороших книг конструкций. Также впечатляют решатели кубов Рубика , недавно побившие мировой рекорд.
raspberry pi - это новая недорогая платформа, которая вызывает большой интерес и использование. он может быть использован для демонстрации программирования на Linux, робототехники и т. д., имеет выход HD и т. д., см., например, суперкомпьютер Southhampton raspberry pi со стойкой Lego.
Логотип, как упомянуто в другом ответе, является старой классикой. Другим новым аспектом является программирование игр, например, с появлением нового популярного языка Scratch (изобретенного в MIT ). это может преподавать много естественных / продвинутых тем CS.
источник
вот другой угол. Есть так много интересных открытых проблем или появляющихся технологий в области компьютерных наук на границах научного понимания, которые могут вызвать любопытство / удивление, то есть исследование близлежащей Terra Incognita. . если вы поднимаете проблемы и затем предлагаете классу участвовать в дискуссии о последствиях решений, это может вызвать значительный интерес / вдохновение. [поскольку вы упомянули о наличии компьютерной лаборатории, можно было бы творчески разработать некоторые практические компьютерные упражнения, связанные с этими областями.]
это может вызвать чувство научной фантастики, но в КС, как ни в одной другой области, оно превращает то, что когда-то было фантастикой, в реальность за короткое время. они также могут быть спорными и своевременными, связанными с сегодняшними заголовками, и студенты могут начать понимать, насколько повсеместно распространены КС в нашем мире / обществе и насколько они важны, если их широко интерпретировать. Вот несколько больших:
Проблема сворачивания ДНК в белок . Есть ли алгоритм для его точного расчета?
искусственный интеллект в целом. Является ли это возможным? есть этика?
робототехника имеет различные ключевые новые области. например, автономные автомобили / вождение . это на ближайшем горизонте. как это повлияет на общество? видео конкурса DARPA не так давно впечатляет. Письмо Курцвейла имеет много вещей, чтобы войти в. беспилотные летательные аппараты - сложная тема, редко обсуждаемая открыто и все чаще используемая внутри страны. что марсоходы необыкновенные технологии и есть удивительные истории , стоящие за ней, например, как системы должны были быть отлажены дистанционно interplanetarily , когда им не удалось.
В последнее время в новостях широко используются информационные системы для обнаружения преступлений / терроризма.
бозон Хиггса не мог быть обнаружен, и суперколлайдер вообще не может функционировать без больших систем на основе CS для анализа «больших данных».
Закон Мура . как далеко это будет продолжаться? насколько это уже повлияло на общество / человечество?
Квантовые компьютеры . они возможны? они будут быстрее? они будут дешевыми или всегда непривлекательными? Dwave - это яркий пример, есть замечательная статья Ааронсона о SciAm и т. Д.
Алгоритм Google PageRank является одним из многомиллиардных чудес современной компьютерной науки. это будет продлено? как работает фильтрация спама? похоже, что компания движется к анализу изображений и т. д.
Алгоритмическая / высокочастотная торговля теперь перемещает огромное количество объема / ценности торговли. это хорошо / плохо? это увеличивается / уменьшается? будет ли это регулироваться в будущем? какого рода вычислительная гонка вооружений участвует?
Суперкомпьютеры огромны, решают удивительные проблемы и становятся больше. Есть ли ограничения? что они вычисляют и что они будут вычислять в будущем? в некотором роде , большие данные и анализ данных .
сайты социальных сетей имели огромное значение менее чем за десятилетие роста. они участвуют в разжигании народных восстаний, таких как « арабская весна» и « оккупируй стену» . каково их будущее?
источник
У меня есть предположение, что
Мы проводили небольшие семинары с учениками старших классов по поводу тральщика . Семинар будет примерно такой:
Давайте немного поиграем в игру (большинство это знают).
Что мы только что сделали? Какую проблему мы пытаемся решить? Можем ли мы сформулировать общие правила?
Это обычно займет некоторое время. Дети не используются для формулирования проблем с точки зрения ввода и вывода, чтобы не было общих правил их решения. Те, кто программировал раньше, оценят усилия; Ссылка на "код спагетти" может помочь. Тем не менее, правила будут простыми большую часть времени, учитывая только одну ячейку за раз.
Выставлять проблемы с правилами.
На данный момент, вы хотите представить симулятор Minesweeper . Тот, что Bayer, Snyder и Chouiery, не идеален, но позволяет демонстрировать тщательно разработанные сценарии.
Улучшите набор правил, чтобы охватить больше сценариев.
Обычно это приводит к тому, что студенты исследуют все больше и больше клеток вместе. Вы также можете подтолкнуть их к «решению всех» подходов, таких как выражение имеющейся информации в виде системы линейных уравнений - это возникает, если вы пытаетесь выразить доступную информацию в математических терминах. Студенты уже знают, как решать такие системы!
Обратите внимание на ограничения.
Во-первых, есть сценарии, которые не имеют (детерминированного) решения. Кроме того, мы можем противопоставить грубую силу нашим разработанным стратегиям. Можем ли мы найти компромисс между скоростью и мощностью? Если подход системы уравнений появляется, обратите внимание, что мы можем решить эту проблему эффективно только по реалам, но нам нужны бинарные ответы. Нетрудно построить сценарии, которые приводят к огромному времени выполнения (для иллюстрации мы использовали компьютерную алгебру).
В зависимости от группы этот подход позволяет естественным образом охватить несколько принципов информатики: можно затронуть определение проблем, описание общих алгоритмов, итеративное решение проблем, а также вопросы вычислимости и сложности.
Отзывы студентов были в целом положительными; они чувствуют себя вовлеченными и выражают интерес к понятиям. Важно, чтобы они выполняли большую часть работы, лишь осторожно подталкивая их в нужном направлении, задавая заостренные вопросы.
источник
у вас есть много дел ... но одна вещь, которая может показаться настолько привлекательной, что вы хотите получить деньги, представьте вопрос "P ≠ NP" и приз за семь тысячелетий, когда я учился в средней школе, я читал об этом, хотя не знал обозначений, единственное, что я понимаю: тут большой приз и вопрос! другие вещи представляли бы связь математики и информатики, такую как: решение уравнений, проверка решений с использованием компьютеров.
другие вещи, которые я бы предложил, это представить Алана Тьюринга «отца информатики» и рассказать его историю. последнее, что я предлагаю, это нулевые доказательства знаний и игра "где Уолдо?" и играть без обмана и криптографии и кибератак.
источник
Делайте что-нибудь с Facebook, им это нравится. Может быть, это трудно для начинающих, но вы не могли бы позволить им нарисовать графики подключений, которые показывают, как их профили связаны друг с другом. Я бы порекомендовал Javascript в качестве языка программирования.
источник