Za kilka tygodni będę zaangażowany w pewien „dzień otwarty” na moim uniwersytecie. W ramach tego czasu ja (wraz ze współpracownikiem) dostaję całą grupę uczniów szkół średnich na dwie godziny, a także laboratorium komputerowe wystarczająco duże, aby pomieścić ich wszystkich, i muszę zrobić coś w rodzaju aktywność lub zestaw działań z nimi, aby zachęcić ich do robienia informatyki (najlepiej na moim uniwersytecie, ale ogólnie także). Brakuje mi absolutnej straty co do tego, co tu robić, i z zadowoleniem przyjmuję wszelkie sugestie.
40
Odpowiedzi:
źródło
Sprawdź Computer Science Unplugged . Z ich strony:
źródło
Większość studentów informatyki, które znam, uważa naukę programowania za najbardziej bolesną i demoralizującą część ich edukacji. Dlatego trzymałbym się z dala od wszystkiego , co ma związek z samym programowaniem. Jak już zauważył Scphantm , prawdopodobnie nie będziesz miał na to czasu.
To, czego szukasz, to dwugodzinne ćwiczenie, które spełnia dwa cele:
Pierwszy cel jest dość niezależny od tego, co faktycznie pokażesz, i ma o wiele więcej wspólnego z byciem dobrym nauczycielem / prezenterem. Dobra praktyka dydaktyczna, tj. Utrzymywanie odbiorców na palcach, pozwalanie im na próbowanie małych rzeczy w grupach, zapewnianie im oddechu co 15 minut i tak dalej.
Drugi cel jest nieco trudny, a moim zdaniem najlepiej tutaj jest rozwiązać problem, który można wyjaśnić na podstawie ich obecnej wiedzy, pokazać, jak można opisać rozwiązanie algorytmicznie, a następnie pokazać, w jaki sposób można je przeanalizować i ulepszone.
Dobrym przykładem jest problem najkrótszej ścieżki na wykresach, zwany także systemem nawigacji GPS. Nie wymaga wyjaśnienia. Możesz dać im małą mapę z narysowanymi wagami / długością krawędzi i wiązką kredek, aby faktycznie wykonać algorytm podczas jego opisywania.
Następnie możesz rozpocząć dyskusję na temat znalezienia najkrótszej ścieżki itd. Pozwól im spróbować sformułować ją jako algorytm itp. Następnie opisz algorytm Dijkstry , pozwalając im pokolorować węzły jako odwiedzone , wstępne i nie odwiedzone zestawy. Bam Masz algorytm!
Jeśli nadal masz czas, możesz wyjaśnić niektóre szczegóły, tj. Rzeczy, które bierzemy za pewnik, takie jak znalezienie minimum w zbiorze niepewnych węzłów. Jeśli dojdziesz tak daleko, możesz pokazać różnicę między wyszukiwaniem liniowym a stertą, a jako bonus możesz wprowadzić matematyczną adnotację.O
Powiedziawszy to wszystko, to jest tak daleko, jak bym poszedł. Trzymaj się z dala od całej dyskusji vs. z dziesięciostopowym kijem. Chociaż większość informatyków uważa to za fascynujące, większość licealistów nie. Znam to z doświadczenia. Moim zdaniem kluczem jest zacząć od problemu, który mogą zrozumieć lub odnieść się do niego, i zabrać go stamtąd bez potrzeby częstego przedstawiania.P. N.P.
źródło
Jeśli masz tylko 2 godziny, nie będziesz musiał dużo kodować. Uczenie się składni będzie trudne w tym czasie, ale zamiast tego można zrobić wiele rzeczy.
Jako sugestię spróbuj nauczyć ich kontroli przepływu i znaczenia bycia konkretnym:
Jako przykładowe zadanie, ustaw kilka pojemników z różnokolorowymi kulkami, z pasującymi kolorowymi paskami papieru w innym miejscu i wystarczającą ilością małych wiader dla każdej pary robota / programatora. Zadanie polega na tym, aby robot napełniał wiadro kulkami, ale aby to zrobić, mogą brać tylko piłki pasujące do określonego paska papieru. Jeśli w wannie nie ma już kulek tego koloru, wówczas robot musi zwrócić pasek papieru i zebrać nowy.
To zadanie wymaga warunkowego rozgałęziania, zapętlania, obsługi błędów i myślenia progresywnego. Wszystkie rzeczy, w których programista musi być dobry, bez względu na język lub aktywność.
Uruchom coś takiego dwa razy, aby „roboty” i „programiści” mogli zamienić. W międzyczasie daj krótką lekcję na temat powyższych wzorców myślenia, a oni będą działać znacznie lepiej w drugim, zakończą się krótką rozmową na temat wielkich wydarzeń w programowaniu - pokonania nazistów, udania się na księżyc, do internetu i będziesz mieć pokój potencjalnych i zaangażowanych programistów!
źródło
Przeszkoliłem wielu programistów. Jeśli masz tylko 2 godziny, nie zawracaj sobie głowy nauczeniem ich kodowania. Laboratorium komputerowe też nie jest potrzebne. Aby przejść od zera do świata cześć, stracisz połowę klasy i spędzisz 45 godzin z 2 godzin na rozwiązywaniu problemów i nic nie zrobisz.
Możesz mieć więcej szczęścia, pokazując im, jak to jest myśleć jak programista. Daj każdemu z nich kartkę papieru i długopis i powiedz im, aby napisali program w ich własnym języku, w jaki sposób podnieść telefon z biurka i wykonać połączenie telefoniczne. Przejdź przez ich odpowiedzi. Jeśli posiadasz kod jakiejś soli, możesz przejrzeć jego programy i powiedzieć im, jak je ulepszyć i jak dostosować się do szczegółów, które musisz mieć. Następnie poproś ich, aby napisali program własnymi słowami, aby zrobić coś przyziemnego. załóż spodnie, umyj zęby, otwórz drzwi, cokolwiek. Zrób to samo z tym programem.
Daj im posmakować, jak to jest MYŚLIĆ jak programista. Z pewnością czerpią z tego więcej niż Ty próbujesz nauczyć je Pythona w ciągu 2 godzin.
źródło
Możesz spróbować Alice . To IDE i API dla animacji 3D. Ma wszelkiego rodzaju wbudowane obiekty (króliki, kosmici, drzewa, budynki, ...), które możesz umieścić w początkowej scenie, za pomocą metod bardzo wysokiego poziomu: jak
walk(north)
(animuje ręce i nogi podczas ruchu postaci) isay("my name is Winky")
co może spowodować, że z ust bohaterów wyjdzie bańka z kreskówek.Umożliwia zaczepianie zdarzeń na klawiaturze i myszy, dzięki czemu można wykonywać interaktywne czynności.
Podstawowym językiem programowania jest Java, ale IDE daje graficzny wariant, w którym przeciągasz i upuszczasz części wyrażeń do okna edytora. (To nie pozwoli ci utworzyć błędu składniowego).
Myślę, że można to wszystko wstępnie ustawić w scenie, aby ktoś bez doświadczenia w programowaniu mógł zrobić coś interesującego w ciągu zaledwie kilku godzin.
źródło
Kodowanie, nawet w języku zabawkowym lub graficznym, wydaje się przesadzone w ciągu godziny. Do diabła, nie jestem pewien, czy mógłbym ponownie zabrać Alice i zrobić coś wartościowego w ciągu 2 godzin. Może weekend, ale nie 2 godziny.
Sugeruję sprowadzenie CS do najistotniejszych rzeczy: rozwiązywania problemów i analiz. Podziel grupę na zespoły. Poświęć 10 minut na opisanie kilku problemów obliczeniowych wysokiego poziomu. Powinny to być łatwe problemy, które można łatwo wytłumaczyć osobom z małym doświadczeniem matematycznym lub CS. Przykłady obejmują:
Poświęć kolejne 10 minut na dalszą dyskusję i wyjaśnienie zadania. Każdej grupie przypisany jest jeden problem, w związku z którym mają przeprowadzić burzę mózgów. Zespół będzie miał pół godziny na wspólne wypracowanie rozwiązania lub rozwiązania przypisanego im problemu. Następnie poświęć godzinę na omówienie rozwiązań w całej grupie i pozwól dzieciom dowiedzieć się, czy działają, czy nie, czy istnieje szybszy / lepszy sposób rozwiązania problemu itp.
Jeśli dzieci nie znajdą właściwego / optymalnego rozwiązania, nie ma problemu. Nie udzielaj jednak odpowiedzi - jest to absolutnie niezbędne. Powodem, dla którego dzieci nie robią już STEM, jest to, że nauczyciele sprawiają, że dzieci mają wrażenie, że wszystko już się udało. Potrzeba bardzo dojrzałych doradców, aby umożliwić dzieciom samodzielne rozwiązanie tych problemów i odniesienie sukcesu lub porażki. Prawidłowa odpowiedź nie jest istotna. Chodzi o to, aby dać dzieciom ciekawe problemy i pokazać im, na czym polega informatyka: rozwiązywanie problemów i ocena rozwiązań pod kątem poprawności i wydajności. Pozwalając dzieciom wymyślić własne odpowiedzi, da im poczucie własności i pomoże im poczuć zaangażowanie.
Oczywiście, jeśli dzieci zapytają, czy otrzymały prawidłową / dobrą / najlepiej znaną odpowiedź, powiedz im prawdę. Ale nie rozdawaj odpowiedzi, chyba że pojawią się one w wyniku dyskusji uczniów na temat rozwiązań. Podsumowując:
źródło
Mam 17 lat i zacząłem programować, kiedy skończyłem 16 lat. Opowiem swoją historię i przedstawię kilka sugestii: moje zainteresowanie programowaniem zaczęło się, gdy oglądałem faceta informatyki, którego zadzwoniłem do moich rejestrów i wiersza poleceń ( mimo że chciał 500 $, aby naprawić moje BSOD, a ja nie zapłaciłem, naprawiłem je samodzielnie). Poszukałem więc „języka wiersza poleceń” i dowiedziałem się, że istnieje coś takiego jak „kod źródłowy” i to pozwoliło ci programować . W tamtym czasie nie miałem pojęcia, czym jest c ++, nawet nie sądzę, żebym kiedykolwiek o nim słyszał. Więc poszedłem na cpp.com (bardzo złe samouczki, nauczysz się złych i przestarzałych praktyk) i zacząłem uczyć się podstaw. Mój umysł oszalał i faktycznie dowiedziałem się, że wirus, który został zainfekowany powodując moje problemy, został napisany w c ++, co mnie dodatkowo zainteresowało. Później zacząłem czytać, uczyć się montażu i innych języków wysokiego poziomu. Najpierw chciałem dowiedzieć się o złośliwym oprogramowaniu i programowaniu graficznym i tak zrobiłem.
Lego Mindstorms to świetny pomysł. Jeśli nie chcesz wybierać długiej drogi i używać głównego języka, jest on wyposażony w język programowania w stylu blokowym, którego możesz używać. Zrozumiałem język w około 30-40 minut, wszystko się układa, gdy się nad tym zastanowić
Możesz szybko opracować aplikację i pochwalić się nią, porozmawiać z nimi na temat $$ $$, które mogą pochodzić z tworzenia aplikacji.
źródło
niektóre z moich ulubionych
generowanie fraktali . mają silny związek z głęboką matematyką i grafiką komputerową, a także naturalnie nadają się do równoległości. ilustruje złożoność i wschodzące zachowania , szczególnie gdy zbliżasz się do dowolnych skal, i ma silne powiązania z nauką i zjawiskami naturalnymi. napisanie równoległego fraktalnego kodu, który działa na wielu komputerach, nie jest trudne. jeden eksperyment polega na wyświetleniu przez każdą maszynę losowych linii, które przetwarzał (np. maszynach „podrzędnych”, które przetwarzają linie z kolejki), a następnie na maszynie centralnej wyświetlane są połączone wyniki.
Lego robotyka (lub inne zestawy robotyki, np. znaczek ). burze umysłów to zabawka, ale może być bardzo zaawansowana, służąc jako namacalna demonstracja abstrakcyjnych koncepcji. oprogramowanie, które można na nich uruchomić, może być bardzo złożone i może mieć skomplikowane pętle / algorytmy sens-myśl-działaj. istnieje wiele dobrych ksiąg konstrukcji. imponujące są także solwery kostkowe Rubiks , które niedawno pobiły rekord świata.
raspberry pi to nowa niedroga platforma, która cieszy się dużym zainteresowaniem i wykorzystaniem. może być użyty do zademonstrowania programowania linuksowego, robotyki itp. i ma wyjście HD itp. patrz np. superkomputer raspberry pi Southhampton z szafką Lego.
Logo, jak wspomniano w drugiej odpowiedzi, to stary klasyk. Innym nowym aspektem jest programowanie gier, np. w nowym, popularnym języku Scratch (wymyślonym w MIT ). może uczyć wielu naturalnych / zaawansowanych tematów CS.
źródło
oto inny kąt. istnieje tak wiele interesujących otwartych problemów lub pojawiających się technologii informatycznych na pograniczu naukowego zrozumienia, które mogą wywołać ciekawość / cud, tj. eksplorację pobliskiej terra incognita . jeśli poruszysz problemy, a następnie poprzesz klasę w dyskusji na temat konsekwencji rozwiązań, które mogą wzbudzić znaczące zainteresowanie / inspirację. [skoro wspominasz o dostępności pracowni komputerowej, możliwe byłoby również twórcze wymyślenie praktycznych ćwiczeń komputerowych związanych z tymi obszarami.]
może to nabrać uczucia science fiction, ale w CS jak żadne inne pole, zamienia to, co kiedyś było scifi w rzeczywistość w krótkim czasie. mogą być również kontrowersyjne i aktualne, łącząc się z dzisiejszymi nagłówkami, a uczniowie mogą zacząć rozumieć, jak wszechobecna CS jest w naszym świecie / społeczeństwie i jak znacząca jest, jeśli jest szeroko interpretowana. oto kilka dużych:
Problem składania DNA do białka . czy istnieje algorytm do jego dokładnego obliczenia?
sztuczna inteligencja w ogóle. Czy to możliwe? czy wiąże się to z etyką?
robotyka ma różne kluczowe pojawiające się obszary. np. autonomiczne samochody / jazda . jest na najbliższym horyzoncie. jak wpłynie to na społeczeństwo? wideo z konkursu DARPA sprzed niedawna robi wrażenie. Pisanie Kurzweila ma wiele rzeczy do zrobienia. drony są skomplikowanym tematem rzadko dyskutowanym i będą coraz częściej stosowane w kraju. to mars Rovers są nadzwyczajne i technologia są niesamowite historie za nim, takie jak, w jaki sposób systemy musiały być debugowany zdalnie interplanetarily gdy nie powiodła się.
Informatyczne systemy nadzoru w celu wykrywania przestępstw / terroryzmu są ostatnio bardzo popularne.
bozon Higgsa nie zostałby odkryty, a superkolider nie mógłby w ogóle funkcjonować bez dużych systemów opartych na CS do analizowania „dużych danych”.
Prawo Moore'a . jak daleko to będzie kontynuowane? jak bardzo wpłynęło to już na społeczeństwo / ludzkość?
Komputery kwantowe . czy są możliwe? czy będą szybsi? czy będą taniej czy zawsze niezdrowe? Dwave to kolorowe studium przypadku, jest świetny artykuł SciAm autorstwa Aaronsona itp
Algorytm Google PageRank jest jednym z wielu miliardowych cudów współczesnej informatyki. czy zostanie przedłużony? jak działa filtrowanie spamu? firma wydaje się zmierzać w kierunku analizy obrazów itp.
handel algorytmiczny / wysoka częstotliwość przenosi teraz ogromne ilości wolumenu / wartości handlowej. czy to dobrze / źle? czy to rośnie / maleje? czy będzie to regulowane w przyszłości? jaki rodzaj obliczeniowego wyścigu zbrojeń jest zaangażowany?
superkomputery są ogromne, rozwiązują niesamowite problemy i stają się coraz większe. czy są jakieś ograniczenia? co obliczają i co obliczą w przyszłości? nieco powiązane, Big Data i analizowanie danych .
serwisy społecznościowe miały ogromny wpływ na rozwój w mniej niż dekadę. biorą udział w podsycaniu popularnych powstań, np. arabskiej wiosny i Occupy wall st . jaka jest ich przyszłość?
źródło
Mam taką propozycję
Odbywamy małe warsztaty z uczniami szkół średnich na temat Saperów . Warsztaty wyglądałyby mniej więcej tak:
Zagrajmy trochę w grę (większość o tym wie).
Co właśnie zrobiliśmy? Jaki problem staramy się rozwiązać? Czy możemy sformułować ogólne zasady?
Zazwyczaj zajmuje to chwilę. Dzieci nie są wykorzystywane do formułowania problemów w zakresie nakładów i wyników, ponieważ nie istnieją ogólne zasady ich rozwiązywania. Ci, którzy zaprogramowali wcześniej, docenią wysiłek; odniesienie do „kodu spaghetti” może pomóc. Niemniej jednak reguły będą przez większość czasu proste, biorąc pod uwagę tylko jedną komórkę na raz.
Wykazuj problemy z zasadami.
W tym momencie chcesz wprowadzić symulator Saper . Ten autorstwa Bayera, Snydera i Chouiery nie jest idealny, ale pozwala na pokazanie starannie zaprojektowanych scenariuszy.
Ulepsz zestaw reguł, aby uwzględnić więcej scenariuszy.
Zwykle prowadzi to studentów do wspólnego badania coraz większej liczby komórek. Możesz także skłonić ich do „rozwiązania wszystkich” podejść, takich jak wyrażanie dostępnych informacji jako liniowego układu równań - pojawia się to, gdy spróbujesz wyrazić dostępne informacje w kategoriach matematycznych. Studenci już wiedzą, jak rozwiązać takie systemy!
Uwaga ograniczenia.
Po pierwsze, istnieją scenariusze, które nie mają rozwiązania (deterministycznego). Ponadto możemy zestawić brutalną siłę z naszymi opracowanymi strategiami. Czy możemy porównywać prędkość z mocą? Jeśli pojawi się podejście do układu równań, zauważ, że możemy to skutecznie rozwiązać tylko w rzeczywistości, ale potrzebujemy binarnych odpowiedzi. Nie jest trudno budować scenariusze, które prowadzą do ogromnych czasów działania (ilustrowaliśmy to algebrą komputerową).
W zależności od grupy podejście to pozwala w naturalny sposób objąć wiele zasad informatyki: można zdefiniować problemy, opisać ogólne algorytmy, iteracyjne rozwiązywanie problemów, a także kwestie obliczalności i złożoności.
Informacje zwrotne od studentów były ogólnie pozytywne; czują się zaangażowani i wyrażają zainteresowanie koncepcjami. Ważne jest, aby mogli wykonywać większość pracy, tylko ostrożnie trącając ich w pożądanym kierunku, zadając spostrzeżone pytania.
źródło
masz wiele rzeczy do zrobienia ... ale jedna rzecz, która wydawałaby się tak ekscytującym „pieniędzmi”, więc przedstaw pytanie „P ≠ NP” i nagrodę z siedmiu tysiącleci, kiedy byłem w szkole średniej, czytałem o tym, chociaż ja nie znałem notacji jedyną rzeczą, którą rozumiem: jest wielka nagroda i pytanie! inne rzeczy przedstawiają związek matematyki z informatyką, takie jak: rozwiązywanie równań, sprawdzanie rozwiązań za pomocą komputerów.
inne rzeczy, które zasugerowałem, to przedstawienie Alana w roli „ojca informatyki” i opowiedzenie jego historii. ostatnią rzeczą, którą sugeruję, jest zero dowodów wiedzy i gra „gdzie jest waldo?” i granie bez oszukiwania, kryptografii i cyberataków.
źródło
Rób wszystko z Facebookiem, uwielbiają to. Być może jest to trudne dla początkujących, ale możesz pozwolić im rysować wykresy połączeń, które pokazują, w jaki sposób ich profile są ze sobą połączone. Poleciłbym Javascript jako język programowania.
źródło