BAHIR DAR UNIVERSITY
BAHIR DAR INSTITUTE OF TECHNOLOGY
FACULTY OF ELECTRICAL AND COMPUTER ENGINEERING
COMPUTER ENGINEERING PROGRAM
Course Guide Book for System Programming
1. GENERAL INFORMATION OF THE COURSE
Course Name: Operating System and Systems Programming
Course Code: CoEng5141
Course Credits Points: 5 hrs.
Contact Hours: 2 hrs. lecture ,3hrs Tutorial, 3hrs Laboratory per week
Course Module: Software Systems
Course Category: Major
Status of Course: Compulsory
Pre-Requisites: Intermediate Computer Pramming
Students’ Department: Computer Engineering
Degree Program: BSc. In Computer Engineering
Students’ Admission: Regular
Year of Study: 5
Semester: First Semester
Academic Year: 2025/2026
Course Duration: From Sep 2025 to Feb 2025
Teaching & Learning Lecture, Laboratory practice, assignments and exercises
Methods:
Attendance Requirement: A student must attend at least 85 % of classes and 100% laboratory
Course Chair: DBMS and software engineering course chair
Course Instructor: Tegegn Kebebaw, MSc in Computer Engineering
Office: Gion Building, Office no: 302
Consultation: Thursday morning 10:00AM -12:00AM
2. COURSE DESCRIPTION
A computer needs an operating system to manage its resources and provide support for common
functions such as accessing peripherals like keyboard, screen, mouse, printer…. The operating system
also provides useful abstraction such as processes (for multiprogramming), threads (for multitasking),
semaphores (for coordination), scheduling policy and management. System programming refers to
writing code that takes advantage of operating system support for programmers.
This course is designed to introduce you to system programming; by the end of this course you should
be proficient at writing programs that take full advantage of operating system support. To be concrete
we chose the c language running on Linux/UNIX operating system.
Operating System and System Programming, Course Guide Book (2024/2025) 1
3. OBJECTIVES OF THE COURSE
At the end of this course the students will be able to:
1. Understand the basics of operating system, identify the constraints of operating system
design, how operating system manages resources.
2. Understand range of issues in systems programming, concentrating largely but not exclusively
on issues related to operating system component design and implementation.
3. Understand the basic principles in system programming and identify different
tools that are used to develop system programs.
4. Become acquainted with the basic tools used to develop software on the UNIX
platform. Write, compile, debug, and execute C programs that correctly use
system interfaces
5. List UNIX system calls, and invoke them correctly from within C programs.
6. Write, compile, debug, and execute C programs that create, manage and
terminate processes and threads on UNIX.
7. Define concurrency and explain the problems that may arise because of
concurrent execution of multiple processes or threads.
8. Define UNIX signals and signal handlers, and describe their use.
9. Define semaphores, mutexes (), and other synchronization primitives, explain
their purpose, and write, compile, debug, and execute C programs that use UNIX
synchronization primitives.
10. Write, compile, debug, and execute C programs that use files and I/O on UNIX.
11. Describe the protocols (such as TCP and IP) and interfaces (such as sockets) used
for communication among different computers.
4. Course Learning Outcomes (CLO)
No Course Learning Outcomes (CLO) Performance Program
Indicators Student
(PIS) Outcome
(PSO)
1 Gain an understanding of the 1.2, 1.3, 4.1 3, 4
fundamentals of operating systems,
recognize the limitations in operating
system design, and learn how an
operating system manages system
resources
2 Explore the key issues and challenges 5.2, 6.1, 6.2, 1, 2
associated with operating systems, 6.3, 7.1
including the complexities involved in
their design. Understand the
fundamental principles behind the
design and implementation of various
components of an operating system.
3 Gain an understanding of task states, 2.3, 2.4, 2.2 6, 7
the data structures essential for task
management, and the inner workings of
UNIX system software.
4 Understand the concepts of 5.1, 1.4, 1.3 5, 2
concurrency and scheduling, and
Operating System and System Programming, Course Guide Book (2024/2025) 2
demonstrate how they enhance overall
computer performance
5 Understand the concept of memory 2.2, 2.3, 4.2, 2, 6
hierarchy and virtual memory, and 4.3
analyze the cost-performance trade-offs
involved, both in hardware and
software.
6 Understand how to evaluate memory 4.3, 5.1, 6.1 7,6
trade-offs between main memory,
cache, and auxiliary memory,
considering their impact on processor
speed.
7 Be proficient in using the UNIX 3.1, 4.1, 7.1, 3, 2, 1
operating system, including writing, 7.2
compiling, and executing programs
within the UNIX environment.
5. COURSE OUTLINE WITH SCHEDULE METHODLOGY, WEEK AND REFERENCE
Weeks Course Contents Teaching Attaining
Methodology and Student
reference Outcome
1-2 Chapter 1: Basics of Operating System 1,2,4
Introduction Lecture, Discussion,
reading
1.1 Basic operating system components and
Reference: Ref 1
their functions (cha 1)
Ref 2 (cha 2), Ref 3
1.2 Design principles
(cha 1 and 2)
1.3 Operating system Components
Chapter 2: System Programming Overview 1,3,4,
3-5
and running programs on a system Lecture, Discussion,
reading
2.1 System Programming overview
Reference: Ref3
2.2 System software (cha 2, cha 3, cha 6)
2.3 Application vs. System programming
2.4 Operating System
2.5 C language and UNIX
2.6 Running Program on a system
2.7 Program translation
Operating System and System Programming, Course Guide Book (2024/2025) 3
Chapter 3: Concurrency, Scheduling and 6,7
6-8 Dispatch Lecture, Discussion,
reading
3.1 Concurrency
Reference: Ref 4
3.2 Model for concurrent Programming (cha 2
3.3 Program, Process, thread and process Ref 6(1.6)
translation states
3.4 Process Dispatch and Scheduling
3.5 Scheduling algorithms
3.6 Race condition and starvation
3.7 Multithreading and Thread Management
9-10 Chapter 4: Exceptional Control Flow and Lecture, Discussion, 1,6,5
Memory Management reading
Reference: Ref 8
4.1 Exceptional control flow
(cha 4)
4.2 exception handling Ref 7 (cha 4)
4.3 Process and context switching
4.4 Memory management
4.5 Memory Allocation (contiguous and non-
contagious memory allocation)
4.6 Logical and physical memory
4.7 Virtual Memory
4.8 Memory management unit
4.9 Thrashing
11-12 Chapter 5: Storage and Device management Lecture, Discussion, 5,6
reading
5.1 Storage management
5.2 File Structure Reference: Ref 8
5.3 File System Implementation (cha 4)
5.4 File Access Mechanism Ref 7 (cha 4)
5.5 Disk Space allocation
5.6 Free space management
5.7 Device Management
5.8 Device Controllers
5.9 I/O Device characteristics
5.10 Spooling and Device reservation
Chapter 6: Interaction and Communication 2,4,6
13-14
between programs Lecture, Discussion,
reading
5.11 System level I/O
Reference: Ref 7
5.12 Network Programming (cha 1,2,3)
5.13 Inter-process communication (IPC) Ref 1 (cha 2, 4,5,6)
Operating System and System Programming, Course Guide Book (2024/2025) 4
5.14 System performance evaluation
6 LABORATORY/WORKSHOP/ SESSION
Summary of laboratory /Work shop/ session content and required material
No Schedule Laboratory Topic Short Description of Attaining
Laboratory course
outcome
Week 1-3 Unix basic commands introduction and review of 1,3,7
the UNIX operating system,
basic commands that are
used in UNIX shell, File
system security and
permissions, Creating and
executing shell scripts
Week 4 C programming basic Editing, compiling and 1,7
running C programs in UNIX
Week 4-5 Array, String and Pointer fundamental concepts of C 5,6
in C programming programming in UNIX
environment, including: • C
program structures • Basic
statements • Compound
statements • Arrays •
Functions
Week 6 Structure in C fundamental concepts of C 1,5
programming Structure
Week 7 System calls and Process Be able to write C programs
Management to display process and
parent process id.
Be able to write C programs
that create, synchronize
and terminate processes
Week 8 I/O and File management This lab session discusses
the system calls to manage
files and directories under
UNIX/LINUX operating
systems.
Week Network programming UNIX Socket interface 2,3,4
9,10 provides the necessary
system calls and facilities
Operating System and System Programming, Course Guide Book (2024/2025) 5
that enable us to write
programs that make use of
the network and enable
computers to communicate.
We will see how
communication is achieved
between two computers in
the client – server
programming model
Week 11, Concurrent programming examines aspects of threads 1,4,5,7
12, 13 Processes management and multithreading. The
(Thread), Inter Process primary objective of this lab
Communication is to implement the Thread
Management Functions
Week 14 Memory Management Study the memory layout of 1,4,7
a process, heap, stack,
calloc(), malloc (), free ().
7 ASSESSMENT TYPE, WEIGHT AND DURATION
The course includes multiple type of continuous assessment and evaluation methods to ensure the
successful achievement of course learning outcomes.
No Assessment Type Mark Content Coverage Attaining course Time
Allotted learning outcome Schedule
(CLO)
Quiz 5% Chapter 1 1, 2 Weak 2
Assignment 10% Chapter 2 2,3 Weak 4
Mid exam 25% Chapter 1,2 and 3 1,2,3 Weak 7
Lab Assessment 10% Chapter 5 4,5 Weak 10, 11
Final 50% All Chapter 6,7 Weak 15
Total 100%
8 COURSE POLICY
All students are expected to abide by the code of conduct of students (Senate Legislation of Bahir Dar
University, May 2019) throughout this course. Academic dishonesty, including cheating, fabrication, and
plagiarism will not be tolerated and will be reported to the concerned bodies for action.
Operating System and System Programming, Course Guide Book (2024/2025) 6
While team work is highly encouraged, dependence and copying ones work and submitting others work
is considered as serious act of cheating and shall be penalized.
Class teaching methodology will vary day to day, including reading, lectures, discussions, exercises,
presentation etc. Students are expected to be actively participant in the course and ask questions and
raise issues whenever you got confused. And, you are expected to do all the assignments and given tasks
within a given deadline. If you are having problems with the assignments or tests, contact the instructor
as soon as possible.
You are expected to attend class regularly and on time arrival. A student who misses more than 15% of
the semester class is not eligible to sit for final exam. There will be record of attendance at each class.
You are responsible for all class announcements and changes. A student who has missed more than 15%
attendance shall be given a grade of “NG” (No Grade) and be required to provide acceptable reasons
for failure to attend classes according to senate legislation, Art. 164.
If you bring a cell phone to class, make sure that it is absolutely silent and does not disturb any one.
The teaching-learning process shall not be disrupted by any means.
All issues discussed in class or derived from other sources may be the subject of assignment or exam
question items. Please follow the instructions indicated at each content of your course guidebook to
complete all the assignments provided whether they are to be performed individually or in group.
Students are supposed to have full examination records. If a student fails to attend quiz or mid exam
for invalid reason, the result of the student shall be recorded as zero. However, if a student fails to
attend the final exam or to work on term paper/project for invalid reason, the instructor shall record
“NG” according to senate legislation, Art. 161.
9 GRADING SYSTEM
The grading scale of the course is fixed scale according to senate legislation of Art. 167.
10 TEXT AND REFERENCE BOOKS
1. Andrew Tanenbaum (2001) Modern Operating Systems Prentice Hall (2nd edition)
2. System Programming with C and UNIX, Adam Hoover
3. System Software, An introduction to System programming, Leland L. Beck.
4. Bryant and O’Halloran, (2002) Computer Systems: A Programmer's Perspective, Prentice
Hall,
5. Kay Robbins and Steve Robbins, (2003) Unix Systems
6. Andrew Tanenbaum& Albert S Woodhull (2006) Operating Systems Design and
Implementation Prentice Hall (3rd Edition)
7. W. Richard Stevens,Unix Network Programming (interprocess Communications) volume 2
Operating System and System Programming, Course Guide Book (2024/2025) 7
11 APPROVAL
The following bodies confirmed the course guidebook accordingly.
Position Name Signature: Date
Course Instructor Tegegn Kebebaw
Course Chair
Chair Holder Tegegn Kebebaw
Operating System and System Programming, Course Guide Book (2024/2025) 8