Jakie są dobre zadania na kurs wprowadzający, aby dotrzeć do dzisiejszych studentów? [Zamknięte]

25

Od czasu do czasu uczę wprowadzenia do programowania z wykorzystaniem Java . Chcę dać moim uczniom ekscytujące zadania, z którymi mogą się odnosić lub które mogą być interesujące . Przynajmniej chcę zadań, które mają sens i mają wewnętrzną spójność (na przykład niektóre bardzo złe ćwiczenia programistyczne wydają się być opracowane tylko po to, abyś musiał użyć najnowszego omówionego konstruktu programistycznego).

Aby dać Ci pojęcie o zakresie, oto, co jest omawiane :

  • Przypisania muszą odbywać się w Javie, przy użyciu biblioteki zewnętrznej można wykonać, ale musiałby to być prosty interfejs API, a nie pełny framework
  • Zmienne, prymitywy i łańcuchy
  • Wejście i wyjście konsoli
  • if, for,while
  • Operatory arytmetyczne i logiczne
  • Prosta grafika z rysowaniem linii i kształtów
  • Metody statyczne
  • Tablice jednowymiarowe

Uczniowie nie będą wchodzić w zaawansowane tematy (np. Brak rekurencji, brak nacisku na dziedziczenie). Dlatego nie szukam skomplikowanych projektów: „Poproś, aby napisali kompilator C. Zrobiłem to, gdy miałem 5 lat i to był jedyny sposób, którego się nauczyłem!”

Jeśli masz pomysły bardziej zaawansowane niż zakres, prześlij je na poniższe pytanie „Trudne”, a nie to.

Zamiast tego szukam interesujących pomysłów, które można zrealizować w krótkim programie. Na przykład:

  • Uczniowie mogą napisać konsolową wersję generatora „Star Wars Name” . To skutecznie czyta napisy i używa substring, ale myślę, że to zabawne. Podobną odmianą byłby program „ Mad Libs ”. Użyłem tego pięć lat temu i być może już jest „nieświeży”.

  • Korzystając z dostarczonych im wyzwalaczy, uczniowie mogą rysować regularne wielokąty i tworzyć ciekawe spiralne kształty.

  • Nie jest wykluczone użycie prostej klasy animacji z większością dostarczonego kodu. A jeśli znasz serwis Twitter lub Facebook, do którego można uzyskać dostęp za pomocą prostego interfejsu API, byłbym bardzo zainteresowany.

Pamiętaj, że to pytanie różni się od pytaniaTrudne pytania Java dla początkujących ”. Nie szukam wyzwań per se, po prostu interesujących. Myślę, że jeśli uczniowie pracują nad czymś, w czym mogą łatwo odpowiedzieć „dlaczego ktokolwiek miałby chcieć to zaprogramować?” wtedy nauczą się lepiej.

Nawet proste problemy, takie jak obliczanie Mil na galon, mogą być dobre. Chociaż, jeśli istnieje sposób, aby go zaktualizować, aby był bardziej odpowiedni, tym lepiej. Jeśli masz ćwiczenie skądinąd (książka lub strona internetowa), przytocz źródło.

Aby pomóc Ci pomyśleć o typowym studentach pierwszego roku, zapoznaj się z listą myślenia Beloit , zawierającą wiele przykładów, które z pewnością sprawią, że poczujesz się stary.

Macneil
źródło
Po prostu z ciekawości, jakiego poziomu uczniów uczysz, że uważasz, że tematy takie jak rekurencja i projektowanie obiektowe są zbyt zaawansowane? Tematy te zostały szczegółowo omówione w moim pierwszym semestrze, na zajęciach z programowania wstępnego. Myślę, że wyrządzasz uczniom niedogodności, jeśli starasz się, aby zajęcia były zbyt uproszczone.
Mayra,
@Mayra: To wprowadzenie do kursu programowania, pierwszego kursu dla kierunków CS. Szukam ekscytujących problemów dla studentów do wykorzystania w ciągu pierwszych 5 tygodni (a nawet pierwszego dnia) i nie tylko na koniec. Praca z tymi wymaganiami jest prawdziwym wyzwaniem (i wierz mi, że niektóre problemy są poza moją kontrolą), dlatego zwracam się do was z prośbą o pomoc.
Macneil,

Odpowiedzi:

9

Biorąc pod uwagę ograniczenia, sugerowałbym wdrożenie wersji Hangmana. Pozwoliłoby to uczniom zademonstrować wszystkie techniki, które wprowadzasz, bez nadmiernej złożoności.

