# SNP - Laboratory Planning ### Description TODO ### Views [Github-Pages](https://github.zhaw.ch/pages/SNP/snp/) [.pdf](https://github.zhaw.ch/SNP/snp-lab-code/blob/master/main.pdf) ## Is-State | Requirements | Chapter | Lecture Contents | Previous Knowledge | Lab handling | FS21 Lab | Comments | Lab Contents | | :-- | :-- | :--------: | :--: | :--: | :--: | :--: | :--: | || Chapter 1||||||| |Sie können ein single-file C Programm von Grund auf programmieren. | | C Programmelemente | no | implicit | -- | | Hello world | |Sie binden Teile der C Standard Library mit include ein und setzen Macros ein.| | include, define | no | implicit | -- | | Umwandlungstabelle | |Sie verwenden Input- und Output-Funktionen für strukturierte Ein- und Ausgabe.| | Input/Output | no | implicit | -- || word count | || ||||Bash Script||| || Chapter 2||||||| |Sie haben die Kompetenz kleinere Programme in C zu verstehen, zu programmieren und zu testen.||comments|yes|implicit|*bit operations*||comments| |||variables|yes|implicit|QR-Code output|defines|variables| |||data types|yes|explicit||fputs|data types| |||literals|yes|implicit| |getchar|literals| |||operators|yes|implicit| |switch-case|operators| |||expressions|yes|implicit| Bash script|pipe|expressions| |||control structures|yes|implicit| |qrencode|control structures| |||formatted I/O functions|no|explicit| ||printf| |||complex data types|no|explicit| ||scanf| ||| enums|yes|explicit| ||complex data types| ||| structures|no|explicit| ||enums| ||| ||| ||structures| || Chapter 3||||||| ||| functions|no|explicit|Wochentag |enum|functions| ||| by value|yes|explicit| |typedef|by value| ||| variable scope|in principle|explicit| |scanf|variable scope| ||| declarations, definitions|in principle|explicit| |struct|declarations, definitions| ||| ||| |function|| ||| ||| |control strcutures|| || Chapter 4||||||| ||| pre-processor/compiler …|no|explicit|Modularisation |header files|pre-processor/compiler …| ||| modularity in C|no|explicit| |include guards|modularity in C| ||| libraries|no|explicit| |makefiles|libraries| |Sie verfügen über die Voraussetzungen um grössere Programme zu verstehen, anzupassen und erstellen und testen zu können.  || C standard library|no|explicit| ||C standard library| ||| make|no|explicit| ||make| || Chapter 5||||||| |Sie können die Funktionsweise des sizeof Operators erklären und ihn anwenden.|| sizeof|no|explicit|TicTacToe |sizeof|sizeof| |Sie wissen wie Arrays in C aufgebaut und im Speicher angelegt werden und wie auf sie zugegriffen werden kann. || arrays|no|explicit| TicTacToe|arrays| |Sie verstehen die Darstellung von Strings und ihre Ähnlichkeit zu char-Arrays und können die wichtigsten String Funktionen der Standard Library einsetzen. || strings|no|no| ||| || Chapter 6||||||| ||| pointers|no|explicit|Integer Rechner |pointers to struct|pointers| ||| pointer and arrays|no|explicit||memory management|pointer and arrays| |Sie verstehen die Speicherverwaltungskonzepte und können den Speichergebrauch optimieren.|| memory management|no|explicit||pointer arithmetic|memory management| || Chapter 7||||||| ||| paramaters by reference|no|explicit|__Personen Verwaltung__|pointers|paramaters by reference| ||| multidimensional arrays|no|explicit| |memory management|multidimensional arrays| ||| variable paramaters|no|none| |linked lists|variable paramaters| ||| code issues C|no|none| ||code issues C| ||| test|yes|explicit| ||test| || Chapter 8||||||| ||| System Calls|no|explicit|Bash Script|memory management|System Calls| ||| C compiler implementation|no|none| |stdlib|C compiler implementation| ||| File hierarchy|no|none| |file handling|File hierarchy| |Sie können die Operation eines File-Systems erklären und die entsprechenden System-Aufrufe anwenden. || files and file I/O|no|explicit| |directories|files and file I/O| || Chapter 9||||||| |Sie verstehen die Konzepte von Prozessen und Threads und können diese fachgerecht einsetzen und testen. Sie können mit Synchronisierungs-Methoden und Inter-Prozess-Kommunikation arbeiten. || processes|no|explicit|__Processes and Threads__ |fork|processes| ||| threads|yes|explicit| |pthreads|threads| || Chapter 10||||||| ||| pipes|no|explicit| ||pipes| ||| sockets|no|none| ||sockets| ||| shared memory|no|explicit| ||shared memory| ||| message passing|no|explicit| ||message passing| ||| signals|no|explicit| ||signals| || Chapter 11||||||| ||| mutex|no|explicit| ||mutex| ||| semaphores|no|explicit| ||semaphores| || Chapter 12||||||| |Sie beherrschen den Umgang mit POSIX-Clocks und hochauflösenden Timern. || ||| ||| || Chapter 13||||||| || Chapter 14||||||| ||| multicore basics||| ||multicore basics| ## Target-State |Week|Lab|Name|Requirement|Number of files|Preprocessor|Compiler|Build|Function|Boilerplate|Lecturer| |:--|:--|:--:|:--|:--|:--|:--|:--|:--|:--|:--| |Week 1|Lab1|Erste Schritte mit C|single file, includes, defines, command line compile, output Hello world from scratch|one|include define|command line|no|output (input?)|no|welo| |Week 2|Lab2|Funktionen, Datentyp "enum"| enum functions |||make|||yes|bazz| |Week 3|Lab3|Bit Operation struct typedef| struct typedef bit operations |||||||fisa| |Week 4|Lab4|Modularisieren von C Code| C/H files input guard Makefile |||||||huno| |Week 5|Lab5|TicTacToe| complete an existing multi file program using the sizeof operator, arrays (and manipulating strings?)|multi||make||sizeof arrays (strings?)||grop| |Week 6|Lab6|Personen Verwaltung Linked List| ability to program a multi file program using data pointers and variable input from scratch|multi|guards|extend make|yes|data pointers variable input|no|donn| |Week 8|Lab7||Prozesse und Threads|||||||donn| |Week 10|Lab8|Sync|Synchronisation|||||||donn| |Week 12|Lab9||File Operations|||||||scia| |Week 13|Lab10||IPC|||||||scia| |Week 14|Lab11|Bash|Bash|||||||stsh|