Module also offered within study programmes:
General information:
Name:
Low-level Programming
Course of study:
2018/2019
Code:
JIS-1-050-s
Faculty of:
Physics and Applied Computer Science
Study level:
First-cycle studies
Specialty:
-
Field of study:
Applied Computer Science
Semester:
0
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Responsible teacher:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Academic teachers:
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)
Module summary

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

Description of learning outcomes for module
MLO code Student after module completion has the knowledge/ knows how to/is able to Connections with FLO Method of learning outcomes verification (form of completion)
Social competence
M_K006 Student potrafi samodzielnie pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania. IS1A_K01 Activity during classes,
Execution of laboratory classes
M_K007 Student ma świadomość odpowiedzialności za własną pracę. IS1A_K01 Activity during classes,
Execution of laboratory classes
Skills
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 Activity during classes,
Execution of laboratory classes
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 Activity during classes,
Execution of laboratory classes
Knowledge
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 Activity during classes,
Examination,
Execution of laboratory classes
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 Activity during classes,
Examination,
Execution of laboratory classes
M_W012 Student zna i potrafi wyjaśnić działanie słów kluczowych oraz konstrukcji stosowanych w języku assembler. IS1A_W02 Activity during classes,
Examination,
Execution of laboratory classes
M_W013 Student zna sposoby łączenia kodu napisanego w niskiego poziomu z kodami lub bibliotekami zaimplementowanymi w językach C i C++. IS1A_W02 Activity during classes,
Examination,
Execution of laboratory classes
FLO matrix in relation to forms of classes
MLO code Student after module completion has the knowledge/ knows how to/is able to Form of classes
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Others
E-learning
Social competence
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ę. - - + + - - - - - - -
Skills
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. - - + + - - - - - - -
Knowledge
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++. - - + - - + - - - - -
Module content
Laboratory classes:
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

Project classes:
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.

Seminar classes:
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

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 150 h
Module ECTS credits 6 ECTS
Participation in seminar classes 21 h
Realization of independently performed tasks 40 h
Participation in laboratory classes 18 h
Preparation for classes 30 h
Examination or Final test 3 h
Completion of a project 20 h
Participation in project classes 18 h
Additional information
Method of calculating the final grade:

Ś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ęć.

Prerequisites and additional requirements:

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

Recommended literature and teaching resources:

• 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.

Scientific publications of module course instructors related to the topic of the module:

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).

Additional information:
  • 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