Zaawansowane zagadnienia programowania
Transkrypt
Zaawansowane zagadnienia programowania
Zaawansowane zagadnienia programowania Wydział Informatyki Nazwa programu kształcenia Informatyka Poziom i forma studiów I stopień stacjonarne Specjalność --- Ścieżka dyplomowania 2013/2014Z - 2016/2017Z Nazwa przedmiotu Zaawansowane zagadnienia programowania Kod przedmiotu INF1ZZPTT Punkty ECTS 4 Rodzaj przedmiotu obieralny Semestr 5 Liczba godzin w semestrze W - 0 Ćw - 0 PS - 45 P - 0 L - 0 S - 0 Przedmioty wprowadzające Inżynieria oprogramowania (I36001), Programowanie obiektowe (I23024 ), Celem przedmiotu jest pogłębienie znajomości wybranych zagadnień programowania nieomawianych w ramach innych przedmiotów z obszaru Inżynierii Oprogramowania. Zagadnienia te będą obejmowały ciekawe aspekty programowania (z naciskiem na język Java) niezbędne przy pracy na realnych projektach w biznesie. Założenia i cele przedmiotu Po ukończeniu kursu student: 1. Posiada pogłębioną wiedzę na temat języków obiektowych (szczególnie Java) w kontekście realnych problemów biznesowych. 2. Potrafi zastosować wzorce projektowe w praktyce. 3. Tworzy oprogramowanie w wyższej jakości dzięki poznaniu technik zarządzania jakością w kodzie i procesem Quality Assurance. 4. Potrafi technicznie analizować wymagania biznesowe i projektować/implementować rozwiązania w wysokiej jakości. Formy zaliczenia Ocena wykonywanych zadań praktycznych. Kolokwium. Do prowadzenia przedmiotu wykorzystana będzie platforma TEWI. Agenda przedmiotu: 1. Wzorce projektowe w praktyce (anty-wzorce, refaktoryzacja do wzorców, kodowanie na żywo wzorców: strategii, metody szablonowej, obserwatora, fabryki, wizytatora i dekoratora. Przykłady z Java SE API) 2. Najlepsze praktyki programowania w Javie – dwa zajęcia (standardy kodowanie, JNC, formatowanie kodu, standardy nazewnicze. Zasady SOLID. 3. Zaawansane zagadnienia Java Virtual Machine (parametry uruchamiania JVM, obszary pamięci i cykl życia obiektów. Algorytmy garbage collection, konfiguracja GC, przeglądanie logów GC. Technologia JMX, metody analizy uruchomionego JVM przy użyciu standardowych MBeanów, tworzenie własnych. Zapoznanie z narzędziem VisualVM). 4. Programowanie wielowątkowe w Javie (przypomnienia problemów wielowątkowości. Java API do tworzenia i zarządzania wątkami. Zmienne atomowe. Synchronizacja na monitorach. Analiza kodu pod kątem potencjalnych problemów w dostępie wielowątkowym. Kolecje bezpieczne dla wątków, pakiet java.util.concurrent) 5. Technologie wspomającące Continous Integration na przykładzie Jenkinsa. Jezyki skryptowe kompilowane do bajtokodu: Jython, Groovy, Scala. Zarządzanie projektami Agile – Jira Agile). 6. Wprowadzenie do automatycznego testowania UI na stronach WWW – Selenium). 7. Programowanie aspektowe (wprowadzenie do aspektów, anatomia aspektu. Metody instrumentalizacji – statyczna vs. dynamiczna. Konfiguracja dynamicznego weavera. Przegląd pointcutów na konkretnych przykładach) 8. Zaawansowany Javascript (widocznośc zmiennych, hoisting. Zarządzanie obiektami, mix-iny. Pułapki przy pętlach sterujących, currying. Modelowanie klas, dziedziczenie. Przestrzenie nazw, wzorzec modułu i sandbox) 9. Alternatywne systemy baz danych (wprowadzenie do NoSQL. Grafowe bazy danych na przykładzie Neo4j. Dokumentowe bazy danych. Przegląd aktualnych i najbardziej perspektywicznych technologii NoSQL wraz z prostymi przykładami) Treści programowe Realizacja powyższej listy modułów zajmie łącznie 11 tygodni zajęciowych, do tego należy doliczyć jedne zajęcia na kolokwium laboratoryjne oraz margines 2 zajęć niezrealizowanych z przyczyn losowych. W przypadku gdy którykolwiek z modułów zainteresuje studentów w sposób szczególny, zostanie on rozciągnięty na dodatkowy tydzień. Efekty kształcenia Symbol Opis EK1 posiada pogłębioną wiedzę na temat języków obiektowych (szczególnie Java) w kontekście realnych problemów biznesowych EK2 potrafi zastosować wzorce projektowe w praktyce EK3 tworzy oprogramowanie w wyższej jakości dzięki poznaniu technik zarządzania jakością w kodzie i procesem Quality Assurance EK4 potrafi technicznie analizować wymagania biznesowe i projektować/implementować rozwiązania w wysokiej jakości Efekt kształcenia Metoda weryfikacji Odniesienie do kierunkowych efektów kształcenia Forma zajęć na której zachodzi weryfikacja EK1 ocena wykonywanych aplikacji, kolokwium Ps EK2 ocena wykonywanych aplikacji Ps EK3 ocena wykonywanych aplikacji Ps EK4 ocena wykonywanych aplikacji, kolokwium Ps Bilans nakładu pracy studenta (w godzinach) 1 - Udział w zajęciach 2 4 6 - Przygotowanie do zaliczenia kolokwium RAZEM: 1. 2. 3. 4. 5. 45 50 3 - Udział w konsultacjach Wskaźniki ilościowe Literatura podstawowa 15 x 3h = 2 - Realizacja zadań domowych Nakład pracy studenta związany z zajęciami wymagającymi bezpośredniego udziału nauczyciela: 47 (3)+(1) Nakład pracy studenta związany z zajęciami o charakterze praktycznym: 103 (4)+(3)+(2)+(1) Arnold, Ken, and James Gosling. The Java programming language. 3rd ed. Boston: Addison-Wesley, 2000. Print. Berg, Alan. Jenkins Continuous Integration Cookbook. Birmingham: Packt Publishing, 2012. Print. Flanagan, David. JavaScript: the definitive guide. 3rd ed. Cambridge: O'Reilly, 1998. Print. Gamma, Erich. Design patterns: elements of reusable object-oriented software. Reading, Mass.: Addison-Wesley, 1995. Print. Gradecki, Joe, and Nicholas Lesiecki. Mastering AspectJ aspect-oriented programming in Java. Indianpolis, Ind.: Wiley, 2003. Print. 103 ECTS 2,0 4,0 Literatura uzupełniająca 1. Beck, Kent. JUnit. Sebastopol (Calif.): O'Reilly, 2004. Print. 2. Ching, Maria Odea, Brett Porter, Wendy Smoak, and Carsten Ziegeler. Apache Maven 2 effective implementation build and manage applications with Maven, Continuum, and Archiva. Birmingham, UK: Packt Pub., 2009. Print. 3. FernaÌndez, Javier. Java 7 concurrency cookbook. Birmingham: Packt Pub., 2012. Print. 4. Goetz, Brian. Java concurrency in practice. Upper Saddle River, NJ: Addison-Wesley, 2006. Print. 5. Magee, Jeff, and Jeff Kramer. Concurrency: state models & Java programs. Chichester [England: Wiley, 1999. Print. Jednostka realizująca --- Osoby prowadzące Data opracowania programu 13 czerwca 2014 Program opracował(a) Wydrukowane w programie Świerk Design by: styleshout | Valid XHTML | CSS Home