CS255 Systems Programming Lab
Department of Computer Science
University of Crete
Instructor: Angelos Bilas
Semester: Spring 2025
Syllabus
Semester Week # |
Week Start |
Mon (Lecture 1) 10:00-12:00 Amph.B |
Wed (Lecture 2) 10:00-12:00 Amph.B |
Fri (Backup) 10:00-12:00 Amph.B |
1 |
10/2 |
- Introduction - Review of basic C language - I/O in C Reading: - King Ch.1-6, 7.{1-3}, 8, 9.1, 16, 22.{1,3,4} - The C Library Reference Guide, Eric Huss, 1997 - Lecture summary slides |
- Converting FSMs to C Reading: - Lecture summary slides |
- Tutorial 1 – Basics: git-1 , git-1-video |
2 |
17/2 |
- Pointers, arrays, strings Reading: - King Ch. 11, 12, 13 - Lecture summary slides |
- C declarations Reading: - King 18.{1,3,4,5} - Lecture summary slides |
- Tutorial 2 - Editing: vim_bash , vim-2 , vim_tutorial, emacs-2, emacs_tutorial, emacs configuration |
3 |
24/2 |
- Program building process - C pre-processor (cpp) Reading: - King Ch. 14 - Bryant Ch. 7.1 - Lecture summary slides |
- Modules Reading: - King Ch. 18.2, 19.{1,2} - Lecture summary slides |
- Tutorial 3: |
4 |
3/3 |
Public Holiday (Καθαρή Δευτέρα) |
- Writing large programs - Makefiles Reading: - King Ch. 10, 15, 18.2 - Lecture summary slides |
- Tutorial 4: make-2, make-2-examples, clang-format, clang-examples |
5 |
10/3 |
- Dynamic memory Reading: - King Ch. 17 - Lecture summary slides |
- Tutorial 5: git-2 & lint-sanitizers, lint-sanitizers files |
- Abstract data types (ATDs) Reading: - King Ch. 19.{3,4,5} - Lecture summary slides |
6 |
17/3 |
- Type conversions - Polymorphism Reading: - King 7.4 - Lecture summary slides |
- Memory allocators - How malloc/free works Reading: - Bryant Ch. 9.{9, 11} - Lecture summary slides |
|
7 midterm Week
|
Πρόοδος: Σάββατο, 22/3/2025, 10:00-12:00 |
- Stack, recursion - Sudoku Reading: - King 9.6, 26.2 (rand/srand) - Lecture summary slides |
||
8 |
31/3 |
- Sudoku, recursion Reading: - Discussion of Assignment 4 - Lecture summary slides |
- Checking program conditions - Assertions Reading: - King Ch. 24.{1,2} - Lecture summary slides |
- Tutorial 6: gdb-2gdb-2_files |
9 |
7/4 |
- Debugging - Debugging is not about debuggers - How debuggers work Reading: - Bartlett Appendix F - GDB Internals: Breakpoint handling - Lecture summary slides |
- x86 assembly Reading: - Bartlett Ch.3 - Bartlett Appendix B - Lecture summary slides |
|
Easter recess |
14/4 |
|||
Easter recess |
21/4 |
|||
10 |
28/4 |
- x86 stack Reading: - Bartlett Ch.4 - Lecture summary slides |
- Concept of buffer overrun attacks Reading: - in class discussion of Assignment 6 related issues |
|
11 |
5/5 |
Reading: - in class discussion of Assignment 6 related issues |
Reading: - in class discussion of Assignment 6 related issues |
- Tutorial 7: Profiling - slides, Examples |
12 |
12/5 |
- Linking/loading Reading: - (static) Bryant Ch. 7.{2,3,4,5,6,7,8,9} - (dynamic) Bryant Ch. 7.{10,11,12,13} - (tools) Bryant Ch. 7.14 - Lecture summary slides |
- Error handling - Exceptions Reading: - King 24.{3,4} - Lecture summary slides |
|
13 |
19/5 |
- Measuring performance - Sample profiling Reading: - Bryant Ch. 5.14 - Bartlett Ch.12 - Lecture summary slides
or
- Code reviews - Coding style - Comments Reading: - Skinner: C Style and Coding Standards [pdf] - Lecture summary slides |
(optional) - Concurrency and Threads - Application – OS interface Reading: - Bryant Ch. 12.{1,2,3}
- The power of ten Reading: - Gerard J. Holzmann. The power of 10: Rules for Developing Safety-Critical Code |
|
Reading Week |
26/5 |
|||
Final Exam (1st Period) |
TBD |
- Οδηγίες διεξαγωγής εξέτασης |
||
Final Exam (2nd Period) |
TBD |
- Οδηγίες διεξαγωγής εξέτασης |
||
Last Modified: 01-Feb-2024 14:36