Module also offered within study programmes:
General information:
Name:
Advanced low-level programming
Course of study:
2018/2019
Code:
JIS-2-029-GK-s
Faculty of:
Physics and Applied Computer Science
Study level:
Second-cycle studies
Specialty:
Grafika komputerowa i przetwarzanie obrazów
Field of study:
Applied Computer Science
Semester:
0
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Course homepage:
 
Responsible teacher:
dr inż. Świentek Krzysztof (swientek@agh.edu.pl)
Academic teachers:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
dr inż. Skoczeń Andrzej (skoczen@fis.agh.edu.pl)
dr inż. Świentek Krzysztof (swientek@agh.edu.pl)
Module summary

Przedmiot ma zapoznać studenta z zaawansowanym programowaniem niskopoziomowym w systemach mikroprocesorowych np. komunikacją przez interfejs USB, pisanie sterowników itp..

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_K001 Student potrafi pracować w zespole projektowym. Potrafi samodzielnie zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji jego częsci zadania projektowego. IS2A_K01, IS2A_K02 Participation in a discussion,
Execution of a project,
Execution of laboratory classes
M_K002 Student umie przedstawić wykonany projekt w komunikatywnej prezentacji IS2A_K01, IS2A_K03, IS2A_K02 Report,
Execution of a project
Skills
M_U001 Student potrafi napisać prosty program w języku assembler z wykorzystaniem podstawowych instrukcji procesora w wersjach 8, 32 i 64 bitowych IS2A_U02, IS2A_U06, IS2A_U01 Execution of a project,
Execution of laboratory classes
M_U002 Student potrafi łączyć elementy asemblera z oprogramowaniem napisanym za pomocą innych języków IS2A_U02, IS2A_U06, IS2A_U04, IS2A_U01 Execution of a project,
Execution of laboratory classes
M_U003 Student potrafi znaleźć krytyczne elementy tworzonego oprogramowania i dokonać ich optymalizacji IS2A_U02, IS2A_U04, IS2A_U01 Execution of a project,
Execution of laboratory classes
Knowledge
M_W001 Student zna podstawowe cechy i elementy chrakterystyczne dla niskopoziomowych języków programowania wraz z budową wewnętrzną typowych mikroprocesorół 8, 32 i 64 bitowych IS2A_W04 Activity during classes,
Execution of a project,
Execution of laboratory classes
M_W002 Student zna proces kompilacji i konsolidacji kodów źródłowych do kodu maszynowego, z wykorzystaniem narzędzi odpowiednich dla danego typu mikroprocesora IS2A_W05, IS2A_W04 Activity during classes,
Execution of a project,
Execution of laboratory classes
M_W003 Student zna podstawowe techniki i narzędzia przydatne w optymalizacji i profilowaniu oprogramowania IS2A_W08, IS2A_W05 Activity during classes,
Execution of a project,
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_K001 Student potrafi pracować w zespole projektowym. Potrafi samodzielnie zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji jego częsci zadania projektowego. - - - + - - - - - - -
M_K002 Student umie przedstawić wykonany projekt w komunikatywnej prezentacji - - - + - - - - - - -
Skills
M_U001 Student potrafi napisać prosty program w języku assembler z wykorzystaniem podstawowych instrukcji procesora w wersjach 8, 32 i 64 bitowych - - + + - - - - - - -
M_U002 Student potrafi łączyć elementy asemblera z oprogramowaniem napisanym za pomocą innych języków - - + + - - - - - - -
M_U003 Student potrafi znaleźć krytyczne elementy tworzonego oprogramowania i dokonać ich optymalizacji - - + + - - - - - - -
Knowledge
M_W001 Student zna podstawowe cechy i elementy chrakterystyczne dla niskopoziomowych języków programowania wraz z budową wewnętrzną typowych mikroprocesorół 8, 32 i 64 bitowych - - + - - + - - - - -
M_W002 Student zna proces kompilacji i konsolidacji kodów źródłowych do kodu maszynowego, z wykorzystaniem narzędzi odpowiednich dla danego typu mikroprocesora - - + - - + - - - - -
M_W003 Student zna podstawowe techniki i narzędzia przydatne w optymalizacji i profilowaniu oprogramowania - - + - - + - - - - -
Module content
Laboratory classes:

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ć cechy charakterystyczne niskopoziomowych języków programowania
student potrafi przedstawić podstawowe komponenty składowe mikroprocesorów w wersjach 8, 32 i 64 bitowych
student potrafi napisać proste programy wykorzystując podstawowe elementy charakterystyczne dla języka assembler
student potrafi wykorzystywać dostępne oprogramowanie do tworzenie i weryfikacji kodów napisanych w języku asembler.
Student potrafi wykorzystać narzędzia debugujące i profilujące do poprawy jakości swojego oprogramowania.

Project classes:

