CS255 Systems Programming Lab

Department of Computer Science

University of Crete

Instructor: Angelos Bilas

Semester: Spring 2025

 

 

Course Info                 Syllabus                      Assignments               Policies

 

 

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

- C Reference Card

- Lecture summary slides

- Assignment 1

- Converting FSMs to C

Reading: 

- Assignment 1

- 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

- Assignment 2

Reading: 

- King Ch. 18.2, 19.{1,2}

- Lecture summary slides

 - Tutorial 3:

make-1, 

make-examples, 

gdb-1 

gdb-examples 

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)  

- Assignment 3

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

Assignment 4

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

- Assignment 5

Reading: 

- Bartlett Ch.3

- Bartlett Appendix B

- Lecture summary slides

Easter recess

14/4

Easter recess

21/4

10

28/4 

- x86 stack

- Assignment 5

Reading: 

- Bartlett Ch.4

- Lecture summary slides

 - Concept of buffer overrun attacks

- Assignment 6

Reading: 

- in class discussion of Assignment 6 related issues

11

5/5

 - Assignment 6

Reading: 

- in class discussion of Assignment 6 related issues

 - Assignment 6

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