Programowanie niskopoziomowe
Informacje ogólne
Kod przedmiotu: | WMI.II-PN-S |
Kod Erasmus / ISCED: |
(brak danych)
/
(0613) Tworzenie i analiza oprogramowania i aplikacji
|
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
|
Język prowadzenia: | polski |
Zajęcia w cyklu "Semestr zimowy 2023/2024" (zakończony)
Okres: | 2023-10-01 - 2024-01-28 |
Przejdź do planu
PN WT WYK
LAB
ŚR LAB
CZ PT |
Typ zajęć: |
Laboratorium, 45 godzin
Wykład, 15 godzin, 81 miejsc
|
|
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 |
|
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 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 |
|
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 |
Właścicielem praw autorskich jest Uniwersytet Jagielloński w Krakowie.