Uniwersytet Jagielloński w Krakowie - Centralny System Uwierzytelniania
Strona główna

Programowanie niskopoziomowe

Informacje ogólne

Kod przedmiotu: WMI.II-PN-S
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 niskopoziomowe
Jednostka: Instytut Informatyki i Matematyki Komputerowej
Grupy: Przedmioty dla programu WMI-0037-2SO
Przedmioty dla programu WMI-0118-1SO
Przedmioty dla programu WMI-0118-2SO
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.

zobacz reguły punktacji
Język prowadzenia: polski

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

Okres: 2023-10-01 - 2024-01-28
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 45 godzin więcej informacji
Wykład, 15 godzin, 81 miejsc więcej informacji
Koordynatorzy: Tomasz Kapela
Prowadzący grup: Tomasz Kapela
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Ocena wliczana do średniej:

tak

Efekty kształcenia:

- zna podstawowe i bardziej zaawansowane zagadnienia architektury współczesnych komputerów

- zna i umie użyć podstawowe instrukcje assemblera

- potrafi używać narzędzi takich jak kompilator, linker, debuger, profiler

- potrafi interfejsować kod assemblera z językami wysokiego

- zna podstawowe konwencje przekazywania przekazywania argumentów do podprogramu

- umie pisać kod niskopoziomowy z wykorzystaniem FPU, jednostek wektorowych SSE, AVX

- potrafi optymalizować kod niskopoziomowo i wysokopoziomowo

- potrafi dobierać odpowiednie narzędzia, języki programowania do rozwiązania danego problemu


Prerekwizyt:

Programowanie 1 WMI.II.P1-OL
Programowanie 2 WMI.II-P2-OL

Forma i warunki zaliczenia:

Student otrzymuje ocenę końcowa z ćwiczeń na podstawie punktów przyznawanych za samodzielnie rozwiązane zadania programistyczne oraz sprawdziany. Warunkiem otrzymania zaliczenia ćwiczeń jest uzyskanie odpowiedniej liczby punków określanej przez wykładowcę.


Student otrzymuje ocenę końcową z modułu na podstawie punktów przyznawanych na ćwiczeniach oraz punktów uzyskanych podczas egzaminu.


Metody sprawdzania i kryteria oceny efektów kształcenia uzyskanych przez studentów:

Student jest oceniany na podstawie punktów uzyskiwanych z samodzielnie implementowanych programów, sprawdzianów i egzaminu.

Skalę ocen ustala wykładowca.

Metody dydaktyczne - słownik:

Metody podające - prezentacja multimedialna
Metody podające - wykład informacyjny
Metody praktyczne - ćwiczenia przedmiotowe

Metody dydaktyczne:

1. Wykład ilustrowany prezentacją komputerową.

2. Laboratoria komputerowe: wspólna implementacja przykładowych programów, analiza przykładowych programów

3. Samodzielna implementacja zadań programistycznych w tym testowanych przez system automatycznej weryfikacji zadań.

Bilans punktów ECTS:

Udział w wykładach - 15 godz.

Udział w laboratoriach – 45 godz.

Samodzielna implementacja zadań programistycznych – 90 godz.

Przygotowanie do kolokwiów i egzaminu oraz obecność na egzaminie – 30 godz.

Łączny nakład pracy studenta: 180 godzin , co odpowiada 6 punktom ECTS

Sylabus przedmiotu dla studentów rozpoczynających studia od roku akademickiego 19/20 lub później:

Matematyka komputerowa, studia stacjonarne pierwszego stopnia, rok 3
Informatyka, studia stacjonarne drugiego stopnia, rok 2
Matematyka komputerowa, studia stacjonarne pierwszego stopnia, rok 2
Matematyka komputerowa, studia stacjonarne drugiego stopnia, rok 2
Matematyka komputerowa, studia stacjonarne drugiego stopnia, rok 1
Informatyka, studia stacjonarne drugiego stopnia, rok 1

Pełny opis:

1. Postawy języka assembler

- podstawy architektur x86 i x86_64

- podstawowe zestawy instrukcji, podprogramy dialekty (Intel, AT&T)

- narzędzia (kompilator, linker, debuger)

2. Interfejsowanie z językami wysokiego poziomu (C, C++)

- konwencja 32 bitowe: cdecl

- konwencje 64 bitowe: System V AMD64 ABI

- struktury, klasy, wirtualność z poziomu assemblera

- wstawki assemblerowe

3. Interfejsowanie z systemem operacyjnym

4. Rozszerzenia zestawu instrukcji

- Operacje zmiennoprzecinkowe: FPU, SSE

- Opreracje wektorowe: SSE, AVX

5. Architektura współczesnych procesorów i pamięci

- przetwarzanie potokowe

- predykcja skoków, równoległe wykonanie kodu

- poziomy i sposoby cache'owania

6. Optymalizacja kodu

- optymalizacja skoków, pętli i wywołań funkcji

- optymalizacja rozmiaru kodu

- optymalizacja dostępu do pamięci

- optymalizacja kodu wysokopoziomowego (profiler)

7. Podstawy systemów operacyjnych

Literatura:

Literatura podstawowa:

Randall Hyde, Profesjonalne programowanie. Część 1. Zrozumieć komputer,

Randall Hyde, Profesjonalne programowanie. Część 2. Myśl niskopoziomowo, pisz wysokopoziomowo

Randall Hyde, Asembler. Sztuka programowania. Wydanie II

Software optimization resources, Agner Fog

Agner Fog, Optimization manuals (dostępne na tronie autora)

NASM assembler

Dokumentacja techniczna na stonach Intela

Dokumentacja techniczna na stronach AMD

Literatura uzupełniająca:

Bogdan Drozdowski, Język asembler dla każdego

Paul Carter, PC Assembly Language

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Jagielloński w Krakowie.
ul. Gołębia 24, 31-007 Kraków https://www.uj.edu.pl kontakt deklaracja dostępności USOSweb 7.0.3.0 usosweb12c