Świątecznie zadanie dla studentów

Co roku z okazji zbliżających się świąt proponuję studentom wstępu do programowania w pythonie na 1 roku w ramach kartkówki zadanie odmóżdżające polegające na przygotowaniu wykresu o tematyce świątecznej. Święta zbiegają się mniej więcej z wprowadzeniem do biblioteki matplotlib, więc i zadanie nie jest mocno naciągane od strony merytorycznej. Gdy dawałem to zadnie pierwszy raz byłem przekonany, że jest to z mojej strony prezent w postaci darmowego punktu do zaliczenia. Niestety co roku zdarzają się osoby, dla których wymyślenie współrzędnych kolejnych wierzchołków łamanej w kształcie choinki jest zbyt trudne.

Zadanie to ma jeszcze jeden ukryty cel – bardzo ładnie pokazuje czy dany student jest dobrym materiałem na fizyka-programistę:

  • Są osoby, które każdy element “rysunku” tworzą oddzielnie – nawet elementy choinki bywają narysowane jako pojedyncze proste. Gwiazdki / bombki również są w takich przypadkach rysowane przez wielokrotne wywołanie plot(). Autorzy takich prac z reguły mają duży problem z zaliczeniem tego prostego i wprowadzającego kursu.
  • Standardem są rozwiązania odrobinę bardziej przemyślane, gdzie wierzchołki łamanych i dodatkowe elementy są definiowane jako listy. O ile sam sposób rysowania może być przemyślany, o tyle współrzędnej dalej są wpisane ręcznie w kod programu. Większość autorów takich rozwiązań nie ma problemu z zaliczeniem przedmiotu na czwórkę.
  • Najrzadsze i najlepsze rozwiązania uwzględniają różnego rodzaju reguły matematyczne: np. funkcja generująca współrzędne łamanej tworzącej choinkę przyjmująca ilość gałęzi i wysokość jako parametry. Taka rozwiązanie spotkałem nie częściej niż raz na rok. Autorzy zaliczają zawsze na piątkę i nie mają problemów z pozostałymi (trudniejszymi) przedmiotami.

Najważniejsze w tym zadaniu jest nie sugerowania ani efektu końcowego, ani sposobu rozwiązania. Dzięki temu uruchamiana jest kreatywność (lub jej całkowity brak) i podświadome umiejętności programistyczne: czy dana osoba traktuje komputer jak ślepego wykonawce poleceń, czy jako maszynę która potrafi postępować na podstawie algorytmu.

Myślę, że mogłoby to być bardzo sprytne zadanie rekrutacyjne. Moi studenci dostawali na rozwiązanie 15-20 minut. Oto kilka przykładów:

|

Odpowiedz