Może być również wykorzystywany jako projekt rozwijający się w miarę postępu kursu. np. po omówieniu ciągów znaków i zmiennych zaczyna się jako wersja tekstowa

na przykład

You have 10 guesses left.      * * * E * * T
What is your next guess?

następnie wprowadź pętle, aby usunąć wycięty i wklej element z kodu, gdy 10 odgadnięć odlicza ... budowanie do posiadania grafiki liniowej i wieszania / zapisywania osoby pod koniec 5-tygodniowego kursu.

Podobnie jak większość innych osób, które mają doświadczenie w rekrutowaniu i przeprowadzaniu wywiadów z programistami, naprawdę czuję się przygnębiony, że ten poziom czesnego jest potrzebny na uniwersytecie, ale niestety prawdopodobnie będzie nadal potrzebny, dopóki szkoły nie potraktują programowania jako poważnego przedmiotu na równi z matematyka lub nauki ścisłe

Michael Shaw
źródło
Świetny pomysł! Myślę, że użyję tego. :-) BTW, co rozumiesz przez „poziom czesnego”? Jak w kosztach?
Macneil
Bardziej przeszkadza mu brak nauki programowania przed uniwersytetem. Wyobraź sobie, że przybywasz na uniwersytet, by robić chemię, i spędzasz pierwszy termin na informowaniu o atomach, cząsteczkach i elektronach. 3 lata to po prostu za mało czasu na zrozumienie informatyki.
Michael Shaw
Naprawdę podoba mi się ten pomysł, bez potrzeby skomplikowanej grafiki, można go dość dobrze wykonać w wierszu poleceń. To zabawne i nie jest kolejnym rozwiązaniem problemów matematycznych.
Joppe,
7

Wygląda na to, że tekstowa gra przygodowa może być świetnym zadaniem gdzieś w połowie semestru. Miałem zajęcia, które zmusiły nas do gry w Colossal Cave Adventure, a następnie do stworzenia własnej gry. Nauczył mnie wielu podstawowych konstrukcji na początku i było fajnie, że wszyscy się w to wcielili.

Morgan Herlocker
źródło
2
Brzmi zabawnie, ale miej to na uwadze.
7

Co powiesz na użycie jednego lub dwóch problemów ze strony http://projecteuler.net/ Niektóre z nich są dość interesujące i można zauważyć korzyści płynące z napisania programu do ich rozwiązania. Są na tyle małe, że kilka można wykonać jako zadania. Innym, którego lubię używać, jest znalezienie 1,00 USD słów. Każda litera w alfabecie jest warta swojej pozycji w centach, tj. A = 1, b = 2. Ile słów 1,00 $ można znaleźć? Może to obejmować operacje wejścia / wyjścia pliku (czytanie w słowniku), tablice, zapętlanie itp.

Przyjemny
źródło
1
+1 dla Project Euler. Bardzo fajny. Chociaż niektóre problemy są nieco zbyt zaawansowane, jest wiele takich problemów.
Macneil,
Uwielbiam Project Euler, ale nie jestem pewien, czy byłoby fajnie, gdybym musiał ćwiczyć na uniwersytecie.
Oliver Weiler
Nie, nie wszyscy z nich byliby zabawni, ale niektórzy uważam, że powinniśmy być dobrym wyborem
Gratzy
6
  • Zaimplementuj grę Monopoly. Monopol ma oczywistą sekwencję i bardzo łatwo dzieli się na funcitony. Wymaga również tylko jednowymiarowej tablicy i kilku podstawowych klas. Logika jest na tyle prosta, że ​​uczniowie zastanowią się więcej nad „jak” niż „co” i da to coś, co można pokazać innym.

  • Daj im zaszyfrowany plik, który został zaszyfrowany przy użyciu pewnej odwracalnej reguły i poproś, aby napisali dekoder (choć uprość to). Daje to dodatkową motywację do rozwiązania tego problemu z powodu tajemnicy dotyczącej treści wiadomości.

  • Nie wiem, dlaczego obejmujesz tylko tablice jednowymiarowe, a nie macierze (tak naprawdę nie są aż tak różne), ale jeśli chcesz włączyć to do sylabusa Gra życia Jona Conwaya jest również stosunkowo łatwa i daje w wyniku coś zabawa.

  • Gra taka jak szachy wymaga przemyślenia, ale nadal mieści się w zakresie tego, co początkujący może zrobić przy minimalnym dziedzictwie (konkretne elementy dziedziczą z kawałka klasy ogólnej, a na planszy znajdują się obiekty typu Piece) oraz tablice 2D (możesz wybrać uprościć to, nie wymagając implementacji trudnych rzeczy, takich jak wykrywanie gwiaździstych gali lub niemożność zamku, jeśli pionki wroga zagrażają ścieżce roszady).

