Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Informatyka, I stopień Sylabus modułu: Programowanie (PRO0.2) Nazwa wariantu modułu (opcjonalnie): 1. Informacje ogólne koordynator modułu rok akademicki 2012/2013 semestr letni forma studiów studia stacjonarne sposób ustalania na ocenę końcową składają się: oceny końcowej pisemne sprawdziany (2) z umiejętności korzystania z funkcjonalności klasy, jej modułu konstruktorów, funkcji konwersji i funkcji operatorowych oraz uzupełniania prostych klas, rozszerzanie dziedziczenia (20%), weryfikacja projektów napisanych na zadane tematy (80%) Sprawdziany są opcjonalne i w razie gdy nie zostaną przeprowadzone, ocena końcowa ustalana jest w oparciu o programy napisane na ćwiczeniach. Moduł ma za zadanie wprowadzenie umiejętności programowania obiektowego ze szczególnym uwzględnieniem języka C# i środowiska Visual Studio. 2. Opis dydaktycznych i pracy wykład prowadzący treści wszyscy studenci I roku informatyki 1. Programowanie zaawansowane C++ 1.1. dołączenie metod do pól 1.2. struktury 1.3. konstruktory i destruktory 1.4. funkcje operatorowe, konwersji 2. Programowanie obiektowe cz. 1 2.1. szablony funkcji 2.2. wzorce klas (biblioteka STL) 3. Programowanie obiektowe cz. 2 3.1. hermetyzacja 3.2. dziedziczenie 3.3. polimorfizm 4. Myślenie obiektowe 4.1. wyszukiwanie klas 4.2. tworzenie hierarchii klas 4.3. określanie funkcjonalności klas 5. Wprowadzenie do języka C# 5.1. przestrzenie nazw 5.2. klasa Object 5.3. hierarchia klas w C# 5.4. system typów PRO0.2_fs_1
Uniwersytet Śląski w Katowicach str. 2 5.5. hierarchia typów 5.6. rzutowanie i konwersje typów 5.7. tablice 6. Programowania zdarzeniowe 6.1. interfejs użytkownika 6.2. funkcje wywoływane nie wiadomo przez kogo 6.3. obsługa zdarzeń, kontrolki 7. Specyfika C# 7.1. iteratory 7.2. klasy abstrakcyjne 7.3. typy funkcyjne, delegacje 7.4. interfejsy 7.5. LINQ 8. Gospodarka pamięcią 8.1. Odśmiecanie pamięci 8.2. instrukcje try catch finally 9. Podstawowe zasady projektowania obiektowego 9.1. zasada Demeter 9.2. zasada pojedynczej odpowiedzialności 9.3. zasada otwarta/zamknięta metody prowadzenia dydaktycznych (kontaktowych) pracy własnej opis pracy własnej organizacja obowiązkowa uzupełniająca adres strony www jak w opisie modułu Wyszukiwanie klas w Internecie i ich modyfikacje. Tworzenie projektów stosujących te klasy. Wykorzystanie klas prezentowanych na wykładzie. Studiowanie zalecanej literatury. 2 godziny tygodniowo, sala i godziny podane na harmonogramie B.Stroustrup, Język C++ WNT Klasyka informatyki, 2002 Andrew Troelson, Język C# 2010 i platforma.net 4.0, PWN 2011 Robert C. Martin, Micah Martin Agile Programowanie C#, Helion 2008 laboratorium prowadzący PRO0.2_fs_2 gr.1a, gr 1b dr hab. Zbigniew Dendzik/dr Aleksander Dawid, gr. 2a i 2b dr Paweł Zajdel
Uniwersytet Śląski w Katowicach str. 3 treści metody prowadzenia dydaktycznych (kontaktowyc h) pracy własnej opis pracy własnej organizacja obowiązkowa uzupełniająca adres strony www Omówienie przykładowej, prostej (bez dziedziczenia i polimorfizmu) klasy i dyskusja nad jej funkcjonalnością (ewentualne rozszerzenie) Implementacja w postaci klasy interfejsów (interface). Rozszerzane funkcjonalności zadanych klas. Poprowadzenie każdego do sformułowania i zaimplementowania własnej klasy. Poznanie środowiska - Visual Studio Tworzenie aplikacji o rozbudowanym interfejsie użytkownika Napisanie aplikacji z architekturą dwuwarstwową - interfejs użytkownika oraz logika aplikacji Napisanie projektu z demonstracją funkcjonalności własnej klasy. Rozszerzenie istniejącej hierarchii dziedziczenia, zadanej przez prowadzącego zajęcia Dopisanie nowych funkcji wirtualnych w hierarchii dziedziczenia, zadanej przez prowadzącego zajęcia. Sformułowanie funkcjonalności klasy i omówienie problemów (prostego i złożonego) do zaprogramowania implementacja i rozszerzenie funkcjonalności. Kontrola pracy własnej studentów. Kierowanie indywidualnym projektem każdego. Pierwsze zajęcia z zakresu projektowania prostej klasy powinny odbyć się z udziałem wszystkich studentów w grupie (ćwiczenia tablicowe) 60 Dokończenie programów rozpoczętych na ćwiczeniach zgodnie ze wskazówkami sformułowanymi przez prowadzącego. 2 godziny tygodniowo, sale i godziny podane na harmonogramie jak w przypadku wykładów jak w przypadku wykładów 3. Opis sposobów efektów kształcenia modułu aktywność na zajęciach (-y) PRO0.2_w_2 gr.1a, gr 1b dr hab. Zbigniew Dendzik/dr Aleksander Dawid, gr. 2a i 2b dr Paweł Zajdel gr.1a
Uniwersytet Śląski w Katowicach str. 4 Znajomość języków programowania C++, C# na poziomie umożliwiającym czytanie ze zrozumieniem prostych programów. Umiejętność zaprojektowania klasy (pola, nagłówki metod ) na podstawie jej funkcjonalności (co najmniej dwa konstruktory i co najmniej dwie funkcje operatorowe). Umiejętność napisania implementacji zaprojektowanej klasy. Umiejętność napisania przykładowego projektu wykorzystującego napisaną klasę. Rozumienie podstawowych pojęć programowania obiektowego: hermetyzacja, dziedziczenie, polimorfizm, w stopniu pozwalającym rozszerzać istniejące hierarchie. Realizacja zadań sformułowanych przez prowadzącego. Ocena sprawdzianów (opcjonalne) Student na koniec każdych ćwiczeń powinien plik z projektem (fragmentem projektu) zapisać we wspólnym (dzielonym) katalogu na serwerze. Nazwa folderu: Nazwisko Imię\data ćwiczeń\surowe. Należy wymagać, aby zapamiętany projekt można było skompilować. Jeżeli student pracował nad programem poza ćwiczeniami, na następnych zajęciach ma zapisać ten program w katalogu Nazwisko Imię\data ćwiczeń\gotowe. Prowadzący zajęcia po każdych zajęciach kopiuje te katalogi do swoich zasobów, by mieć możliwość oceny postępów oraz przekazania studentowi odpowiednich wskazówek. Pliki z programami jednocześnie będą dokumentacją postępów studentów. sprawdziany pisemne (-y) PRO0.2_w_1 gr.1a, gr 1b dr hab. Zbigniew Dendzik/dr Aleksander Dawid, gr. 2a i 2b dr Paweł Zajdel gr.1a Umiejętność wypisania kolejno wykonywanych instrukcji w trakcie realizacji krótkiego (3-5 instrukcji w Main()), zadanego programu zawierającego jedną, dwie klasy (C++, C#). Bardzo ważna będzie identyfikacja wyboru konstruktora w hierarchii dziedziczenia. Dodatkowo wymaganie: podanie wartości pól obiektów klasy po zakończeniu programu. Umiejętność rozszerzenia funkcjonalności zadanej klasy dodanie funkcji operatorowej, funkcji konwersji, potrzebnych do poprawności zadanego u programu. Dodanie funkcji wirtualnych. Ocena prowadzącego zajęcia. Zadania punktowane od 0-5 pkt. 50% maksymalnej punktacji uprawnia do zaliczenia sprawdzianu i wystawienia oceny pozytywnej (50-60% dst, 60-70% plus dst,70-80% dobry, 80-90% plus dobry, 90-100% bardzo dobry). Każdy sprawdzian powinien się składać z dwóch godzinnych części: a) pisanie na kartce papieru odpowiedzi (dopuszczalny plik tekstowy) b) osobiste sprawdzenie własnej pracy 1. Po napisaniu sprawdzianu, każdy student ma możliwość sprawdzenia poprawności swojej odpowiedzi przy pomocy debugera. 2. Po napisaniu sprawdzianu, każdy student swoją klasę powinien zapisać w postaci projektu i zobaczyć jego działanie.
Uniwersytet Śląski w Katowicach str. 5 egzamin pisemny (-y) PRO0.2_w_3 wszyscy studenci I roku informatyki Egzamin pisemny, zadania przygotowane dla każdego na kartkach papieru, dopuszczalne materiały papierowe (książki, notatki) jako pomoc. Treści zadań egzaminacyjnych studenci mogą zabrać ze sobą. Orientacyjne treści zadań: 1. Umiejętność zaprojektowania w językach Pascal, C, C++, C# funkcji (nagłówek) na podstawie jej specyfikacji (co najmniej dwa typy danych wejściowych i co najmniej dwa typy wyników). 2. Umiejętność wypisania kolejno wykonywanych instrukcji w trakcie realizacji krótkiego (3-5 instrukcji w Main()), zadanego programu zawierającego funkcje (Pascal) oraz klasy (C++, C#). Dodatkowo wymaganie: podanie wartości obiektów będących argumentami funkcji (wejściowymi i wyjściowymi). Programy napisane w Pascalu, C++, C#. 3. Napisanie funkcji (nagłówka i ciała) o zadanej specyfikacji w dowolnym języku programowania (dwie specyfikacje, I - wejście tablica, wyjście obiekt typu prostego; II wejście: tablica, wyjście tablica) 4. Klasa w C# oraz fragment u (2-3 instrukcje). Należy uzupełnić funkcjonalność klasy tak, aby podane instrukcje były poprawne (dodanie konstruktora, funkcji operatorowej, funkcji konwersji) 5. Napisanie szkieletu klasy (bez treści metod) implementującej zadany interface. Ocena egzaminatora. Liczba zadań 7-8. Zadania punktowane od 0-5 pkt. 40% maksymalnej punktacji uprawnia do zaliczenia egzaminu i wystawienia oceny pozytywnej (40-50% dst, 50-60% plus dst,60-70% dobry, 70-80% plus dobry, 80-100% bardzo dobry). Poniżej 25% ocena niedostateczna. Przedział 25%-40% wymaga egzaminu ustnego. Pierwszy etap to pisemne rozwiązanie zadań sformułowanych przez egzaminatora. Drugi to rozmowa egzaminatora z każdym studentem i dla tych, którzy zdobyli więcej niż 50 % punktów propozycja wpisu oceny lub jej poprawy w trakcie egzaminu ustnego. Dla studentów, którzy uzyskali mniej niż 25 % punktów wpis oceny niedostatecznej. Pozostali odbywają obowiązkowo egzamin ustny, w którym pytani są w pierwszej kolejności o zadania egzaminacyjne. Studenci, którzy uzyskali 40-50 % punktów powinni na egzamin ustny przynieść 3 poprawnie rozwiązane zadania z egzaminu, wskazane przez egzaminatora.