BİL214

Systems Programming

Faculty \ Department
School of Engineering \ Computer Engineering
Course Credit
ECTS Credit
Course Type
Instructional Language
4
8
Compulsory
English
Prerequisites
BİL113
Programs that can take the course
Computer Engineering
Artificial Intelligence Engineering
Course Description
This course provides an introduction to programming in Unix environment using the C language. The Unix kernel, Unix shell, file system and basic shell commands. Unix utilities and shell programming. The C programming language (functions, arrays, strings, pointers, dynamic memory allocation, low level operators and bit fields). Unix system calls. Process control, signal handling and interprocess communication.
Textbook and / or References
Required Text:
C How to Program, 6th or 7th Edition, by Deitel and Deitel. Prentice Hall.

Reference Texts:
Linux Pocket Guide, Daniel Barrett. O'Reilly.
Interprocess Communication in Linux, John S. Gray. Prentice Hall.
https://www. tutorialspoint. com/unix/index. htm
Course Objectives
The aim of this course is to teach students programming in Unix environment using the C language.
Course Outcomes
1. Use basic Unix/Linux commands and utilities. Understand Unix/Linux file system basics and manipulate the file system.
2. Understand how shell level programs can perform useful tasks. Write shell scripts.
3. Solve programming tasks in C programming language.
4. Be proficient using C pointers, arrays, strings and file I/O.
5. Be proficient in C structures, dynamic memory allocation.
6. Write programs using system calls for process creation.
7. Know basics of interprocess communication, signaling and signal handling, pipes.
Tentative Course Plan
Week 1: Introduction to Unix/Linux (basic commands, file system, file manipulation, editors)
Week 2: More Linux (wildcards, regular expressions, filters, signals, job control)
Week 3: The shell, environment variables, shell setup files, shell scripts
Week 4: Shell scripts cont’d (variables, conditionals, loops)
Week 5: C Programming: basic data types, console I/O, control structures, functions
Week 6: C Programming: arrays, pointers, pointer arithmetic
Week 7: C Programming: pointers cont’d.
Week 8: C Programming: characters and strings, File I/O
Week 9: C Programming: structures, dynamic memory allocation, C linked lists
Week 10: Library functions and System Calls, Processes, process environment
Week 11: Processes cont’d: fork, exec, wait
Week 12: Signal handling, pipes
Tentative Assesment Methods
• Midterm 35 %
• Final 35 %
• Homeworks 20 %
• Labs 10 %
Program Outcome *
1 2 3 4 5 6 7 8 9 10 11
Course Outcome
1 C A, B C B
2 C, D B A, B C B
3 C, D A, B C B
4 C, D A, B C B
5 C, D A, B C B
6 C, D A, B C B
7 C, D A, B C B