EpsilonVector
źródło
+1 za sugestię gry Monopoly. Jeśli chodzi o tablice 2D, absolutnie zgadzam się, że mogą one prowadzić do bardzo interesujących zadań. Istnieją jednak ograniczenia, które sprawiają, że tablice 2D nie są wykonalne (np. Podręcznik jest już naprawiony, a miliard innych zagadnień politycznych na wydziałach, którymi cię nie nudzę, ani nie będę nudził cię swoją osobistą opinią na ich temat sprawy poza moją kontrolą).
Macneil,
Ach, musieliśmy stworzyć grę monopolistyczną w szkole. I wyłącznik szyfrowania.
Carra,
+1 za Monopol. Po zakodowaniu przez uczniów poproś ich o wygenerowanie prawdopodobieństwa lądowania na różnych właściwościach. Ta wiedza naprawdę pomaga strategicznie.
joshdick
4

W szkole stworzyliśmy całkiem sporo projektów z tylko we / wy, funkcjami i operatorami warunkowymi. Wszystko zrobione, zanim dowiedzieliśmy się o programowaniu obiektowym. Projekty te postępowały powoli, by stawać się coraz trudniejszym. Wystarczy powiedzieć, że 4 godziny, które mieliśmy każdego tygodnia, nie były prawie wystarczające pod koniec roku.

Wszystkie te projekty zostały wykonane przy użyciu tylko funkcji i operacji we / wy:

  • Gra, która się uczy. Bierzesz kilka patyków, komputer bierze kilka patyków. Powtarzać. Ostatni, który trzyma kij, traci. Musieliśmy stworzyć prosty program do nauki, który był lepszy po każdej grze. Dobry przykład do nauki tablic 2D.

  • Łamacz kodów. Znasz szyfrowanie Cezara, wybierz literę i dodaj wartość litery do każdej litery twojego słowa. Np. Klucz = „a” i słowo = „sekret”. Oznaczałoby to „tfdsfq”. Można tego dokonać, czytając plik, a następnie tworząc tabelę częstotliwości dla każdej litery. Czytasz także w angielskiej biblii. Następnie możesz po prostu zobaczyć, że najczęściej używaną literą w alfabecie angielskim jest „e” i rozwiązać ją. Dodatkowe wyzwanie: użyj klucza takiego jak „ab”, co było naszym zadaniem. Dobre ćwiczenie na zrozumienie we / wy.

  • Kreator kodów kreskowych. Ten program był ćwiczeniem do wywołania biblioteki zewnętrznej. Masz kod i musiałeś wygenerować obraz z kodem kreskowym. Do wygenerowania obrazu użyto zewnętrznej biblioteki.

  • Algorytm genetyczny do rozwiązania problemu podróżujących sprzedawców. Był to bardziej zaawansowany projekt dla 2 lub 3 osób. Zaczynasz od losowej trasy i ta trasa cały czas się poprawia, aż do uzyskania „dobrej trasy”. Bonus: utwórz mapę z trasą.

  • Działający program do kompresji Lzw . To był ostatni projekt dla 4 osób. Parametry były dość proste. „Zip file.txt file.zip” lub coś podobnego. Zabawny projekt, ale zrozumienie algorytmu Lzw zajęło trochę czasu.

Carra
źródło
Bardzo ciekawe ... Do jakiej szkoły chodziłeś? Czy to wszystko było na pierwszym roku?
Macneil,
Był to kurs rozgrzania ludzi do specjalizacji inżynieria informatyczna. Po tym roku nadal możesz zmienić specjalizację. Uczniowie znali podstawowe pętle, niektóre wejścia / wyjścia do ekranu / plików i funkcji.
Carra
3

Kalkulator byłby dobrym projektem do nauki operacji arytmetycznych. Możesz uczynić go prostą aplikacją konsolową opartą na menu lub graficznym interfejsem użytkownika. Cztery funkcje (+, -, *, /) na start, z dodatkowymi punktami dla bardziej złożonych rzeczy, takich jak pierwiastek kwadratowy itp.

