DV1457 Programming in UNIX Environment

Programme course, 7,5 Higher education credits, First cycle, autumn semester 2022

This course is part of a programme and cannot be applied.

The aim of the course is to enable students to acquire specialised understanding of UNIX-based systems and for programming close to the operating system. This involves, among other things, being able to program at the most abstract level of the operating system, close to the user, and down through the levels of abstraction to the lowest level, system calls. The course trains students in designing software that interacts with the computer through the operating system UNIX (and operating systems similar to or based on UNIX such as Linux and MacOS). It provides a foundation for continued studies in other fields (such as computer security) demanding a practical understanding of the technology involved. The objective of the course is achieved by the student through gaining practical experience of developing programs in a UNIX environment in a series of laboratory exercises.


  • Type of instruction: On campus, day, part-time 50%
  • Period : 2022-August-29 until 2022-October-30
  • Education level: G2F
  • Application: This course is part of a programme and cannot be applied.
  • Language of instruction: The language of instruction is English.
  • Location: Karlskrona
  • Main field of study: Computer Science
  • Course syllabus: Download
  • Welcome letter: This course is part of a programme and has no welcome letter.
  • Entry requirements: To be admitted, students must have completed courses in Programming, 15 ECTS, Algorithms and Data Structures, 6 ECTS, operating systems, 6ECTS and data alt local networks, 4ECTS.


The course covers the following specific levels of abstraction in UNIX programming in greater detail:
• Commands and scripting language
The scripting language is a way of making what is normally perceived as user interaction automatic, i. e. interactively commanding the computer to load files, sort the contents and print them. Scripting languages (exemplified with Bourne shell) are thus very powerful but also less general than ordinary programming languages.
• Program development in C
C is the mainstay in programming of UNIX applications and major parts of UNIX systems are often written in C. Advanced UNIX programming, such as for the implementation of network services, is often executed in C with the help of system and library calls to the operating system.
• Program development in the assembly language
High-level programming languages such as C are sometimes not sufficiently expressive or include undesired or unnecessary functions that can affect performance. Such cases can make it necessary/ important to communicate “directly” with the computer in its own language, i. e. the assembly language. An important advantage of being able to program close to the machine is an increased understanding of how the computer works.

Learning outcomes

Knowledge and understanding

On completion of the course, the students shall be able to:

  • demonstrate understanding of the main components of the UNIX system and their connections
  • demonstrate basic knowledge of programming in scripting languages
  • demonstrate basic knowledge of the interaction between programs written in C and the operating system in a UNIX environment
  • demonstrate basic knowledge of programming in the assembly language and interaction of software and hardware at the level of the machine

Competence and skills

On completion of the course, the students shall be able to:
  • use the command line interface of the UNIX system
  • write programs with the building blocks of the UNIX programming interface
  • develop programs in C and an assembly language that can be run in a UNIX environment

Judgement and approach
On completion of the course, the students shall be able to:
  • determine the appropriate abstraction level of programming for a specific assignment
  • justify, discuss and assess their own solutions in speech and writing

Course literature and other teaching material

Course literature and other teaching material

Learning methods

The theoretical foundations of the course is presented in lectures and / or exercises. The student is also expected to independently assimilate theoretical knowledge through self study of relevant literature. The theoretical knowledge is applied and deepened in practical laboratory work / project assignments in which topic-related problems should be solved through the implementation of the current system. Each exercise is presented in writing and orally.

Work placement

No work placement is included in the planned learning activities. BTH is aiming for a close contact with the surrounding community when developing courses and programmes.


Time allocation

On average, a student should study 200 hours to reach the learning outcomes.
This time includes all the various available learning activities (lectures, self studies, examinations, etc.).
This estimation is based on the fact that one academic year counts as 60 ECTS credits,
corresponding to an average student workload of 1 600 hours. This may vary individually.


Component examinations for the course
Code Title ECTS credits Grade
1310 Shell script programming 2.5 A-F
1320 UNIX Programming in C 2.5 A-F
1330 Assembly Programming 2.5 A-F


The course will be graded A Excellent, B Very good, C Good, D Satisfactory, E Sufficient, FX Insufficient, supplementation required, F Fail.


More information about exams are found in the Student's Portal, where you also enrolls for most exams.

There might be other scheduled examinations. Information regarding these examinations are available in the learning platform Canvas or at other places that the person who is responsible of the course will refer to.

Course Evaluation

The course manager is responsible for the views of students on the course being systematically and regularly gathered and that the results of the evaluations in various forms affect the form and development of the course.

Do you have a question? Type it here and we will get back to you as soon as possible!