Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Programowanie niskopoziomowe
Tok studiów:
2018/2019
Kod:
JIS-1-050-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Informatyka Stosowana
Semestr:
0
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Osoba odpowiedzialna:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Osoby prowadzące:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
dr inż. Moroń Jakub (jmoron@agh.edu.pl)
dr inż. Moroń Jakub (jmoron@agh.edu.pl)
Krótka charakterystyka modułu

Moduł prezentuje aspekty programowania niskopoziomowego wraz z niezbędnymi do tego celu narzędziami.

Opis efektów kształcenia dla modułu zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń)
Wiedza
M_W010 Student zna podstawowe cechy i elementy charakterystyczne dla niskopoziomowych języków programowania wraz z budową wewnętrzną typowych mikroprocesorów 8, 32 i 64 bitowych. IS1A_W02 Aktywność na zajęciach,
Egzamin,
Wykonanie ćwiczeń laboratoryjnych
M_W011 Student zna proces kompilacji oraz konsolidacji kodów źródłowych do kodu maszynowego, z wykorzystaniem narzędzi odpowiednich dla danego typu mikroprocesora IS1A_W02 Aktywność na zajęciach,
Egzamin,
Wykonanie ćwiczeń laboratoryjnych
M_W012 Student zna i potrafi wyjaśnić działanie słów kluczowych oraz konstrukcji stosowanych w języku assembler. IS1A_W02 Aktywność na zajęciach,
Egzamin,
Wykonanie ćwiczeń laboratoryjnych
M_W013 Student zna sposoby łączenia kodu napisanego w niskiego poziomu z kodami lub bibliotekami zaimplementowanymi w językach C i C++. IS1A_W02 Aktywność na zajęciach,
Egzamin,
Wykonanie ćwiczeń laboratoryjnych
Umiejętności
M_U007 Student potrafi napisać prosty program w języku assembler z wykorzystaniem podstawowych instrukcji procesora w wersjach 8, 32 i 64 bitowych IS1A_U02, IS1A_U01 Aktywność na zajęciach,
Wykonanie ćwiczeń laboratoryjnych
M_U008 Student potrafi napisać prosty program w języku assembler łącząc go z elementami napisanymi za pomocą innych języków. IS1A_U02, IS1A_U01 Aktywność na zajęciach,
Wykonanie ćwiczeń laboratoryjnych
Kompetencje społeczne
M_K006 Student potrafi samodzielnie pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania. IS1A_K01 Aktywność na zajęciach,
Wykonanie ćwiczeń laboratoryjnych
M_K007 Student ma świadomość odpowiedzialności za własną pracę. IS1A_K01 Aktywność na zajęciach,
Wykonanie ćwiczeń laboratoryjnych
Matryca efektów kształcenia w odniesieniu do form zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
M_W010 Student zna podstawowe cechy i elementy charakterystyczne dla niskopoziomowych języków programowania wraz z budową wewnętrzną typowych mikroprocesorów 8, 32 i 64 bitowych. - - + - - + - - - - -
M_W011 Student zna proces kompilacji oraz konsolidacji kodów źródłowych do kodu maszynowego, z wykorzystaniem narzędzi odpowiednich dla danego typu mikroprocesora - - + - - + - - - - -
M_W012 Student zna i potrafi wyjaśnić działanie słów kluczowych oraz konstrukcji stosowanych w języku assembler. - - + - - + - - - - -
M_W013 Student zna sposoby łączenia kodu napisanego w niskiego poziomu z kodami lub bibliotekami zaimplementowanymi w językach C i C++. - - + - - + - - - - -
Umiejętności
M_U007 Student potrafi napisać prosty program w języku assembler z wykorzystaniem podstawowych instrukcji procesora w wersjach 8, 32 i 64 bitowych - - + + - - - - - - -
M_U008 Student potrafi napisać prosty program w języku assembler łącząc go z elementami napisanymi za pomocą innych języków. - - + + - - - - - - -
Kompetencje społeczne
M_K006 Student potrafi samodzielnie pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania. - - + + - - - - - - -
M_K007 Student ma świadomość odpowiedzialności za własną pracę. - - + + - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Ćwiczenia laboratoryjne:
Tematyka

Studenci w ramach prowadzonych zajęć laboratoryjnych będą samodzielnie pisać oraz testować i weryfikować krótkie programy komputerowe ilustrujące tematykę poruszaną w ramach seminarium.

Efekty kształcenia:
• student potrafi przedstawić klasyfikację systemów operacyjnych
• student potrafi przedstawić cechy charakterystyczne niskopoziomowych języków programowania
• student potrafi przedstawić podstawowe komponenty składowe mikroprocesorów
• student potrafi napisać proste programy wykorzystując podstawowe elementy charakterystyczne dla technik programowania niskopoziomowego
• student potrafi wykorzystywać dostępne oprogramowanie do tworzenie i weryfikacji napisanych przez siebie kodów

Ćwiczenia projektowe:
Tematyka

Studenci w ramach ćwiczeń projektowych będą samodzielnie pisać, testować i weryfikować oraz prezentować rozwiązanie określonego zadania z wykorzystaniem tematyki poruszanej w ramach seminarium i ćwiczeń laboratoryjnych.

