Platón, potom programování?

Studium „Liberal Arts and Sciences“ znamená, že ve výběru předmětů jsem omezen jen vlastními schopnostmi a zájmy. Po semestru Directed Studies, interpretačního studia základních děl západní civilizace, jsem se rozhodl jít o něco techničtější cestou. A přestože Yale není MIT ani Matfyz, jde to velmi slušně.

Přestože mám přísně vzato zapsaný jen jeden předmět přímo z oddělení informatiky, celkem se účastním kurzů čtyř. Jen ze dvou ale dostanu známku. Jak je to možné?

Prvním známkovaným kurzem je Introduction to Computer Science („Úvod do informatiky“). Jako jediný z oněch čtyř je především teoretický: používá dialekt jazyku Lisp (pro zájemce - Scheme R5RS) k výuce rekurze (ostatně, bez ní by to v Lispu pořádně nešlo), komputability (např. problém zastavení a Turingovy stroje), návrhu logických obvodů, základů designu elektronkových počítačů a podobně. V zásadě každý týden dostáváme „problem set“ – sadu úloh, jejichž řešení mi průměrně trvá kolem šesti hodin. Přestože Lisp/Scheme dnes používá jen hrstka programátorů a přímá využitelnost je tedy mizivá, tento předmět mě asi baví z mého rozvrhu nejvíc: principy funkcionálního jazyka jsou totiž dobře přenosné do jakékoli další „štace“.

V náročnosti si nezadá s Introductory Data Analysis („Úvod do analýzy dat“), který nabízí oddělení statistiky. Za náročnost si ale z větší míry mohu sám – provedl jsem totiž osobní rozhodnutí, že přeskočím úvodní kurz statistiky a co mi schází, to se v průběhu doučím. Tím jsem si trošku naběhl. Přestože profesor Jay Emerson používá v tomto kurzu R, statistický interpreter o něco intuitivnější než Stata či Matlab, důraz je především na kvalitní statistické myšlení: heslem dne je „nikdy nevěř svým datům“. Podobně jako Úvod do informatiky má tento kurz dlouhé domácí úkoly; rozdílem je ale to, že Introductory Data Analysis nemá vůbec žádné testy či zkoušky. Naše známka se v zásadě rovnoměrně dělí mezi problem sets a finální statistický projekt. Ještě si nejsem jist, jaká data budu analyzovat – ale už se na ně těším.

Zbylé dva kurzy jsou neznámkované, protože jsou neoficiální. Prvním je „Introduction to iOS“, tedy programování pro iPhone v Objective-C, vyučuje skupina zkušenějších studentů. Jejich iniciativa se jmenuje HackYale; tento semestr vyučují další tři kurzy pro začátečníky i pokročilé. Ten druhý kurz má o něco oficiálnější infrastrukturu: je totiž součástí mého zaměstnání. Pro Yale Student Technology Collaborative sice pracuji především jako „ajťák“ – poskytujeme pomoc studentům se softwarovými i hardwarovými problémy – ale jelikož STC vyvíjí aplikace pro vlastní i cizí potřebu, nabídlo nám i vyučování skupinového vývojářství v Ruby on Rails. Praktičnost je na prvním místě: doufám, že na konci semestru bude užívání Gitu a Rails mojí druhou přirozeností.

Parádní je, že výukou dobrodružství nekončí. Studentská skupina Yale Hackers pořádá HackNights – večery s přednáškami, pomocí a pizzou – a také Yale Hackathon, celovíkendovou soutěž o co nejlepší startup. (Nesoutěžně jsem se ho zúčastnil a dokončil jsem v PHP algoritmus pro usnadnění zařazování studentů Directed Studies do časově vhodných diskuzních sekcí. Potom jsem si při řešení prezentační stránky uvědomil, proč všichni – všichni! – v místnosti už dávno přešli na Rails; vytvářet ručně od základů vnější skořápku aplikace je, na rozdíl od řešení zajímavého algoritmického problému, nuda k uzoufání.) Naše studentská rada také vypisuje každoroční App Challenge, která vypisuje ceny pro studentské programátory, jejichž aplikace co nejvíce zlepší život studentů; jednoho projektu se účastním, takže mi můžete držet palce.

Takže to je možné – přejít od Platóna k Pythonu a od Ovidia k objektovému programování. Mým dalším plánem je, alespoň prozatím, na podzim vyměnit Python za psychologii (behaviorální ekonomie volá!), mikrobiologii (ať žije modelování systémů!) a teoretickou matematiku. Ani Yale neumožňuje získat titul bakaláře ve Studiu Všeho (viz ilustrace) a za rok budu muset deklarovat obor; pro tuto chvíli ale oceňuji, že mohu nabírat přesně takové zkušenosti a schopnosti, které pro sebe považuji za užitečné.