Studenci będą w zespołach realizować przydzielane losowo projekty. W ramach projektu należało będzie wykonać oprogramowanie realizujące określone w temacie zadanie z wykorzystaniem dostępnych narzędzi służących do tworzenia, testowania i weryfikacji kodów źródłowych w asemblerze. Dodatkowo zrealizowany projekt powinien posiadać pełną dokumentację funkcjonalności, zastosowanych technik programowania, algorytmów oraz wszystkie kody źródłowe z odpowiednimi komentarzami.

Efekty kształcenia:
student potrafi przedstawić analizę projektu w raz z odpowiednim podziałem na moduły składowe
student potrafi współpracować w grupie realizując swoją cześć zadania
student potrafi zademonstrować funkcjonalność stworzonego oprogramowania, która jest zgodna ze specyfikacją oraz przygotować dokumentację.

Seminar classes:

Seminarium (czasem wykład w zależności od liczby studentów) będzie obejmowało zagadnienia oprogramowania niskopoziomowego mikroprocesorów 8, 32 i 64 bitowych. Przedstawione zostaną narzędzia pozwalające na tworzenie samodzielnego oprogramowania oprogramowania w języku assembler, a także wykorzystanie jego elementów w językach wyższego poziomu. Seminarium ma także na celu pogłębienie rozumienia działania procesora i systemu operacyjnego, aby wykorzystać tę wiedzę do optymalizowania własnego oprogogramowania.

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 120 h
Module ECTS credits 4 ECTS
Participation in seminar classes 20 h
Preparation for classes 30 h
Participation in laboratory classes 20 h
Participation in project classes 20 h
Completion of a project 30 h
Additional information
Method of calculating the final grade:

Ocena końcowa (OK) obliczana jest jako średnia ważona ocen z laboratorium wraz z projektem (LA) i seminarium (SE):
OK = 0.7 x LA + 0.3 x SE
Uzyskanie pozytrywnej oceny (OK) wymaga uzyskania wszystkich pozytywnych ocen cząstkowych (LA, SE). Każda ocena cząstkowa liczona jest jako średnia ważona z wszystkich terminów.

Prerequisites and additional requirements:

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

Recommended literature and teaching resources:

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:

K. Swientek, M. Banachowicz,
Design of Memory Subsystem for Wide Input Data Range in the SALT ASIC,
Proceedings of the 24th International Conference “Mixed Design of Integrated Circuits and Systems”, June 22-24, 2017, Bydgoszcz, Poland.

S. Bugiel, R. Dasgupta, M. Firlej, T. Fiutowski, M. Idzik, M. Kopec, J. Moron, K. Swientek,
Ultra-Low Power Fast Multi-Channel 10-Bit ADC ASIC for Readout of Particle Physics Detectors
IEEE Trans. Nucl. Sci. vol. 63, 2016, pp. 2622-2631.

M. Idzik, K. Swientek, T. Fiutowski, S. Kulis, D. Przyborowski,
A 10-Bit Multichannel Digitizer ASIC for Detectors in Particle Physics Experiments,
IEEE Trans. Nucl. Sci. vol. 59, 2012, pp. 294-302.

S. Kulis, A. Matoga, M. Idzik, K. Swientek, T. Fiutowski, D. Przyborowski,
A general purpose multichannel readout system for radiation detectors,
JINST 7 T01004 2012, pp. 294-302.

Additional information:

I – Sposób i tryb wyrównania zaległości powstałych wskutek nieobecności studenta na zajęciach:

zajęcia laboratoryjne, komputerowe, projektowe, seminaryjne:
Nieobecność na jednych zajęciach laboratoryjnych wymaga od studenta samodzielnego opanowania przerobinego na tych zajęciach materiału. Nieobecność na więcej niż jednych zajęciach wymaga od studenta samodzielnego opanowania przerabianego na tych zajęciach materiału i jego zaliczenia w formie pisemnej w wyznaczonym przez prowadzącego terminie, lecz nie później jak w ostatnim tygodniu trwania zajęć.
Student który bez usprawiedliwienia opuścił więcej niż 10% zajęć i jego cząstkowe wyniki w nauce były negatywne może zostać pozbawiony, przez prowadzącego zajęcia, możliwości wyrównania zaległości.

Obecność na wykładzie: zgodnie z Regulaminem Studiów AGH.

II – Zasady zaliczania zajęć:

zajęcia laboratoryjne, komputerowe, projektowe: Podstawowym terminem uzyskania zaliczenia jest koniec zajęć w danym semestrze. Student może przystąpić do poprawkowego zaliczenia.
Student który bez usprawiedliwienia opuścił więcej niż 10% zajęć i jego cząstkowe wyniki w nauce były negatywne może zostać pozbawiony, przez prowadzącego zajęcia, możliwości poprawkowego zaliczania zajęć.

seminarium: warunkiem zaliczenia jest wygłoszenie seminarium z oceną pozytywną i obecność na conajmniej 90% zajęć.