W przypadku obsługi ciągów sugerowałbym pewne problemy z weryfikacją. Przychodzą mi na myśl adresy e-mail - pozostawienie ich niezaznaczonych może prowadzić do luk w iniekcji SQL lub innych rzeczy, a ich weryfikacja jest stosunkowo prosta. Do dołączania może mieć program, który może przyjmować pierwsze, środkowe i nazwiska oraz łączyć je ze spacjami, a także brać pełną nazwę i parsować ją w każdym komponencie. Pierwszy jest używany bardziej niż drugi w prawdziwym życiu, ale nie byłem w stanie wymyślić innego scenariusza analizowania, który byłby wystarczająco prosty.

Aby zademonstrować metody statyczne, możesz przypisać problem z wyszukiwaniem wiadomości e-mail. Posiadaj plik nazw i wiadomości e-mail, a konstruktor statyczny może umieścić nazwy / wiadomości e-mail na liście za pomocą statycznej metody znajdowania wiadomości e-mail dla danego imienia.

Mam nadzieję, że te dadzą ci kilka pomysłów! Powodzenia w twojej klasie.

Michael K.
źródło
1
+1 dzięki! To jest dokładnie taka odpowiedź, jakiej szukam.
Macneil,
Gry są bardziej zabawne niż kalkulatory.
3

Jedną z bardzo interesujących i fajnych rzeczy do wykonania zadania jest napisanie implementacji Gry Życia Conwaya w 2D. Bardzo dobrze odwzorowuje podstawowe struktury danych tablicowych, jest zabawny i dość łatwy do zrobienia, ale wciąż wymaga myślenia. Może to także wywołać ciekawość i eksperymenty (AI).

Zaawansowani uczniowie mogą napisać wersję w 3D za dodatkowe punkty.

Martin Wickman
źródło
3

Chciałbym przeprowadzić iterację na generatorze liczb pierwszych.

Zadania

  1. Drukuj liczby pierwsze od 1 do 100.
  2. Wydrukuj liczby pierwsze z input1 na input2.
  3. Rejestruj i drukuj dane dotyczące wydajności pierwszej generacji.
  4. Dane wydajnościowe wykresu generacji pierwszej.
  5. Powtórz optymalizację algorytmu generatora liczb pierwszych.
dakrakot
źródło
2

Korzystam z Biblioteki ACM, aby pomóc uczniom wprowadzającym w tworzeniu prostych grafik i gier. Byliśmy w stanie tworzyć podstawowe, oparte na kliknięciach gry dla dwóch graczy, z niczym więcej niż umiejętnościami, które przedstawiłeś. W tym tygodniu grają w Fox and Hounds .

Starałem się trzymać jak najdalej od wejścia / wyjścia konsoli. Jest to obca koncepcja dla wielu studentów, ponieważ wszyscy dorastali z GUI. Dlatego skupiam się na MVC, poprawie modelu i dodaniu GUI dopiero po przetestowaniu jego modelu. Testowanie odbywa się za pomocą zautomatyzowanych testów jednostkowych i Code Pad w BlueJ . Nigdy nie public static void main()jest konieczne.

Barry Brown
źródło
ciekawy. Być może napisałbyś swoje doświadczenia w artykule lub wpisie na blogu?
2

Uczyłem wstępu w ostatnim stuleciu i było to PODSTAWOWE, ale tak jak ty chciałem zachęcić uczniów do zabawy w ich własny projekt. Zasugerowałem więc kilka możliwości:

  • Prosta gra przygodowa, taka jak Wumpus
  • Symulacja sportowa (tylko tekst, grafika dla ambitnych) na baseball lub cokolwiek innego
  • Nauka, jak symulacja ewolucji genetycznej
  • Sport / nauka, jak wyścigi na żaglówkach
  • Finanse, takie jak posiadanie własnego banku dla ludzi w domu lub inwestycje
  • Muzyka lub proste gry graficzne

... lub cokolwiek, co pomyśleli uczniowie. Przyszli do mnie i powiedzieli „a może program do XYZ?” i zawsze mówiłbym „Świetnie”, a potem może trochę ich poprowadziłem, żeby nie komplikował.

Zazwyczaj ich projekty zawierały kilkaset linii kodu i zawsze im się podobało.

