LU-LSP-b
Īssaites: Kalendārs | Uzdevumi | Resursi | Šodiena: 04.11.20 (ja ir lekcija)
Linux sistēmas programmēšana (LSP)
LU DF bakalaura studiju kurss DatZ3122, meklēt eStudijās.
- Pasniedzējs: Leo Seļāvo (epasts: vards.uzvards @ gmail.com)
 
- Vēstkopa komunikācijai par kursa aktualitātēm, uzdevumiem, termiņiem un problēmām:
- Google grupa lu-lsp-b@googlegroups.com Lai pieteiktos, sekot http://groups.google.lv/group/lu-lsp-b un pieslēgties ar savu google kontu, vai arī sūtīt epastu pasniedzējam.
 
 
- Vērtējums = 15% praktiskie darbi, 25% mājas darbi, 10% dalība klasē, 20% KD1 un 30% KD2(eksāmens).
 
- LSP kursa atsauksmes no iepriekšējiem gadiem.
 
Praktisko un mājas darbu iesniegšana
- Mājas darbus iesniegt e-studijās vai darbu testēšanas serverī, atkarībā no darba specifikācijas.
 - Faila nosaukumam jābūt formā LSP_MD1_Vards_Uzvards.c (Mainot atbilstošo uzdevuma kodu un faila formātu pēc nepieciešamības)
 - Nevajag arhivēt failus, ja vien tas nav prasīts uzdevuma nosacījumos
 
Praktisko darbu vērtēšanas kritēriji
- Praktisko darbu mērķis ir nostiprināt un parādīt izpratni par apgūto vielu, attiecīgi darbi ir jārisina patstāvīgi, tomēr jautājumu uzdošana pasniedzējam vai kolēģiem ir vēlama.
 - Maksimālo vērtējumu par praktisko darbu var saņemt, ja tas iesūtīts līdz praktisko darbu lekcijas beigām (vai brīdim, kad vienojamies, ka publiski apskatīsim PD risinājumu).
 - Pēc termiņa praktiskie darbi tiek pieņemti vēl tekošo nedēļu (līdz nākamās lekcijas sākumam) un tiks novērtēti, tomēr vairs ne ar maksimālo atzīmi.
 - Papildus praktiskajos darbos un lekcijās var izpelnīties "plusiņus" ar dalību diskusijās, unikālu risinājumu un ideju piedāvāšanu, trāpīgu jautājumu uzdošanu, atbildēšanu uz kolēģu jautājumiem u.t.t., kas savukārt palīdzēs savākt +10% no kopējā vērtējuma "par darbu klasē".
 
Mājas darbu vērtēšanas kritēriji
- Mājas darbu iesniegšanas termiņa laiks ir attiecīgajā datumā 20:00
 - Ja darbs tiek iesniegts ar novēlošanos (kaut vai 1 sekundi!):
- Tūdaļ pēc termiņa rezultāts tiek samazināts par 50%
 - Nedēļu pēc termiņa darbi vairs netiek pieņemti.
 
 
Kalendārs
| Datums | Tēma, saturs | Uzdevumi | |
|---|---|---|---|
05.02.20 08:30 | 
 
 Vispārīgs pārskats par valodu C.  | 
  | |
06.02.20 14:30 | 
 
 
  | 
||
06.02.20 16:30 | 
 
  | 
  | |
12.02.20 08:30 | 
 
  | 
||
13.02.20 14:30 | 
 
  | 
||
13.02.20 16:30 | 
 
  | 
||
19.02.20 08:30 | 
 
  | 
  | |
20.02.20 14:30 | 
 
  | 
  | |
20.02.20 16:30 | 
 
  | 
||
26.02.20 08:30 | 
 
  | 
||
27.02.20 14:30 | 
 
  | 
||
27.02.20 16:30 | 
 
  | 
  | |
04.03.20 08:30 | 
 
  | 
  | |
05.03.20 14:30 | 
 
  | 
  | |
05.03.20 16:30 | 
 
  | 
||
11.03.20 08:30 | 
 
  | 
||
12.03.20 14:30 | 
 
  | 
||
12.03.20 16:30 | 
 
  | 
  | |
18.03.20 08:30 | 
 
  | 
||
19.03.20 14:30 | 
 
  | 
  | |
19.03.20 16:30 | 
 
  | 
  | |
25.03.20 08:30 | 
 
  | 
 Katra grupa: lūdzu atsūtiet vienu e-pastu ar paredzamajiem dalībniekiem!  | |
26.03.20 14:30 | 
 
  | 
  | |
