Projekt Zespołowy

Prowadzący

Jakub Sygnowski

Opis

Proponuję bardzo praktyczne warsztaty z informatyki, których celem będzie napisanie jednego większego projektu informatycznego. Z (własnego) doświadczenia wiem, że w liceum mało kto ma okazję pracować nad czymś większym niż 200 linijkowy kod na olimpiadę. Pisanie większego projektu wymaga skupienia się na trochę innych aspektach programowania (np. pisanie czytelnego kodu, kontrola wersji). Z drugiej strony, ja nigdy nie próbowałem ogarniać projektu, który pisałoby więcej niż 4 osoby, także też mam nadzieję się czegoś nauczyć ;)
Temat samego projektu zostanie wybrany (pewnie w głosowaniu) spośród (sensownych) propozycji uczestników i moich1. Mam nadzieję, że powstanie coś fajnego, albo przynajmniej będziemy się dobrze bawić ;)

Program zajęć

Wstępnie program zajęć widzę tak:

  1. podział na 2-3 osobowe grupy, zastanowienie się nad schematem aplikacji, uzgodnienie API między zespołami
  2. klepanie
  3. integracja pracy poszczególnych zespołów

Wymagania

  • Java

Żeby dać szansę wszystkim się przygotować do warsztatów, już na początku wybieram język i system kontroli wersji, którego użyjemy. Będą nimi: Java i git.2. Zakładam, że typowy uczestnik warsztatów miał jakąś styczność z programowaniem jako takim wcześniej, a na warsztaty poznał podstawy nowego języka (oraz gita). Jednakże na warsztaty zapraszam też osoby, które nie programują, a np. umieją robić grafikę, czy generalnie mają ochotę i pomysł jak zrobić coś fajnego w ramach projektu (w sumie to trochę zależy od tego, co będziemy pisać/ile będzie osób piszących) - takie osoby proszę o maila (po zakwalifikowaniu się na WWW), gdyż nie za bardzo mam pomysł, jak uwzględnić je w kwalifikacji3

Podejrzewam, że podczas programowania wyjdzie dużo różnych problemów związanych z samym językiem, technologią, integracją, etc.. Oczywiście będę starał się pomagać, ale cenna będzie umiejętność samodzielnego wygóglowania sobie rozwiązania szukanego problemu. Przy okazji, w przypadku programowania, polecam góglowanie po angielsku

  • Git

Git to jeden z popularniejszych (jeśli nie najpopularniejszy) system kontroli wersji. Tego typu narzędzia służą do integracji pracy kilku osób na jednym kodzie źródłowym, przechowują historię zmian, ułatwiają peer review. To narzędzie bardzo nam się przyda, jednakże (znowu) nie wymagam jakiejś szczególnej jego znajomości; na początek warto poznać polecenia: status, log, diff, clone, commit, push, pull, potem ewentualnie tworzenie gałęzi (branchy).

  • Leksykon

Zakładam też (intuicyjną) znajomość pojęć takich jak:
klasa (abstrakcyjna), obiekt, (publiczne/prywatne/statyczne) pole, metoda, API, (G)UI, IDE, dziedziczenie, diagram UML, <miejsce na to, co mi się przypomni>
Warto też znać jakiś mechanizm automatycznego formatowania kodu. Eclipse ma jakiś; jak nie, to zdarzało mi się używać astyle.

  • Własny laptop

Do programowania może się przydać komputer. Nie wiem, jak będzie z dostępem do komputerów w Węgorzewie, podejrzewam że kiepsko; tak czy inaczej na swoim się wygodniej pisze.

Materiały

  • Java

Generalnie do pisania w Javie polecam użycie jakiegoś IDE. Sam używam Eclipse'a, którego polecam (ma dużo opcji, których większości nie znam, ale te które znam, są fajne). (Żeby mieć zintegrowanego Gita w Eclipsie należy doinstalować plugin EGit). Jednakże jest dosyć 'ciężki' - z lżejszych IDE słyszałem, że netbeans też jest ok, a jeszcze lżejszych, to polecam SublimeText2.
Nauka javy - imo najlepiej uczy się pisząc kod, ale na początek może warto przejrzeć tutorial.

  • Git

Tutoriali gita dostępnych w internecie jest mnóstwo, mi podoba się np. ten tutorial lub ten (od 7 strony) tutorial2, o jeszcze ten.

Zadania kwalifikacyjne

tutaj

Kontakt

Lubię dostawać maile, więc zachęcam do kontaktu ze mną jeśli coś jest niejasne, albo ma się problem z zadaniami kwalifikacyjnymi. Bardzo zachęcam do zabrania się za zadania kwalifikacyjne wcześniej, wtedy a) ja będę miał więcej czasu na ich sprawdzenie, b) jest szansa dostać feedback wcześniej i coś poprawić

Pytania:

  1. SJ: Jaką bibliotekę graficzną polecasz do rysowania map w zadaniu drugim?
  2. JS: Moim założeniem było, żeby te mapy rysować w konsoli (tak, jak były narysowane przykładowe mapy)
  1. MZ: 'rozwiązać konflikt…' - ale jaki konflikt? Robię wszystko na swoim branchu/forku, więc nie mam konfliktu
  2. JS: Istotnie, mogłeś nie mieć konfliktu, jak tak się zdarzyło, to ok.

Uwagi

  • Jeśli jest zapotrzebowanie na materiały po polsku, nie bój się do mnie o to napisać
  • Moje nastawienie do prowadzonych przeze mnie warsztatów jest takie, że jestem tylko jedną z kilku(nastu? byłoby fajnie ^^) osób biorących w nich udział, więc jeśli masz jakieś uwagi, chciałbyś, żeby coś wyglądało inaczej - proszę o informację.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License