Course Details
Course Information Package
Course Unit Title | SYSTEMS PROGRAMMING | ||||||||
Course Unit Code | ACSC372 | ||||||||
Course Unit Details | BSc Computer Engineering (Required Courses) - BSc Computer Science (Required Courses) - | ||||||||
Number of ECTS credits allocated | 6 | ||||||||
Learning Outcomes of the course unit | By the end of the course, the students should be able to:
| ||||||||
Mode of Delivery | Face-to-face | ||||||||
Prerequisites | ACSC183,ACSC271 | Co-requisites | NONE | ||||||
Recommended optional program components | NONE | ||||||||
Course Contents | UNIX System Overview: UNIX operating system overview. Access to the Resources of a Computer. Basic Elements of the Kernel. System calls. Shell / Shell programming. UNIX history. UNIX for PC. UNIX commands: Elementary and advanced UNIX shell commands. Directories structure, Files and directories manipulation, Files examination, Input/Output streams, Files redirection, Pipes, Access permissions, Regular expressions, Process control. Bash Environment: Introduction to bash shell. Shells evolution. Environment and variables. Shell initialization files. Shell variables. Default global variables. User shell variables. Creating, deleting and exporting variables. Built-in shell commands. Executing shell scripts. Read user input data. Command line arguments. Special characters and quotes. Printing in the shell. Bash Programming: Exit status code. Conditional statement if. Relational operators. File testing. Command line parameters. Logical operators. Arithmetic expressions. The case statement. The while loop and the until loop. Commands break and continue. The for loop. Shell functions. Parameters in functions. Scope of function variables. Initialization and processing of arrays. Advanced Shell Programming: Debugging bash scripts, Catching signals, Pipes and devices, Implementation of pipes with files, Implementation of pipes with two variables, The File descriptor table, Standard in/out/err, Devices, Input/Output redirection. File I/O: Error handling in C. Introduction to files and file system. File types in UNIX. How files are stored (Partitions, i-Nodes, Blocks). Example of finding a file using the i-nodes. File processing operations. Standard I/O vs. System Calls (Low-level I/O). System calls advantages and disadvantages. System calls for I/O. Process Environment & Control: Process Identifiers. Memory layout of a process. Creation of processes (When it is needed, What is not inherited). Environment Variables. Orphan process vs. Zombie process. Processes and files. Waiting of processes. How to avoid zombie processes. Processes and Signals: exec() Functions. System call system(). Signals Handling. Signals and Processes. Asynchronous avoidance of Zombie processes using Signals. System call alarm(). Inter-process signals. System call kill(). Inter-Process Communication: Processes and Files. System calls dup() & dup2(). Inter-Process Communication (IPC) – Introduction. IPC with Pipes. System call pipe(). IPC with Named Pipes (FIFO). FIFOs in the shell. FIFOs in C. Pipes vs. FIFO. Socket Programming: Socket definition. Ports. Port numbers assignment. Socket domain families. Socket types. Client/Server TCP connection. Basic server functions. Basic client functions. Byte-order transformations. Socket descriptors. Socket creation. Socket address formats, Associating addresses with sockets. Listening to incoming connection requests. Accepting incoming connection requests. Connection establishment. Data transfer. Closing the connection. IP address conversions. More miscellaneous functions. Client/Server Example. Laboratory Work: Familiarise students with the development of system-level software in the C programming language, while providing an understanding of the UNIX operating system. Perform various important tasks using UNIX commands and formulate shell scripts using structured shell programming. | ||||||||
Recommended and/or required reading: | |||||||||
Textbooks |
| ||||||||
References |
| ||||||||
Planned learning activities and teaching methods | Students are taught the course through lectures by means of computer presentations. Laboratory work and homework consist of practical problems aiming to help students familiarising with the development of system-level software in the C programming language, while providing an understanding of the UNIX operating system. Further students perform various important tasks using UNIX commands and formulate shell scripts using structured shell programming. Lecture/Laboratory notes and presentations are available through the web for students to use in combination with the textbooks. | ||||||||
Assessment methods and criteria |
| ||||||||
Language of instruction | English | ||||||||
Work placement(s) | NO |