PS Przypisałem to zadanie, gdy uczniowie znali podstawowe struktury kontrolne, operacje we / wy, tablice i pliki sekwencyjne. Był to projekt terminowy, znaczna część ich oceny, a ja miałem pośrednie zadania pośrednie, takie jak zarys częściowy, więc nie próbowali zrobić tego wszystkiego na końcu i uderzyli w ścianę. Chciałem zaangażować ich w to jak najwcześniej w semestrze, kiedy mieli wystarczająco dużo umiejętności, aby zacząć, zwykle około 6 lub 8 tygodnia.

Mike Dunlavey
źródło
1

Miałem nauczyciela, który napisał program, dla którego napisałeś moduły. Zasadniczo była to gra i trzeba było napisać algo, aby ją rozwiązać, wszystko było po to, aby była graficzna, ładna i ładnie działała. Być może powinieneś napisać własne środowisko gry i dać im podstawowe narzędzia, które są głupimi wersjami fajnych rzeczy, które mogą zrobić później poza pudełkiem, w którym je umieściłeś.

Incognito
źródło
1

Na moim wstępie utknęły we mnie trzy projekty

Napisz program do wyświetlania losowego obrazu Mondriana
Napisz pierwszą część gry BrickBreaker, odbijając piłkę w wyznaczonym obszarze
Napisz tekstową grę przygodową

Z mojej klasy algorytmów
zaimplementuj trójkąt Serpinski

Te cztery projekty pozwoliły mi doskonale zrozumieć przetwarzanie ciągów, randomizację, grafikę, rekurencję i animację.

Jason
źródło
1

Czy wszyscy uczniowie w klasie kierunków CS? Domyślam się, że nie. Wymyśliłem zadania dostosowane do głównych kierunków w klasie.

Przykłady:

  • Studenci sztuki mogliby napisać program, który przyjmuje wymiary kawałka płótna, a ramka do obliczenia ilości płótna byłaby niedostępna do malowania (z powodu owijania i zszywania płótna wokół ramy).

  • Studenci Econ mogli obliczyć odsetki złożone od przedmiotu.

  • Studenci matematyki mogli wybrać problemy z projektu Euler.

Kavet Kerek
źródło
1
Klasa przeznaczona jest dla kierunków głównych i innych. Wielu jest w biologii.
Macneil,
Ciekawy. Pomysł: znajdź zdjęcie organizmów jednokomórkowych pływających w wodzie. Konwertuj obraz na czarno-biały. Napisz program zliczający liczbę organizmów w wodzie. Pojawi się wiele interesujących tematów dyskusji: wykrywanie krawędzi, rozróżnianie między wodą a wodą, eliminacja pyłu itp.
Barry Brown
dobrze dla bio, oczywistą rzeczą, która przychodzi na myśl, są automaty komórkowe. Możesz zdobyć łupy na bioquest.org, aby uzyskać kilka pomysłów.
Kavet Kerek
1

W szkole średniej wziąłem lekcję programowania wprowadzającego i korzystaliśmy z Karela J. Robota . Zapewnia GUI do przeglądania robota i ma bardzo podstawowy zestaw czujników i metod ruchu, które musisz rozszerzyć, aby robić ciekawe rzeczy. Myślę, że jest to dobre, ponieważ roboty są łatwe do zrozumienia dla osób, które jeszcze nie zrozumiały różnicy między oprogramowaniem.

Istnieje również Processing , który właśnie odkryłem, który pierwotnie został zaprojektowany do nauczania programowania, a także w Javie.

Nick Donohue
źródło
0

Będę tutaj dysydentem. Myślę, że powinieneś dać im ważne problemy biznesowe, aby rozwiązać problemy z zabawkami. Jeśli nie są wystarczająco poważni, aby być zainteresowani i zmotywowani pracą, którą faktycznie wykonają jako profesjonaliści, wolałbym, żebyś ich oblał podczas kursu wprowadzającego. Prawdziwa praca nie polega na tworzeniu fajnych rzeczy, ale na zaspokajaniu potrzeb klienta. Widziałem też wielu ludzi, którzy nie potrafią; skoczyć między tym, czego uczą się w grze, a wykorzystaniem tych samych technik w programowaniu biznesowym.

Każdy starszy programista i menedżer ds. Rekrutacji, których znam, jest oburzony jakością ostatnich absolwentów. Spróbuj skoncentrować się na tym, czego potrzebują, aby nauczyć się pracować w prawdziwym świecie, i zapomnij o tym, aby było fajnie.