26.03.20 16:30 | 
 
 Starpprocesu komunikācija. Klienta un servera arhitektūra. Iteratīvie un paralēlie serveri. Sockets. Komunikācija starp nesaistītiem procesiem. Kursa projekta diskusija. Sekojiet kursa Slack kanālam! 
  | 
 Eksāmena projekts: 
 
  | |
01.04.20 08:30 | 
 
 Diskusija par komunikācijas protokolu izstrādi.  | 
||
02.04.20 14:30 | 
 
  | 
  | |
02.04.20 16:30 | 
 
  | 
||
15.04.20 08:30 | 
 
 [PD_KP2] Darbs pie kursa projekta.  | 
  | |
16.04.20 14:30 | 
 
  | 
||
16.04.20 16:30 | 
 
  | 
||
xx.xx.xx xx:xx | 
 
 Pirms eksāmena kodam kopā ar kompilācijas un palaišanas instrukcijām jābūt iesniegtam e-studijās!  | 
  | 
Uzdevumi
Mājas darbi
- MD0: Izlasīt kodēšanas stila dokumentus.
 - MD1: Ģimenes koka ģenerēšanas programma.
 - MD2 - nav uzdots.
 - MD3: Vienādo failu meklēšana direktorijas kokā.
 - MD4: Atmiņas rezervācijas funkciju salīdzināšana.
 - MD5: Atmiņas fragmentācijas algoritmu novērtējums.
 
Eksāmens izpaužas kā kursa projekta aizstāvēšana.
Resursi
Pamācoši vingrinājumi un piemēri
- Failu I/O buferi un sekas: divi raksta, redzam trīs...
 - Aprēķins, cik laika vajag pārkopēt 1 TB pa baitam bez bufera.
 - Paging: piemērs 4K x 4K masīva apstaigāšanai, mainot indeksus: 4K vs 16M page faults
 
Literatūra
- Advanced Programming in the UNIX(R) Environment, Second Edition, by W. Richard Stevens, Stephen A. Rago. Addison Wesley Professional, 2005, ISBN 0-201-43307-9. (Indiešu eksemplāram ir ISBN 81-317-0005-4)
 
- "Linux system programming" by Robert Love, O'Reilly Media, 2007, ISBN 0596009585
 
- Advanced Linux Programming by CodeSourcery LLC,
 
- "Building Embedded Linux Systems" O'Reilly Media, 2008, ISBN 0596529686
 
- Sublime_Text_cheat_sheet - Lieliskā Sublime teksta redaktora taustiņu kombinācijas
 
- To become a good programmer... - C grāmatu saraksts
 
Programmētāja resursi
- Noderīgas Linux komandas
 - Bash by Example @ibm/developerworks
 - Intro to Linux kernel
 
- Programming in C: A Tutorial (by Brian W. Kernighan)
 - GCC and make - par gcc kompilatoru no NTU
 - Gnu make dokumentācija
 - Tipiskas unix direktoriju hierarhijas īss apraksts.
 
- Sockets:
- Programming IP Sockets on Linux (tutorial @ gnosis.cx)
 - Sockets Tutorial @ Linux Howtos
 - Berkeley sockets (Wikipēdija)
 
 
- http://www.hiraeth.com/alan/tutorials/courses/unixprog.html
 - http://lkml.org/
 - The Linux Kernel Module Programming Guide
 
Programmēšanas analīzes rīki
- PMD - scans source code and looks for bugs, dead code, suboptimal code, overcomplicated expressions, duplicate code.
 
Linux veiktspējas analīze
- Top 20 Linux monitoring tools @cyberciti
 - 20 rīki Linux veikstpējas monitoringam (IPTraf u.c.) @tecmint
 - CPU analīze
 - Disku I/O analīze
 - IO profiling at Linux programming blog
 - Tīkla analīze
 - "bashtop" rīks veiktspējas analīzei
 
Āķīgi uzdevumi un pieredze
- C/C++ Tricky Programs
 - Computers are exact, precise, and logical machines, until they aren’t.
 - Advent of Code
 
Atziņas
- Teach yourself programming in 10 years by Peter Norvig
 - Code review: Learn how NASA codes (blog), and Mars Code (ACM article)
 - Things Every Hacker Once Knew
 - Kāpēc CR+LF? - Par to kāpēc vēsturisku iemeslu dēļ Windows sistēmās teksta rindas beigās ir CR+LF, kamēr Unix sistēmā tikai LF
 - Linux Timeline - Linux distributīvu vēstures diagramma.