Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:jimp2:2016:start [2016/02/17 21:39]
kkutt
pl:dydaktyka:jimp2:2016:start [2019/06/27 15:50] (aktualna)
Linia 2: Linia 2:
   * **Kierunek**:​ Informatyka   * **Kierunek**:​ Informatyka
   * **Rok**: I   * **Rok**: I
-  * **Prowadzący**:​ [[http://​home.agh.edu.pl/​~kkutt/​|mgr inż. Krzysztof Kutt]]+  * **Prowadzący**:​ 
 +    * [[http://​home.agh.edu.pl/​~kkutt/​|mgr inż. Krzysztof Kutt]] ​(I połowa semestru) 
 +    * [[http://​home.agh.edu.pl/​~mslaz/​|mgr inż. Mateusz Ślażyński]] (II połowa semestru)
  
 ===== Organizacja zajęć i zasady zaliczenia ===== ===== Organizacja zajęć i zasady zaliczenia =====
Linia 8: Linia 10:
   * Ogólne zasady, które Państwa **obowiązują**:​ [[http://​geist.agh.edu.pl/​pub:​teaching:​gris|GRIS]] - proszę przeczytać,​ zrozumieć, ew. wątpliwości zgłosić na 1.-2. zajęciach   * Ogólne zasady, które Państwa **obowiązują**:​ [[http://​geist.agh.edu.pl/​pub:​teaching:​gris|GRIS]] - proszę przeczytać,​ zrozumieć, ew. wątpliwości zgłosić na 1.-2. zajęciach
     * Proszę zwrócić uwagę na sposób informowania Państwa o aktualnościach,​ tryb konsultacji,​ zasady dotyczące kolokwiów i obecności.     * Proszę zwrócić uwagę na sposób informowania Państwa o aktualnościach,​ tryb konsultacji,​ zasady dotyczące kolokwiów i obecności.
 +
 +  * Zajęcia w **pierwszej** części semestru prowadzi mgr inż. Krzysztof Kutt. \\ Zajęcia w **drugiej** części semestru poprowadzi mgr inż. Mateusz Ślażyński.
 +  * **Ocena końcowa** jest średnią ocen z pierwszej i drugiej części semestru. Każdą z nich trzeba niezależnie od siebie zaliczyć.
 +
 +===== WYNIKI =====
 +
 +Poniższy {{:​pl:​dydaktyka:​jimp2:​2016:​jimp2-ok.pdf|arkusz}} zawiera punktację z drugiej części laboratorium oraz podsumowanie:​ liczbę zdobytych punktów (procentowo) na obu częściach laboratorium oraz ich średnią wartość. Na tej podstawie wpisane są tam oceny końcowe z laboratorium.
 +===== I część: Podstawy programowania obiektowego w C++ =====
 +
 +==== Harmonogram ====
 +^L.p.^ Termin ^ Laboratorium ^
 +^1.|25.02.2016|[[.:​labs:​wprowadzenie|Wprowadzenie do programowania w C++]]|
 +^2.|03.03.2016|[[.:​labs:​pamiec-i-pliki|Dynamiczne zarządzanie pamięcią i operacje na plikach]]|
 +^3.|10.03.2016|[[.:​labs:​klasy1|Klasy i obiekty I]]|
 +^4.|17.03.2016|[[.:​labs:​klasy2|Klasy i obiekty II]]|
 +^5.|31.03.2016|[[.:​labs:​operatory|Przeciążanie operatorów]]|
 +^6.|07.04.2016|[[.:​labs:​dziedziczenie|Dziedziczenie i polimorfizm]]|
 +^7.|14.04.2016|Kolokwium|
 +
 +Laboratoria uzupełniające - **obowiązują na kolokwium!**
 +  - [[.:​labs:​wskazniki|Wskaźniki i referencje]] - powtórka z C przed laboratorium [[.:​labs:​pamiec-i-pliki|Dynamiczne zarządzanie pamięcią i operacje na plikach]]
 +  - [[http://​home.agh.edu.pl/​~gjn/​dydaktyka/​UGLX/​node10.html|Makefile]] - opis budowania programów w środowisku UNIX, potrzebne do laboratorium [[.:​labs:​klasy1|Klasy i obiekty I]]
 +
 +==== Zasady zaliczenia ====
  
   * Na zaliczenie pierwszej części semestru składają się:   * Na zaliczenie pierwszej części semestru składają się:
     * Ćwiczenia na laboratoriach:​ 6 lab * 5 pkt = 30 pkt     * Ćwiczenia na laboratoriach:​ 6 lab * 5 pkt = 30 pkt
-    * [[#​kolokwium|Kolokwium]]: 30 pkt+    * Kolokwium: 30 pkt
   * Powyższe punkty stanowią 100% maksymalnej łącznej liczby punktów (MAX).   * Powyższe punkty stanowią 100% maksymalnej łącznej liczby punktów (MAX).
   * Zgodnie z GRIS do wartości MAX nie wliczają się plusy za aktywność przyznawane za wykonanie odpowiednich ćwiczeń.   * Zgodnie z GRIS do wartości MAX nie wliczają się plusy za aktywność przyznawane za wykonanie odpowiednich ćwiczeń.
Linia 17: Linia 43:
  
   * Rozwiązania zadań na **plusy** można przedstawić **TYLKO na zajęciach**.   * Rozwiązania zadań na **plusy** można przedstawić **TYLKO na zajęciach**.
-  * Rozwiązania zadań na **punkty** można przedstawić **na zajęciach albo przesłać mailem** na [[kkutt@agh.edu.pl]] przed kolejnymi zajęciami (najpóźniej minutę przed rozpoczęciem kolejnych zajęć; np. jeżeli jest się zapisanym do grupy w poniedziałek ​11:00, zadania można wysłać do 10:59 w dniu kolejnych zajęć).+  * Rozwiązania zadań na **punkty** można przedstawić **na zajęciach albo przesłać mailem** na [[kkutt@agh.edu.pl]] przed kolejnymi zajęciami (najpóźniej minutę przed rozpoczęciem kolejnych zajęć; np. jeżeli jest się zapisanym do grupy w czwartek ​08:00, zadania można wysłać do 07:59 w dniu kolejnych zajęć). 
 +  * Na laboratorium można pracować **pojedynczo lub w parach**
  
-  * Zajęcia w drugiej części semestru poprowadzi mgr inż. Mateusz Ślażyński. +=== Kolokwium ===
-  * **Ocena końcowa** jest średnią ocen z pierwszej i drugiej części semestru. Każdą z nich trzeba niezależnie od siebie zaliczyć. +
- +
-==== Kolokwium ​====+
  
   * Kolokwium rozwiązywane jest na kartkach (nie trzeba nic przynosić poza długopisem).   * Kolokwium rozwiązywane jest na kartkach (nie trzeba nic przynosić poza długopisem).
Linia 33: Linia 57:
   * **Na kolokwium należy przyjść na grupę do której jest się zapisanym, zgodnie z listami ocen udostępnianymi przez prowadzącego**. Gdyby ktoś chciał przyjść na inną grupę,​ musi to zgłosić do prowadzącego najpóźniej **tydzień** przed kolokwium!   * **Na kolokwium należy przyjść na grupę do której jest się zapisanym, zgodnie z listami ocen udostępnianymi przez prowadzącego**. Gdyby ktoś chciał przyjść na inną grupę,​ musi to zgłosić do prowadzącego najpóźniej **tydzień** przed kolokwium!
  
-==== Zaliczenia poprawkowe ​====+=== Zaliczenia poprawkowe ===
  
-  * Kolokwia poprawkowe organizowane są **niezależnie** dla I i II części semestru. Poniżej znajdują się informacje dotyczące I części semestru. 
   * Do zaliczenia poprawkowego **mogą przystąpić** osoby które:   * Do zaliczenia poprawkowego **mogą przystąpić** osoby które:
     * Nie mają zaliczenia lub     * Nie mają zaliczenia lub
Linia 45: Linia 68:
  
  
-===== Harmonogram ​===== +===== II część: Szablony i kontenery w C++ =====
-^L.p.^ Termin ^ Laboratorium ^ +
-^1.|25.02.2016|[[.:​labs:​wprowadzenie|Wprowadzenie do programowania w C++]]| +
-^2.|03.03.2016|[[.:​labs:​pamiec-i-pliki|Dynamiczne zarządzanie pamięcią i operacje na plikach]]| +
-^3.|10.03.2016|[[.:​labs:​klasy1|Klasy i obiekty I]]| +
-^4.|17.03.2016|[[.:​labs:​klasy2|Klasy i obiekty II]]| +
-^5.|31.03.2016|[[.:​labs:​operatory|Przeciążanie operatorów]]| +
-^6.|07.04.2016|[[.:​labs:​dziedziczenie|Dziedziczenie i polimorfizm]]| +
-^7.|14.04.2016|Kolokwium| +
-^8.|  //Kolejne zajęcia prowadzi dr inż. Krzysztof Kaczor// ​ ||+
  
-Laboratoria uzupełniające - **obowiązują na kolokwium!** +==== Sprawy Organizacyjne ====
-  - [[.:​labs:​wskazniki|Wskaźniki i referencje]] - powtórka z C przed laboratorium [[.:​labs:​pamiec-i-pliki|Dynamiczne zarządzanie pamięcią i operacje na plikach]] +
-  - [[http://​home.agh.edu.pl/​~gjn/​dydaktyka/​UGLX/​node10.html|Makefile]] - opis budowania programów w środowisku UNIX, potrzebne do laboratorium [[.:​labs:​klasy1|Klasy i obiekty I]]+
  
-Laboratoria dodatkowe - opcjonalneich znajomość nie jest wymagana do kolokwium. Just for fun :-) +Nie zmieściłyby się tutajwięc proszę zajrzeć na [[.:part2:org:start|oddzielną stronę]].
-  - [[.:labs:wyjatki|Wyjątki]] +
-  - [[.:​labs:​dziedziczenie-ex|Dziedziczenie i polimorfizm -- przykłady]] +
-  - [[.:​labs:​stl|Biblioteka standardowa]]+
  
 +==== Ćwiczenia ====
 +
 +Zanim zaczniesz pisać program zapoznaj się z [[.:​part2:​org:​codepolicy|wymaganymi konwencjami]]
 +
 +^ L.p. ^ Tytuł ^ Czas trwania ^ Grupa ^ Deadline ^
 +^ 1. | [[.:​part2:​ex:​ex1|Szablony funkcji]] ​             | 1 tydzień | 2 os. | 28.04 |
 +^ 2. | [[.:​part2:​ex:​ex2|Szablony klas]] ​                | 1 tydzień | 2 os. | 05.05 |
 +^ 3. | [[.:​part2:​ex:​ex3|Szablony + dziedziczenie]] ​     | 1 tydzień | 2 os. | 12.05 |
 +^ 4. | [[.:​part2:​ex:​ex4|Kontenery,​ cd.]]                | 1 tydzień | 2 os. | 02.06 | 
 +^ 5. | [[.:​part2:​ex:​ex5|Iteratory]] ​                    | 1 tydzień | 2 os. | 09.06 |
 +^ 6. | [[.:​part2:​ex:​ex6|Drzewa]] ​                       | Poprawa czerwcowa | 1 os | 29.06 |
 +==== Jak wysyłać wyniki ====
 +
 +  - Przetestować kod: <code bash>g++ -std=c++11 *.cpp -o test && ./​test</​code>​
 +    * :!: proszę użyć kompilatora ''​gcc''​ w wersji ''​4.8.x''​ (tak jak na serwerze borg)
 +    * :!: proszę używać oryginalnego i niezmienionego pliku ''​main'',​ np. ''​ex1main.cpp'',​ ''​ex2main.cpp'',​ etc.
 +  - Jeżeli kod się nie kompiluje:
 +    * proszę go **nie** wysyłać, nie ma po co
 +  - Jeżeli kod się kompiluje:
 +    - proszę stworzyć katalog o nazwie <​numer_grupy>​_<​nazwisko1>​_<​nazwisko2>,​ gdzie numer grupy ''​0''​ oznacza grupę o 08:00, a ''​1''​ grupę o 09:30, np. <code bash>​mkdir 0_Slazynski_Kutt</​code>​
 +    - skopiować istotne pliki do tego katalogu, np. <code bash>cp *.cpp *.h ./​0_Slazynski_Kutt</​code>​
 +    - proszę spakować folder do archiwum zip, rar, 7z, lub tar.gz, np. <code bash>tar -zcf 0_Slazynski_Kutt.tar.gz 0_Slazynski_Kutt</​code>​
 +    - wysłać paczkę na mail [[mailto:​mslaz@agh.edu.pl|mslaz@agh.edu.pl]] z tematem: ''​[JIMP2] Ćwiczenie nr <numer ćwiczenia>'',​ np. ''​[JIMP2] Ćwiczenie nr 1''​
 +    - w treści wpisać imiona i nazwiska osób wykonujących ćwiczenie, np. ''​Mateusz Ślażyński & Krzysztof Kutt''​
 +    - :!: załączyć archiwum z ćwiczeniem,​ to ważne :!:
 +    - :!: nacisnąć przycisk wyślij i odczekać chwilę nie przerywając połączenia z internetem :!:
 +    - dostać punkty z dobrze wykonaną robotę 8-)
 +  - inne formy wysyłania zadań spotkają się z moją niechybną dezaprobatą i niekonstruktywną krytyką m(
 +    * przewidywane kary w postaci składania własnoręcznie spisanej miażdżącej samokrytyki ​
 +    * wizyta w worku pokutnym w dziekanacie pro 
 +    * no i brak punktów
 +
 +==== Automatyczne formatowanie kodu ====
 +
 +W celu uniknięcia braku punktów za dobry styl kodu, polecamy stosować narzędzia automatycznie formatujące kod. Większość profesjonalnych IDE, np. Eclipse, ma je wbudowane bądź dostępne w formie wtyczki. Jeżeli ktoś preferuje narzędzia konsolowe, to polecamy [[http://​astyle.sourceforge.net/​install.html|AStyle]],​ które jest dostępny na wszystkie wiodące systemy operacyjne. Narzędzi w użyciu jest bardzo proste: ''​astyle <opcje stylu> <​ścieżki do plików>'',​ np.
 +<code bash>
 +astyle --style=1tbs *.cpp *.h
 +</​code>​
 +sformatuje wszsytkie pliki ''​.cpp''​ i ''​.h''​ używając stylu One True Brace Style. Więcej dostępnych stylów i opcji można poznać czytając stronę [[http://​astyle.sourceforge.net/​astyle.html]].
 +
 +Na potrzeby ćwiczeń polecamy stosować styl:
 +<code bash>
 +astyle -s4 -xG -S -O -n -o -k3 -H -p -j *.cpp *.h
 +</​code>​
 +Jeżeli kogoś przeraża wpisywanie tak wielu opcji, wystarczy zapisać konfigurację jako domyślną:
 +<code bash>
 +echo "-s4 -xG -S -O -n -o -k3 -H -p -j" > ~/.astylerc
 +</​code>​
 +
 +=== Alternatywy ===
 +
 +  * [[http://​uncrustify.sourceforge.net/​|uncrustify]] - bardzo popularne narzędzie do formatowania kodu
 +  * [[http://​clang.llvm.org/​docs/​ClangFormat.html|clang-format]] - oparte o llvm narzędzie wspierane przez wiele narzędzi programistycznych. [[http://​clangformat.com/​|http://​clangformat.com/​]] pozwala generować dla niego konfiguracje.
 +  * [[http://​universalindent.sourceforge.net/​|universalindent]] - graficzne narzędzie do formatowania kodu
 ===== Przydatne materiały ===== ===== Przydatne materiały =====
 +
   * [[http://​www.cppreference.com/​wiki/​start|C++ Reference]]   * [[http://​www.cppreference.com/​wiki/​start|C++ Reference]]
   * Harvey M. Deitel, Paul J. Deitel, //Arkana C%%++%%// - dla początkujących   * Harvey M. Deitel, Paul J. Deitel, //Arkana C%%++%%// - dla początkujących
Linia 73: Linia 137:
   * [[https://​fffaraz.github.io/​awesome-cpp/​|Awesome C/C++]] - A curated list of awesome C/C%%++%% frameworks, libraries, resources, and shiny things   * [[https://​fffaraz.github.io/​awesome-cpp/​|Awesome C/C++]] - A curated list of awesome C/C%%++%% frameworks, libraries, resources, and shiny things
  
-===== Narzędzia ​=====+Laboratoria dodatkowe - opcjonalne, ich znajomość nie jest wymagana do kolokwium. Just for fun :-) 
 +  - [[.:​labs:​wyjatki|Wyjątki]] 
 +  - [[.:​labs:​dziedziczenie-ex|Dziedziczenie i polimorfizm -- przykłady]] 
 +  - [[.:​labs:​stl|Biblioteka standardowa]] 
 + 
 +==== Narzędzia ====
   * Uniksowy kompilator **g%%++%%** ​   * Uniksowy kompilator **g%%++%%** ​
   * [[http://​www.eclipse.org/​|Eclipse IDE for C/C++]]   * [[http://​www.eclipse.org/​|Eclipse IDE for C/C++]]
   * [[http://​www.microsoft.com/​express/​Windows/​|MS Visual Studio Express Edition]]   * [[http://​www.microsoft.com/​express/​Windows/​|MS Visual Studio Express Edition]]
 +==== Platformy online z zadaniami do ćwiczenia programowania ====
  
 +  * https://​www.hackerrank.com/​domains 
 +  * https://​www.topcoder.com/​login/?​next=%252Fmy-dashboard%252F 
 +  * https://​leetcode.com 
 +  * https://​projecteuler.net 
 +  * http://​pl.spoj.com/​problems/​latwe/​
pl/dydaktyka/jimp2/2016/start.1455741586.txt.gz · ostatnio zmienione: 2019/06/27 15:52 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0