System programming (or systems programming) is the activity of programming, computer system software. The primary distinguishing characteristic of systems programming when compared to application programming is that application programming aims to produce software which provides services to the user directly (e.g. word processor), whereas systems programming aims to produce software and software platforms which provide services to other software, are performance constrained, or both (e.g. operating systems, computational science applications, game engines and AAA video games, industrial automation, and software as a service applications).
System programming requires a great degree of hardware awareness. Its goal is to achieve efficient use of available resources, either because the software itself is performance critical (AAA video games) or because even small efficiency improvements directly transform into significant monetary savings for the service provider (cloud based word processors).
To understand fundamentals of system programming and operating systems.
To study and understand how the system programming and operating system abstractions can be implemented.
To develop comprehensive skills to design Assembler, Macro Processor, Compiler and Interpreters.
To understand the importance of application of linkers, loaders and Software tools in system programming
To Implement System Programming concepts and Operating systems components
To analyze memory allocation methods, input output devices and file system w. r. t. various operating system.
To study and implement various process scheduling techniques and dead lock avoidance schemes in operating system
After successfully completing the course students will be able to:
Demonstrate the knowledge of Systems Programming and Operating Systems
Formulate the Problem and develop the solution for same.
Compare and analyze the different implementation approach of system programming and operating system abstractions.
Interpret various OS functions used in Linux / Ubuntu