Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Programming in UNIX systems
Tok studiów:
2018/2019
Kod:
JFT-1-042-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Fizyka Techniczna
Semestr:
0
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Angielski
Strona www:
 
Osoba odpowiedzialna:
dr hab. inż. Bołd Tomasz (tomasz.bold@fis.agh.edu.pl)
Osoby prowadzące:
dr hab. inż. Bołd Tomasz (tomasz.bold@fis.agh.edu.pl)
Krótka charakterystyka modułu

The course covers the Unix (Linux, Mac OS) system programming.

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_W001 The student knows UNIX process management and intercommunication mechanisms. He/she understands advantages of various available mechanisms. Wykonanie projektu
Umiejętności
M_U002 The student is accustomed to the UNIX programming environment and knows how to use various libraries in a more advanced project. Wykonanie projektu
Kompetencje społeczne
M_K001 The student is able to explain the technologies used in the project and defend the choices he/she made. Prezentacja
M_K002 The student will be able to participate constructively in the discussions about work presented by others. Referat
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_W001 The student knows UNIX process management and intercommunication mechanisms. He/she understands advantages of various available mechanisms. + - - + - - - - - - -
Umiejętności
M_U002 The student is accustomed to the UNIX programming environment and knows how to use various libraries in a more advanced project. - - - + - - - - - - -
Kompetencje społeczne
M_K001 The student is able to explain the technologies used in the project and defend the choices he/she made. + - - - - - - - - - -
M_K002 The student will be able to participate constructively in the discussions about work presented by others. - - - - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:
  1. Introduction

    Evolution of Unix systems. System architecture. Standards evolution. POSIX. System V standard. Elementary concepts.
    Components of UNIX system administration. UNIX program compilation and debugging.
    Example.

  2. IO

    File I/O. File abstraction in UNIX systems. Device files. File system interactions.
    File access permissions.

  3. Processes 1

    Process vs program. Initialisation and termination. Process environment.

  4. Processes 2

    Controlling processes: signals, initiating new processes, daemons. A stack of processes.

  5. Threads

    POSIX threads. Controlling threads lifetime. Reentrancy. Thread data. Synchronisation primitives.

  6. IPC 1

    Overview of available methods. Signals.

  7. IPC 2

    Named and unnamed stream pipes. Messages. Asynchronous I/O.

  8. IPC 3

    Shared memory. Semaphores.

  9. Basic networking

    Network based process communication. Addressing. Sockets. UDP vs TCP. SSL/TSL

  10. Modern IPC libraries

    Examples of few libraries based on the elementary mechanisms.

  11. Project presentations

    Remaining time will be devoted to student projects presentations. Every student will be asked to present the two programs. The presentation has to cover the description of the problem to solve, the solution (presentation of relevant code snippets) and discussion of difficulties encountered.

Ćwiczenia projektowe:
  1. Simple unix program

    In the first, simple, unix program elementary aspects will be covered. Typically process management and simple IO + some algorithmic part.

  2. Advanced unix program

    The level of complexity of the second program will be adjusted individually for each student (more advanced problems will be rewarded with the higher final grade). Subjects will cover the second part of the lectures, namely the IPC & threads.

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ł 5 ECTS
Udział w wykładach 30 godz
Wykonanie projektu 60 godz
Przygotowanie do zajęć 60 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

The final grade will be based on three notes: for the first, program, the second program and the quality presentation (each judged in 0-10 points scale). They will be weighted 30/50/20 correspondingly for the final grade. Absences can be compensated by an additional project.

Wymagania wstępne i dodatkowe:

Good knowledge of C programming language and decent Unix user skills.

Zalecana literatura i pomoce naukowe:

Advanced UNIX programming and UNIX Network programming by Richard Stevens.

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

Nie podano dodatkowych publikacji

Informacje dodatkowe:

Unix (Linux, Mac OS) system-level programming is used typically behind the scenes of the high-level libraries. In typical user code, the latter tend to be used nowadays. However, understanding the underlying mechanisms allows to better comprehend the high-level designs as well as gives an insight into the legacy systems. Last but not least some of the Unix system mechanism provide much more performant solutions than those offered by high-level libraries.