System Programming Lab, Spring 2014-2015
BGU Computer Science Department
Syllabus and Requirements
The Lab will be based on a LINUX platform, and use the C programming language.
The emphasis is on low-level programming. Goals of this lab are to introduce
issues in low level programming, as well as techniques on how
to learn needed information on demand.
The following topics will be covered via hands-on experience during
this course:
- Low level programming in C. This includes all sorts of "tricks"
that emphasise the power of low-level computing, as an aid to
understanding computing systems in depth:
- Pointers to functions and their applications.
- Binary files of various types: structure and processing.
- Maintaining data structures in files (e.g. Linux directories).
- Object and executable files (demonstrated through ELF files).
- Linking and Loading, Dynamic Loading.
- Using operating systems services (system calls):
- Process control: creating and terminating processes,
process control, signals. Will be introduced by programming
a simple shell.
- System-level Input/Output: read, write files, file
metadata, sharing files.
- Issues in program developement:
- Debugging programs, and the effect of compound bugs (e.g. various
types of memory leaks, compiler bugs).
- Patching and hacking.
Bibliography
- Linux man pages.
- caspl152 online documentation.
- Computer Systems, a programmer's perspective.
R.E. Bryant and D. O'Hallaron
Chapters 7, 8, 9, 11
Prentice-Hall, 2003.
- Focusing talk material: see material for architecture and SP lab
here.
Course requirements
Attendance of all lecture and lab sessions, and performance of
all lab tasks (including prerequisite reading and task 0).
Reports as required at every lab session.
Grading: Final exam 30% of final grade. The rest (70%) roughly equal between lab sessions.
In addition, must pass final exam and at least 7 labs to get a passing grade in this course.
Prerequisites
A course in systems programming.
Basic knowledge of the C programming language, plus
experience in using a similar programming language (C++, Java), or
significant experience of programming in C.
Back to SPLAB main page
Back to BGU CS HomePage