HLGEM
źródło
Myślę, że wielu studentów uznałoby problem biznesowy za interesujący. Jeśli możesz zasugerować coś konkretnego i poprawić swoją odpowiedź, która byłaby pomocna. Szukam szczegółów.
Macneil,
1
To powinien być problem, że oni nie mogą (łatwo) zrobić na swoim kalkulatorze TI-83. Jeszcze inny kalkulator podatkowy tego nie obetnie.
Barry Brown
1
Ci studenci są nowicjuszami w programowaniu i muszą podjąć swoje kroki w tym kursie. Nudzenie nie jest może najskuteczniejszym sposobem nauczenia ich programowania i powinniśmy spojrzeć na najlepszych nauczycieli, zamiast zmuszać ich do recytowania specyfikacji Java od końca do końca.
1
Nie. Te projekty powinny przede wszystkim być zabawne. Zabawne projekty mogą być trudne. W rzeczywistości większość moich domowych projektów jest trudniejsza niż codzienne programowanie w pracy.
Carra
2
Rozumiem twój punkt widzenia, ale z szacunkiem nie zgadzam się, przynajmniej częściowo, a przynajmniej na kurs wprowadzający. Istnieje wiele sposobów programowania, które można podjąć, i myślę, że taki kurs powinien obejmować różne rzeczy, które mogą zrobić programy. Pokazanie uczniom, że komputery są przydatne tylko w przypadku problemów, które uważamy za „niezbędne w biznesie”, nie czyni kreatywnego programisty, ponieważ ogranicza ich sposób myślenia. Myślę, że dobrze zaprojektowany kurs stanowiłby wyzwanie dla studentów do rozwiązania rzeczywistych problemów, oprócz pokazania zabawnych rzeczy, które mogą zrobić komputery, takich jak programowanie gry
Nick Donohue
0

Zadanie polegające na zbudowaniu głupiego widgetu na ich telefonach komórkowych. Coś, co mogliby pokazać swoim znajomym. Mam niedrogi telefon AT&T i wymaga plików jar.

Paul Nathan
źródło
0

Najważniejsze zadania, które widziałem, zmuszają ludzi do myślenia o czymś, czego inaczej by nie rozważyli. Coś całkowicie poza prostym materiałem kursu, coś, co wydaje się niemożliwe. Coś, co ma wiele poprawnych rozwiązań.

Kilka, które zrobiły na mnie wrażenie:

  1. Roshambo AIs (używane na kursie AI w UOA). Prosta funkcja, która zwraca -1, 0, 1 dla kamienia, papieru, nożyczek. AI są przeciwko sobie, a statystyki są gromadzone przez zagregowany program narzędziowy. Zadanie to nieustannie zaskakuje ludzi, ile podejść jest wykonalnych (i ilu osiąga tak słabe wyniki).

  2. Proste problemy z sortowaniem o niemożliwych cechach. Posortuj plik o nieskończonej długości za pomocą skończonej pamięci. Ten problem wstrząsnął moimi podstawami myślenia w algorytmach. Istnieje wiele powiązanych problemów: średnie okienkowe dla danych o nieskończonej długości itp., Każde z nich wymusza rozwiązanie czegoś z pozoru niemożliwego.

  3. Problemy z symulacją, które wydają się trywialne. Symulacje ruchu (pojazd, sieć), symulacje samochodu wyścigowego (lewy, prawy, szybszy, wolniejszy), symulacje sklepu spożywczego.

  4. Problemy z siecią (duża słabość wśród absolwentów, z którymi pracowałem przez ostatnie kilka lat). Problemy z siecią równorzędną z urządzeniami przenośnymi, na przykład dowodzenie złożoności problemów z synchronizacją n, aktualizacjami równorzędnymi, zaufaniem równorzędnym itp.

  5. Małe języki (kolejna słabość ostatnich stopni). Opracuj mały język dla prostej gry AI (warcaby, roshambo, czołgi, CSS mojo, boty na Twitterze). Myślenie o koncepcjach projektowania języka, interpretacji i działań jest fundamentalne.

Bruce Alderson
źródło
Czy AI, papier, kamień, nożyce poznają wynik, czy zobaczą historię?
Macneil
Tak, historie są dostępne za pośrednictwem tablic w przykładzie C (ale dotyczyłoby to również Java, Ruby itp.). Sprawdź oryginalną stronę konkursu: webdocs.cs.ualberta.ca/~darse/rsbpc.html
Bruce Alderson