Zajęcia seminaryjne:
Tematyka

• Podstawowa klasyfikacja systemów operacyjnych
• Budowa oraz funkcje typowych systemów operacyjnych
• Komunikacja jądra systemu operacyjnego z przestrzenią użytkownika
• Sterowniki urządzeń
• Architektury mikroprocesorów
• Architektura x86 i x86_64
• Assemblery – cechy ogólne
• Asembler x86
• Łączenie modułów ASM z językami wysokiego poziomu
• Kod maszynowy
• Inżynieria wsteczna
• Bezpieczeństwo kodu
• Optymalizacja kodu
• Oprogramowanie wspomagające: kompilatory, emulatory, debuggery

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 150 godz
Punkty ECTS za moduł 6 ECTS
Udział w zajęciach seminaryjnych 21 godz
Samodzielne studiowanie tematyki zajęć 40 godz
Udział w ćwiczeniach laboratoryjnych 18 godz
Przygotowanie do zajęć 30 godz
Egzamin lub kolokwium zaliczeniowe 3 godz
Wykonanie projektu 20 godz
Udział w ćwiczeniach projektowych 18 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

Średnia ważona z oceny z zaliczenia laboratorium i projektu oraz wszystkich ocen z egzaminu, przy czym do obliczania średniej brany jest wynik procentowy.

Wymagane jest uzyskanie pozytywnego wyniku z każdej formy zajęć.

Wymagania wstępne i dodatkowe:

Znajomość programowania w języku C oraz C++

Zalecana literatura i pomoce naukowe:

• Materiały z seminarium
• Richard Blum “Professional Assembly Language”, Wiley 2005
• Richard Detmer “Introduction to 80×86 Assembly Language and Computer Architecture”, 2001 by Jones and Bartlett Publishers, Inc.

Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

1. B. Mindur and Ł. Jachymczyk, The Ethernet based protocol interface for compact data acquisition
systems, Jour. Instr. 7, T10004 (2012).
2. B. Mindur et al., A compact system for two-dimensional readout of Gas Electron Multiplier detectors, Jour. Instr. 8, T01005 (2013).

Informacje dodatkowe:
  • Sposób i tryb wyrównania zaległości powstałych wskutek nieobecności studenta
    na zajęciach:
    Seminaria i ćwiczenia laboratoryjne:
    - Nieobecność na nie więcej niż jednych zajęciach wymaga od studenta
    samodzielnego (z możliwością wykorzystania godzin konsultacji) opanowania
    przerabianego na tych zajęciach materiału.
    - Nieusprawiedliwiona nieobecność na więcej niż jednych zajęciach danego typu oznacza brak
    możliwości zaliczenia ćwiczeń.
    - Student ma prawo do odrobienia każdej usprawiedliwionej nieobecności w
    wyznaczonym przez prowadzącego terminie – do dwóch tygodni od zaistnienia tej nieobecności lecz nie później jak w ostatnim tygodniu trwania zajęć.
  • Zasady zaliczania zajęć:
    Seminarium:
    - Zaprezentowanie przygotowanego wcześniej seminarium prowadzącemu oraz wszystkim uczestnikom kursu, który to zostanie pozytywnie ocenione przez prowadzącego.
    - Student który bez usprawiedliwienia opuścił więcej niż jedne zajęcia nie
    uzyskuje zaliczenia ćwiczeń.

Ćwiczenia laboratoryjne:
- Podstawowym terminem uzyskania zaliczenia jest koniec zajęć w danym semestrze,
przy czym przy obliczaniu końcowej liczby punktów nie będą brane pod uwagę dwa
ćwiczenia, z których dana osoba uzyskała najmniejsze liczby punktów. Termin
ten może zostać wydłużony w przypadku niemożliwości wcześniejszego wyrównania
zaległości wynikającego z usprawiedliwionych przyczyn.
- Student który bez usprawiedliwienia opuścił więcej niż jedne zajęcia nie
uzyskuje zaliczenia ćwiczeń.

Projekt:
- Projekt oceniany jest w oparciu o procent zrealizowanych założeń projektowych i/lub ocenę niezawodności działania oprogramowania. Dodatkowo oceniany jest sposób zaprezentowania informacji technicznych zawartych w opracowanej dokumentacji.
Projekt musi zostać zaliczony.

W przypadku braku zaliczenia w terminie podstawowym, student ma prawo do jednokrotnie przystąpienia do zaliczenia poprawkowego z danej formy zajęć, pod warunkiem braku nieusprawiedliwionych nieobecności.

  • Warunkiem przystąpienia do egzaminu jest wcześniejsze uzyskanie zaliczenia z
    seminarium, ćwiczeń laboratoryjnych oraz projektu.
    Egzamin przeprowadzany jest zgodnie z Regulaminem Studiów AGH § 16.
  • Szczegółowe informacje organizacyjne dotyczące trybu zaliczania zajęć i
    odrabiania zaległości dostępne są na stronie
    http://taurus.fis.agh.edu.pl/~mindur/pn