Uniwersytet Mikołaja Kopernika w Toruniu - Centralny punkt logowania
Strona główna

Programowanie aplikacji na komputery stacjonarne oraz usług windowsowych w C#

Informacje ogólne

Kod przedmiotu: 1000-I2ApDeskC#
Kod Erasmus / ISCED: (brak danych) / (0613) Tworzenie i analiza oprogramowania i aplikacji Kod ISCED - Międzynarodowa Standardowa Klasyfikacja Kształcenia (International Standard Classification of Education) została opracowana przez UNESCO.
Nazwa przedmiotu: Programowanie aplikacji na komputery stacjonarne oraz usług windowsowych w C#
Jednostka: Wydział Matematyki i Informatyki
Grupy: Inf., I st., stacjonarne, 3 rok, przedmioty do wyboru
Inf., II st, stacjonarne, przedmioty do wyboru
Punkty ECTS i inne: 6.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.
Język prowadzenia: polski
Wymagania wstępne:

Zalecana jest przynajmniej podstawowa znajomość języka C#.

Konieczne jest wcześniejsze zaliczenie przedmiotu Programowanie III (lub jego odpowiednika w przypadku wcześniejszego studiowania na innej uczelni).

Absolutnie niezbędne są:

1. Znajomość składni języka C lub innego języka wyższego poziomu, który wyewaluował z języka C (np. któregoś z języków C++, Java, C#, D, Objective C) i umiejętność tworzenia programów w tym języku (włącznie z ich kompilacją i uruchamianiem).

2. Wcześniejsze poznanie i zrozumienie koncepcji programowania obiektowego oraz opanowanie w stopniu podstawowym umiejętności tworzenia programów w wybranym obiektowym języku programowania (zakładana jest znajomość podstawowych paradygmatów, wzorców i antywzorców).

Całkowity nakład pracy studenta:

1. Godziny realizowane z udziałem nauczycieli w ramach zaplanowanych zajęć (wykłady, laboratoria, egzamin): 64 godziny

2. Czas poświęcony na pracę indywidualną studenta: 81 godzin.

W tym

a) czas poświęcony na studiowanie podanej literatury, włączając materiały w postaci elektronicznej oraz ewentualne konsultacje - 25 godzin

b) czas potrzebny na opracowanie, stworzenie i przetestowanie indywidualnego projektu (włączając wcześniejsze testy i dokończenie zadań laboratoryjnych) - 45 godzin

c) ćwiczenia z zagadnień z poza głównej części zajęć (np. w Windows Azure) - 8 godzin

d) przygotowanie się do prezentacji projektu oraz do testu teoretycznego - 8 godzin

Efekty uczenia się - wiedza:

W1: ma wiedzę na temat architektury współczesnych wersji systemu operacyjnego Windows ze szczególnym uwzględnieniem działania środowiska CLR i mechanizmów specyficznych dla systemów Windows (model składający się z procesów, domen aplikacji i wątków, dzienniki zdarzeń, rejestr systemu, liczników Performance Counters, usług Windows Services itp.) - K_W06 (I stopień);

W2: zna zasady wykonywania programów w środowisku uruchomieniowym CLR - K_W07 (I stopień);

W3: zna zasady działania systemów operacyjnych Windows ze szczególnym uwzględnieniem procesów, domen aplikacji, wątków, zadań, operacji asynchronicznych, dispatcherów, usług (Windows Sevices), struktury asemblacji i bibliotek, integracji kodu zarządzalnego i natywnego - K_W08 (I stopień);

W4: zna podstawy mechanizmów bezpieczeństwa CAS i RBS stosowanych w systemach Windows oraz podstawowe kryptograficzne wbudowane w .NET Framowork - K_W05 (II stopień);

Efekty uczenia się - umiejętności:

U1: potrafi pisać, uruchamiać i testować programy (w języku C# przeznaczone dla platformy .NET Framework) w środowisku programistycznym Visual Studio - K_U05 (I stopień);

U2: projektuje oprogramowanie w języku C# używające .NET Frameworka zgodnie z metodyką obiektową - K_U22 (I stopień);

U3: potrafi (zgodnie z zadaną specyfikacją) zaprojektować oraz zaimplementować prosty pakiet oprogramowania zawierający bibliotekę, usługę, aplikację oraz instalator - K_U24 (I stopień);

U4: potrafi posługiwać się środowiskiem Visual Studio wraz z wybranymi wtyczkami (w szczególności instalatorami, referencjami, referencjami usług) - K_U02 (II stopień);

U5: potrafi posługiwać zarządzać wybranymi mechanizmami systemowymi (usługi, dzienniki zdarzeń, rejestr systemu, liczniki wydajności) zarówno używając się narzędziami systemowych, jak i od strony programistycznej - K_U02 (II stopień);

U6: potrafi dla stworzonego przez siebie (w języku C# na platformę .NET Framework) kodu stworzyć (w wybranym Frameworku - MSTest, xUnit, NUnit) zestaw testów jednostkowych oraz zarządzać tymi testami - K_U09 (II stopień);

U7: umie znajdować w literaturze fachowej oraz dokumentacji frameworka informacje potrzebne do wykonania projektu zaliczeniowego - K_U08 (II stopień);

Efekty uczenia się - kompetencje społeczne:

K1: jest gotów do pokonywania trudności stojących na drodze do realizacji projektu zaliczeniowego - K_K02 (I i II stopień);

Metody dydaktyczne:

- wykład

- laboratoria

- samodzielne zdobywanie informacji (studiowanie literatury)

- opcjonalne dodatkowe zadania programistyczne

- indywidualny projekt programistyczny

- opcjonalny egzamin programistyczny (zamiast projektu)

- pisemny (lub ustny) egzamin teoretyczny

Skrócony opis:

Przedmiot ten jest "następcą" prowadzonego do roku akademickiego 2014/2015 przedmiotu Programowanie zaawansowanych aplikacji w C#. Przeznaczony jest dla studentów II stopnia kierunku informatyka, oraz studentów I stopnia tego kierunku, którzy we wcześniejszych latach poznali składnię języka C oraz podstawy programowania obiektowego. Przy czym mocno preferowana jest przynajmniej podstawowa znajomość języka C#.

W toku nauki studenci powinni zdobyć wiedzę i umiejętności przydatne przy tworzeniu w języku C# gotowych do wdrożenia aplikacji przeznaczonych dla "klasycznych desktopowych" systemów MS Windows.

W szczególności powinni nauczyć się korzystać z wbudowanych w te systemy oraz w środowisko .NET Framework mechanizmów (m.in. systemu uprawnień, logów systemowych, rejestru systemu, zarządzania konfiguracjami i instalacją).

Pełny opis:

Ponieważ przewiduje się, że większość słuchaczy (np. w ramach przedmiotu Programowanie III) miała wcześniej styczność z językiem C#, więc podstawy tego języka (pierwsze trzy zagadnienia z programu wykładu) będą przedstawione w dużym skrócie.

Tym niemniej wykład jest skonstruowany w ten sposób, aby również osoby nie mające wcześniej do czynienia z tym językiem, ale znające język C, język C++ lub/i język Java były w stanie w ciągu pierwszych zajęć opanować podstawy tego języka w stopniu wystarczającym do zrozumienia dalszej części wykładu.

Główne treści programowe:

  1. Typy danych, instrukcje warunkowe i iteracyjne, kolekcje, typy generyczne.
  2. Tworzenie aplikacji graficznych z użyciem Windows Presentation Foundation.
  3. Przeciążanie operatorów, pary operatorów, serializacja danych.
  4. Wielowątkowość, zarządzanie wątkami, domeny aplikacji. Zadania, TPL (Task Parallel Library), asynchroniczność przez async-await oraz przez delegacje.
  5. Zarządzenie konfiguracją.
  6. Tworzenie i używanie transakcyjnych instalatorów.
  7. Programowanie usług systemu Windows.
  8. Wprowadzenie do Windows Communication Foundation
  9. Zarządzanie logami systemowymi, licznikami, wykonywanie operacji na rejestrze.
  10. Śledzenie stanu uruchomionych procesów i zarządzanie nimi.
  11. Obsługa strumieni, wejścia--wyjścia, kompresja danych.
  12. Bezpieczeństwo (RBS i CAS) i kryptografia.
  13. Integracja kodu zarządzalnego z kodem niezarządzalnym (Interoperability).
  14. Refleksje.
  15. Ustawienia regionalne.
  16. Przetwarzanie łańcuchów i korzystanie z wyrażeń regularnych.

W miarę możliwości i czasu pod koniec wykładu przedstawiane będą mechanizmy i narzędzia związane z aktualnymi trendami w programowaniu z użyciem platformy .NET i C# (informacje te będą zależne od cyklu).

Literatura:

Literatura podstawowa

  1. Witryna sieciowa Microsoft Learn (https://learn.microsoft.com)
  2. Andrew Troelsen, Pro C# 2010 and the .NET 4 Platform, Fifth Edition, Apress 2010 (oraz późniejsze wersje).
  3. Jeffery Richter, CLR via C#, Fourth Edition, Microsoft Press 2012.
  4. Joseph Albahari and Ben Albahari, C# 4.0 in a Nutshell, Fourth Edition, O'Reillly Media 2010.
  5. Joseph Mayo, C# dla .NET 3.5. Księga eksperta, Helion 2010.
  6. MSDN Library for Visual Studio (składnik wcześniejszych instalacji Visual Studio oraz zasoby dostępne (również bezpośrednio z tego środowiska) przez sieć w wersjach późniejszych)

Literatura uzupełniająca

  1. Andrew Troelsen, Język C# 2010 i platforma .NET 4.0, Wydawnictwo Naukowe PWN 2010 (i późniejsze wersje).
  2. Kevin Hoffman, Microsoft Visual C# 2005: kompletny przewodnik po języku C#, Helion 2007.
  3. John Sharp, Microsoft Visual C# Step by Step (Developer Reference), Microsoft Press (dowolna edycja od 2013r. - jako literatura wprowadzająca do języka).
  4. Standard ECMA-334, C# Language Specification, 5th edition (December 2017) [lub 6th edition (June 2022)].
  5. C# Language Specification (składnik instalacji Visual Studio).
Metody i kryteria oceniania:

Projekt programistyczny - U1, U2, U3, U4, U5, U6, U7, K1

Kolokwium programistyczne - U1, U2, U3, U4, U5, U6

Test teoretyczny (wielokrotnego wyboru) - W1, W2, W3

Zadania z laboratoriów - U1, U2, U3, U4, U5, U6

Szczegóły:

  • Zaliczenie laboratorium na ocenę na podstawie rozwiązanych zadań (ich wykonywanie nie będzie obligatoryjne) oraz indywidualnego projektu lub kolokwium programistycznego (przy komputerze) - U1, U3, U4, U5, U6, U7, K1.
  • Zaliczenie wykładu w formie egzaminu na który składać się będą
    • część praktyczna w postaci kolokwium programistycznego (przy komputerze) lub indywidualnego projektu (który będzie musiał zostać zaprezentowany wykładowcy) - U1, U2, U3, U6, U7, K1 oraz
    • część teoretyczna w postaci pisemnego egzaminu (na kartkach) - W1, W2, W3.

Zajęcia w cyklu "Semestr zimowy 2021/22" (zakończony)

Okres: 2021-10-01 - 2022-02-20
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin, 16 miejsc więcej informacji
Wykład, 30 godzin, 50 miejsc więcej informacji
Koordynatorzy: Jerzy Białkowski
Prowadzący grup: Jerzy Białkowski
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Laboratorium - Zaliczenie na ocenę
Wykład - Egzamin
Skrócony opis:

Celem wykładu jest nabycie wiedzy i umiejętności przydatnych do tworzenia usług windowsowych (ang. Windows Services) oraz klasycznych aplikacji dla systemów Windows.

W roku akademickim 2020/2021 będzie można w nim uczestniczyć w całości zdalnie (poprzez platformę MS Teams). Dla osób które będą preferowały formę stacjonarną (np. nie będą miały odpowiedniego sprzętu lub będą obawiały się np. uszkodzenia jego konfiguracji podczas niektórych ćwiczeń) będzie możliwość stacjonarnego uczestniczenia w zajęciach laboratoryjnych (w środy w godz. 14-16 w pracowni Lab 6 na WMiI UMK). Być może będzie również możliwość "stacjonarnego" uczestniczenia w wykładzie (w środy w godz. 12-12 w pracowni Lab 6 na WMiI UMK), ale jest to uzależnione od (odgórnie ustalonych) zasad, które będą panowały w nadchodzącym semestrze.

Pełny opis:

Odpowiedzi na "często zadawane pytania":

Pytanie: Czy wykład będzie prowadzony zdalnie, czy stacjonarnie?

Odpowiedź: Wszystkie zajęcia będą prowadzone zdalnie, ale chętni będą mogli uczestniczyć stacjonarnie przynajmniej w zajęciach laboratoryjnych (szczegóły powyżej w opisie). Osoby pracujące systematycznie (po spełnieniu dodatkowych warunków) będą mogły zaliczać przedmiot w pełni zdalnie (ale podejrzewam, że przynajmniej połowa osób będzie musiała dodatkowo np. wypełnić stacjonarnie test wielokrotnego wyboru lub przejść jakąś inną formę weryfikacji znajomości podstaw - szczegóły wyjaśnię na zajęciach).

Pytanie: Pod jakim systemem operacyjnym będzie można pracować?

Odpowiedź: Najogólniej mówiąc pod stacjonarną wersją systemu Windows bazującego na jądrze systemu wywodzącego się z systemu OS2. W uproszczeniu: Windows 10 lub ewentualnie Windows 7 (ten ostatni ma tę zaletę, że trudnej go popsuć, ale z drugiej strony trudniej będzie zainstalować i skonfigurować na nim właściwe środowisko programistyczne). Jeśli ktoś bardzo będzie chciał, to będzie mógł spróbować użyć któregoś z bardziej "egzotycznych" obecnie systemów operacyjnych, ale nie będę wówczas udzielał wsparcia w kwestii konfiguracji.

Pytanie: Jakiego środowiska programistycznego (z znaczeniu IDE - Integrated Development Environment) będzie można używać?

Odpowiedź: Visual Studio 2017 lub Visual Studio 2019 w wariancie przynajmniej Community (które jest do tego typu zastosowań darmowe). Przypominam, że jako studenci mogą Państwo pobrać z programu Azure Dev Tools for Teaching wersję Enterprise i z powodu niektórych dodatkowych funkcjonalności nawet preferowałbym tę wersję (Enterprise). Zalecam instalowanie tego środowiska z angielskim pakietem językowym (bo tłumaczenia w domyślnie ustawianym polskim pakiecie nadal czasami są mocno nieintuicyjne i mylące). Osoby korzystające już z ze środowiska Visual Studio 2015 też będą mogły go używać, choć zwracam, uwagę, że w niektórych przypadkach trzeba będzie wówczas użyć innych wtyczek, a pewne konstrukcje trzeba będzie zaimplementować trochę inaczej.

Pytanie: Jakiego środowiska programistycznego (z znaczeniu API - Application Programming Interface) będzie można używać?

Odpowiedź: .NET Framework

Pytanie: Dlaczego .NET Framework, a nie .NET Core?

Odpowiedź: Bo .NET Framework obsługuje mechanizmy potrzebne do implementowania usług windowsowych (przyp. Windows Services), a .NET Core na obecną chwilę ich nie obsługuje. Oczywiście poza .NET Frameworkiem będzie można użyć też innych mechanizmów (więcej szczegółów będzie na zajęciach), ale opakowywanie .NET Core w .NET Framework (ew. .NET Standard) bywa karkołomne. Jeśli ktoś będzie bardzo biegły w C i będzie znał podstawy Win API, to będzie mógł stworzyć implementację w kodzie natywnym, ale nie spodziewam się, że ktoś się o to pokusi.

Pytanie: Z jakich języków programowania będziemy korzystać?

Odpowiedź: Na wykładzie będę się posługiwał niemal wyłącznie językiem C#, ale jeśli ktoś będzie chciał (i umiał), to równie dobrze może używać jakiegoś innego języka wspieranego przez środowisko programistyczne, np. Visual Basic.

Pytanie: Nie udało mi się zapisać na przedmiot w USOS-ie. Czy mógłby Pan mnie dopisać? Czy będzie utworzona dodatkowa grupa?

Odpowiedź:

  • Aktualnie limit osób wynosi 16. Na podstawie doświadczeń z poprzednich lat szacuję, że zajęcia laboratoryjne dałoby się efektywnie prowadzić z grupą maksymalnie 20-osobową. Nie wykluczam podniesienia limitu do 20 osób, ale na obecną chwilę wydaje się to mocno niewystarczające.
  • Zgłosiłem potrzebę utworzenia dodatkowej grupy laboratoryjnej Pani Prodziekan ds. Studenckich. Dostałem odpowiedź, że tego typu decyzje będą podejmowane po przeprowadzeniu pierwszych zajęć, gdy będzie wiadomo ile rzeczywiście jest chętnych.
  • Na razie planuję do zespołu w Microsoft Teams z tego przedmiotu wpisać wszystkich, którzy się zgłoszą - zobaczymy ile osób rzeczywiście się pojawi.
  • Zaznaczam, że przedmiot nie jest odpowiedni dla osób które jeszcze nie zaliczyły przedmiotu Programowanie III. Co prawda zakładam, że nie wszyscy uczestnicy koniecznie muszą na początku znać C# i pierwsze zajęcia będą poświęcone w uproszczeniu temu jak przestawić się z Javy na C#, ale znajomość podstaw programowania obiektowego w języku typowo obiektowym (jak Java) będzie absolutnie niezbędna. Mam złe doświadczenia z osobami, które wybierały sobie ten przedmiot, będąc na drugim roku I stopnia studiów - przed poznaniem języków Java lub C# (Programowanie III), a nawet C++ (Programowanie II). Część z tych osób zrezygnowała po kilku tygodniach (uznając, że sobie nie poradzą lub będą musiały zbyt dużo czasu poświęcić na wcześniejszą naukę wymaganych podstaw), część pod koniec, sporo osób zaliczyło go dopiero we wrześniu (po zaliczeniu Programowania III), niektórzy (nieliczni) w kolejnym cyklu lub wcale. W 2-4 godziny nie da się przeprowadzić 60-godzinnego kursu, a zaległości miały tendencję do lawinowego narastania. Dlatego prosiłbym osoby z drugiego roku studiów pierwszego stopnia, aby w tym roku nie wybierały tego przedmiotu (chyba, że przekonają mnie, że potrafią już programować w jakimś silnie typowanym i typowo obiektowym języku programowania, najlepiej wywodzącym się z C, jak Java, C#, D, Objective C, czy C++ z GC; nie będę brał pod uwagę języków takich jak PHP, Perl czy Ruby).

(c.d.n.)

Uwagi:

Aktualizacja: w związku z koniecznością przejścia na tryb zdalny nauczania, do dowołania zajęcia będą odbywały się wyłącznie zdalnie (z użyciem platform Microsoft Teams i Moodle).

Zajęcia w cyklu "Semestr zimowy 2022/23" (zakończony)

Okres: 2022-10-01 - 2023-02-19
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin, 16 miejsc więcej informacji
Wykład, 30 godzin, 50 miejsc więcej informacji
Koordynatorzy: Jerzy Białkowski
Prowadzący grup: Jerzy Białkowski
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Laboratorium - Zaliczenie na ocenę
Wykład - Egzamin
Skrócony opis:

Celem wykładu jest nabycie wiedzy i umiejętności przydatnych do tworzenia usług windowsowych (ang. Windows Services) oraz klasycznych aplikacji dla systemów Windows.

Pełny opis:

Odpowiedzi na "często zadawane pytania":

Pytanie: Pod jakim systemem operacyjnym będziemy pracować?

Odpowiedź: Najogólniej mówiąc pod stacjonarną wersją systemu Windows bazującego na jądrze systemu wywodzącego się z systemu OS2, ale napjprawdopodobniej jeszcze nie Windows 11. W uproszczeniu: Windows 10 lub ewentualnie Windows 7 (ten ostatni ma tę zaletę, że trudnej go popsuć, ale z drugiej strony trudniej będzie zainstalować i skonfigurować na nim właściwe środowisko programistyczne).

Pytanie: Jakie będzie podstawowe środowisko programistyczne (z znaczeniu IDE - Integrated Development Environment)?

Odpowiedź: Visual Studio 2022 lub Visual Studio 2019 w wariancie przynajmniej Community (które jest do tego typu zastosowań darmowe). Przypominam, że jako studenci mogą Państwo pobrać z programu Azure Dev Tools for Teaching wersję Enterprise i z powodu niektórych dodatkowych funkcjonalności nawet preferowałbym tę wersję (Enterprise). Zalecam instalowanie tego środowiska z angielskim pakietem językowym (bo tłumaczenia w domyślnie ustawianym polskim pakiecie nadal czasami są mocno nieintuicyjne i mylące).

Pytanie: JJakie będzie podstawowe środowisko programistyczne (z znaczeniu API - Application Programming Interface)?

Odpowiedź: .NET Framework

Pytanie: Dlaczego .NET Framework, a nie .NET (dawniej .NET Core)?

Odpowiedź: Bo .NET Framework obsługuje mechanizmy potrzebne m.in. do implementowania usług windowsowych (przyp. Windows Services), a .NET Core (dawniej .NET Core) na obecną chwilę ich nie obsługuje. Oczywiście poza .NET Frameworkiem będzie można użyć też innych mechanizmów (więcej szczegółów będzie na zajęciach), ale opakowywanie .NET (dawniej .NET Core) w .NET Framework (ew. .NET Standard) bywa karkołomne. Jeśli ktoś będzie bardzo biegły w C i będzie znał podstawy Win API, to będzie mógł stworzyć implementację w kodzie natywnym, ale nie spodziewam się, że ktoś się o to pokusi. W końcowej części wykładu planuję wprowadzenie (w frameworku .NET) zadań działających w tle (z nowego modelu), ale .

Pytanie: Z jakich języków programowania będziemy korzystać?

Odpowiedź: Na wykładzie będę się posługiwał niemal wyłącznie językiem C#, ale jeśli ktoś będzie chciał (i umiał), to równie dobrze może używać jakiegoś innego języka wspieranego przez środowisko programistyczne, np. Visual Basic.

Pytanie: Nie udało mi się zapisać na przedmiot w USOS-ie. Czy mógłby Pan mnie dopisać? Czy będzie utworzona dodatkowa grupa?

Odpowiedź:

  • Aktualnie mamy już dwie grupy więc sądzę, że miejsc dla wszystkich wystarczy. Dla każdej z grup limit osób wynosi 16, ale w pracowni mamy 20 miejsc przy komputerach + 20 miejsc w ławkach, więc wydaje się, że w tej sali doałby się też przeprowadzić wykład, co w miarę możliwości postaram się zrobić.
  • Zaznaczam, że przedmiot nie jest odpowiedni dla osób które jeszcze nie zaliczyły przedmiotu Programowanie III. Co prawda zakładam, że nie wszyscy uczestnicy koniecznie muszą na początku znać C# i pierwsze zajęcia będą poświęcone w uproszczeniu temu jak przestawić się z Javy na C#, ale znajomość podstaw programowania obiektowego w języku typowo obiektowym (jak Java) będzie absolutnie niezbędna. Mam złe doświadczenia z osobami, które wybierały sobie ten przedmiot, będąc na drugim roku I stopnia studiów - przed poznaniem języków Java lub C# (Programowanie III), a nawet C++ (Programowanie II). Część z tych osób zrezygnowała po kilku tygodniach (uznając, że sobie nie poradzą lub będą musiały zbyt dużo czasu poświęcić na wcześniejszą naukę wymaganych podstaw), część pod koniec, sporo osób zaliczyło go dopiero we wrześniu (po zaliczeniu Programowania III), niektórzy (nieliczni) w kolejnym cyklu lub wcale. W 2-4 godziny nie da się przeprowadzić 60-godzinnego kursu, a zaległości miały tendencję do lawinowego narastania. Dlatego prosiłbym osoby z drugiego roku studiów pierwszego stopnia, aby w tym roku nie wybierały tego przedmiotu (chyba, że przekonają mnie, że potrafią już programować w jakimś silnie typowanym i typowo obiektowym języku programowania, najlepiej wywodzącym się z C, jak Java, C#, D, Objective C, czy C++ z GC; nie będę brał pod uwagę języków takich jak PHP, Perl czy Ruby).

Zajęcia w cyklu "Semestr zimowy 2023/24" (zakończony)

Okres: 2023-10-01 - 2024-02-19
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin, 16 miejsc więcej informacji
Wykład, 30 godzin, 32 miejsc więcej informacji
Koordynatorzy: Jerzy Białkowski
Prowadzący grup: Jerzy Białkowski
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Laboratorium - Zaliczenie na ocenę
Wykład - Egzamin
Skrócony opis:

Celem wykładu jest nabycie wiedzy i umiejętności przydatnych do tworzenia usług windowsowych (ang. Windows Services) oraz klasycznych aplikacji dla systemów Windows.

Pełny opis:

Odpowiedzi na "często zadawane pytania":

Pytanie: Pod jakim systemem operacyjnym będziemy pracować?

Odpowiedź: Najogólniej mówiąc pod stacjonarną wersją systemu Windows bazującego na jądrze systemu wywodzącego się z systemu OS2, ale napjprawdopodobniej jeszcze nie Windows 11. W uproszczeniu: Windows 10 lub ewentualnie Windows 7 (ten ostatni ma tę zaletę, że trudnej go popsuć, ale z drugiej strony trudniej będzie zainstalować i skonfigurować na nim właściwe środowisko programistyczne).

Pytanie: Jakie będzie podstawowe środowisko programistyczne (z znaczeniu IDE - Integrated Development Environment)?

Odpowiedź: Visual Studio 2022 lub Visual Studio 2019 w wariancie przynajmniej Community (które jest do tego typu zastosowań darmowe). Przypominam, że jako studenci mogą Państwo pobrać z programu Azure Dev Tools for Teaching wersję Enterprise i z powodu niektórych dodatkowych funkcjonalności nawet preferowałbym tę wersję (Enterprise). Zalecam instalowanie tego środowiska z angielskim pakietem językowym (bo tłumaczenia w domyślnie ustawianym polskim pakiecie nadal czasami są mocno nieintuicyjne i mylące).

Pytanie: Jakie będzie podstawowe środowisko programistyczne (z znaczeniu API - Application Programming Interface)?

Odpowiedź: .NET Framework aktualizacja: z możliwością używania .NET (dawniej .NET Core), w niektórych miejscach stosownie opakowywanego lub uzupełnianego kodem natywnym pisanym w Visual C++.

Pytanie: Dlaczego .NET Framework, a nie .NET (dawniej .NET Core)?

Odpowiedź: Bo .NET Framework obsługuje mechanizmy potrzebne m.in. do implementowania usług windowsowych (przyp. Windows Services), a .NET Core (dawniej .NET Core) na obecną chwilę ich nie obsługuje, lub wymaga karkołomnego opakowywania własnych mechanizmów (np. opakowanie Backgroud Service do Windows Service). Oczywiście poza .NET Frameworkiem będzie można użyć też innych mechanizmów (więcej szczegółów będzie na zajęciach), ale opakowywanie .NET (dawniej .NET Core) w .NET Framework (ew. .NET Standard) bywa karkołomne. Jeśli ktoś będzie bardzo biegły w C i będzie znał podstawy Win API, to będzie mógł stworzyć implementację w kodzie natywnym, ale nie spodziewam się, że ktoś się o to pokusi. W końcowej części wykładu planuję wprowadzenie (w frameworku .NET) zadań działających w tle (z nowego modelu), ale spodziewam się problemów...

Pytanie: Z jakich języków programowania będziemy korzystać?

Odpowiedź: Na wykładzie będę się posługiwał niemal wyłącznie językiem C#, ale jeśli ktoś będzie chciał (i umiał), to równie dobrze może używać jakiegoś innego języka wspieranego przez środowisko programistyczne, np. Visual Basic.

Pytanie: Nie udało mi się zapisać na przedmiot w USOS-ie. Czy mógłby Pan mnie dopisać? Czy będzie utworzona dodatkowa grupa?

Odpowiedź:

  • Mam nadzieję, że w tym roku fizycznych miejsc dla wszystkich wystarczy. Dla każdej z grup limit osób wynosi 16, ale w pracowni mamy 20 miejsc przy komputerach + 20 miejsc w ławkach, więc wydaje się, że w tej sali dałby się przeprowadzić wykład nawet dla większej liczby osób.
  • Zaznaczam, że przedmiot nie jest odpowiedni dla osób które jeszcze nie zaliczyły przedmiotu Programowanie III. Co prawda zakładam, że nie wszyscy uczestnicy koniecznie muszą na początku znać C# i pierwsze zajęcia będą poświęcone w uproszczeniu temu jak przestawić się z Javy na C#, ale znajomość podstaw programowania obiektowego w języku typowo obiektowym (jak Java) będzie absolutnie niezbędna. Mam złe doświadczenia z osobami, które wybierały sobie ten przedmiot, będąc na drugim roku I stopnia studiów - przed poznaniem języków Java lub C# (Programowanie III), a nawet C++ (Programowanie II). Część z tych osób zrezygnowała po kilku tygodniach (uznając, że sobie nie poradzą lub będą musiały zbyt dużo czasu poświęcić na wcześniejszą naukę wymaganych podstaw), część pod koniec, sporo osób zaliczyło go dopiero we wrześniu (po zaliczeniu Programowania III), niektórzy (nieliczni) w kolejnym cyklu lub wcale. W 2-4 godziny nie da się przeprowadzić 60-godzinnego kursu, a zaległości miały tendencję do lawinowego narastania. Dlatego prosiłbym osoby z drugiego roku studiów pierwszego stopnia, aby w tym roku nie wybierały tego przedmiotu (chyba, że przekonają mnie, że potrafią już programować w jakimś silnie typowanym i typowo obiektowym języku programowania, najlepiej wywodzącym się z C, jak Java, C#, D, Objective C, czy C++ z GC; nie będę brał pod uwagę języków takich jak PHP, Perl czy Ruby).

Zajęcia w cyklu "Semestr zimowy 2024/25" (jeszcze nie rozpoczęty)

Okres: 2024-10-01 - 2025-02-16
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin, 16 miejsc więcej informacji
Wykład, 30 godzin, 32 miejsc więcej informacji
Koordynatorzy: (brak danych)
Prowadzący grup: Jerzy Białkowski
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Laboratorium - Zaliczenie na ocenę
Wykład - Egzamin
Skrócony opis:

Celem wykładu jest nabycie wiedzy i umiejętności przydatnych do tworzenia usług windowsowych (ang. Windows Services) oraz klasycznych aplikacji dla systemów Windows.

Pełny opis:

Odpowiedzi na "często zadawane pytania":

Pytanie: Pod jakim systemem operacyjnym będziemy pracować?

Odpowiedź: Najogólniej mówiąc pod stacjonarną wersją systemu Windows bazującego na jądrze systemu wywodzącego się z systemu OS2, ale napjprawdopodobniej jeszcze nie Windows 11. W uproszczeniu: Windows 10 lub ewentualnie Windows 7 (ten ostatni ma tę zaletę, że trudnej go popsuć, ale z drugiej strony trudniej będzie zainstalować i skonfigurować na nim właściwe środowisko programistyczne).

Pytanie: Jakie będzie podstawowe środowisko programistyczne (z znaczeniu IDE - Integrated Development Environment)?

Odpowiedź: Visual Studio 2022 lub Visual Studio 2019 w wariancie przynajmniej Community (które jest do tego typu zastosowań darmowe). Przypominam, że jako studenci mogą Państwo pobrać z programu Azure Dev Tools for Teaching wersję Enterprise i z powodu niektórych dodatkowych funkcjonalności nawet preferowałbym tę wersję (Enterprise). Zalecam instalowanie tego środowiska z angielskim pakietem językowym (bo tłumaczenia w domyślnie ustawianym polskim pakiecie nadal czasami są mocno nieintuicyjne i mylące).

Pytanie: Jakie będzie podstawowe środowisko programistyczne (z znaczeniu API - Application Programming Interface)?

Odpowiedź: .NET Framework aktualizacja: z możliwością używania .NET (dawniej .NET Core), w niektórych miejscach stosownie opakowywanego lub uzupełnianego kodem natywnym pisanym w Visual C++.

Pytanie: Dlaczego .NET Framework, a nie .NET (dawniej .NET Core)?

Odpowiedź: Bo .NET Framework obsługuje mechanizmy potrzebne m.in. do implementowania usług windowsowych (przyp. Windows Services), a .NET Core (dawniej .NET Core) na obecną chwilę ich nie obsługuje, lub wymaga karkołomnego opakowywania własnych mechanizmów (np. opakowanie Backgroud Service do Windows Service). Oczywiście poza .NET Frameworkiem będzie można użyć też innych mechanizmów (więcej szczegółów będzie na zajęciach), ale opakowywanie .NET (dawniej .NET Core) w .NET Framework (ew. .NET Standard) bywa karkołomne. Jeśli ktoś będzie bardzo biegły w C i będzie znał podstawy Win API, to będzie mógł stworzyć implementację w kodzie natywnym, ale nie spodziewam się, że ktoś się o to pokusi. W końcowej części wykładu planuję wprowadzenie (w frameworku .NET) zadań działających w tle (z nowego modelu), ale spodziewam się problemów...

Pytanie: Z jakich języków programowania będziemy korzystać?

Odpowiedź: Na wykładzie będę się posługiwał niemal wyłącznie językiem C#, ale jeśli ktoś będzie chciał (i umiał), to równie dobrze może używać jakiegoś innego języka wspieranego przez środowisko programistyczne, np. Visual Basic.

Pytanie: Nie udało mi się zapisać na przedmiot w USOS-ie. Czy mógłby Pan mnie dopisać? Czy będzie utworzona dodatkowa grupa?

Odpowiedź:

  • Mam nadzieję, że w tym roku fizycznych miejsc dla wszystkich wystarczy. Dla każdej z grup limit osób wynosi 16, ale w pracowni mamy 20 miejsc przy komputerach + 20 miejsc w ławkach, więc wydaje się, że w tej sali dałby się przeprowadzić wykład nawet dla większej liczby osób.
  • Zaznaczam, że przedmiot nie jest odpowiedni dla osób które jeszcze nie zaliczyły przedmiotu Programowanie III. Co prawda zakładam, że nie wszyscy uczestnicy koniecznie muszą na początku znać C# i pierwsze zajęcia będą poświęcone w uproszczeniu temu jak przestawić się z Javy na C#, ale znajomość podstaw programowania obiektowego w języku typowo obiektowym (jak Java) będzie absolutnie niezbędna. Mam złe doświadczenia z osobami, które wybierały sobie ten przedmiot, będąc na drugim roku I stopnia studiów - przed poznaniem języków Java lub C# (Programowanie III), a nawet C++ (Programowanie II). Część z tych osób zrezygnowała po kilku tygodniach (uznając, że sobie nie poradzą lub będą musiały zbyt dużo czasu poświęcić na wcześniejszą naukę wymaganych podstaw), część pod koniec, sporo osób zaliczyło go dopiero we wrześniu (po zaliczeniu Programowania III), niektórzy (nieliczni) w kolejnym cyklu lub wcale. W 2-4 godziny nie da się przeprowadzić 60-godzinnego kursu, a zaległości miały tendencję do lawinowego narastania. Dlatego prosiłbym osoby z drugiego roku studiów pierwszego stopnia, aby w tym roku nie wybierały tego przedmiotu (chyba, że przekonają mnie, że potrafią już programować w jakimś silnie typowanym i typowo obiektowym języku programowania, najlepiej wywodzącym się z C, jak Java, C#, D, Objective C, czy C++ z GC; nie będę brał pod uwagę języków takich jak PHP, Perl czy Ruby).

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Mikołaja Kopernika w Toruniu.
ul. Jurija Gagarina 11, 87-100 Toruń tel: +48 56 611-40-10 https://usosweb.umk.pl/ kontakt deklaracja dostępności USOSweb 7.0.3.0-1 (2024-04-02)