Syllabus

2110311 Systems Programming

First Semester, 2002

Department of Computer Engineering
Faculty of Engineering
Chulalongkorn University

Course Status

credits: 3
level: undergraduate (3rd year students)
condition: prerequisite 2110212

Course Description

An introductory study in software development techniques and operating systems with an emphasis on programming at the system level using C programming language in the UNIX environment.

Core Topics

system software organization, software utilities, command interpreters, API (application program interface), system calls, library functions, compilation, linking, program execution, process, concurrency, interprocess communication, file processing, network programming

Objectives

At the end of the course the students should be able to

Teachers

Dr. Veera Muangsin (veera.m@chula.ac.th)
Dr. Chai Phongphanphanee (chai.p@chula.ac.th)

Main Texts

References

Text Contents

Practical Unix Programming, Robbins & Robbins

[R-1] Concurrency
[R-2] Programs and Processes
[R-3] Files
[R-5] Signals
[R-7] Cracking Shells
[R-9] POSIX Threads
[R-10] Thread Synchronization
[R-12] Client-Server Communication
[R-14] Remote Procedure Calls
[R-A] UNIX Fundamentals

The Berkeley UNIX Environment, R. Nigel Horspool

[H-1] Getting Started with UNIX
[H-2] C Programming Overview
[H-4] The C Shell
[H-8] Library Functions for Input-Output
[H-9] Additional Library Functions
[H-10] Processes and Signals
[H-12] Communicating Between Processes
[H-13] Developing Large C Programs
[H-15] Debugging & Profiling C Code

Time

Thursday 14.00-17.00

Important Days

First lecture: 6 June
Midterm exam: 25 July (8th week)
Last lecture: 19 September
Final exam: Monday 23 September (17th week) 8.30-11.30

Computer Facilities

A Sun server and PCs in Micro. Sys. Lab and Interface Lab

Grading

Midterm Exam 20%
Final Exam 30%
Assignments 30%
Quiz 10%
Project 10%

Policy on Plagiarism

    All kinds of cheating will be taken seriously.
    For all assignments and projects, the program and report must be your own work.
    You may start with the program code from the text, but the rest must be done by yourself.
    You can study from other documents but copying program code is prohibited.
    Discussion among groups is allowed only if you ask for ideas, not your friend's code or report.
    If you want to share your work, be prepared to share an F.
    To protect honest and hard-working students, cheating will not be tolerated.

    Do what you can and be honest to yourself.
    Allowing your friend to copy your work is not a prove of friendship but offering him or her a tutoring is.

Course Homepage

 pioneer.netserv.chula.ac.th/~mveera/2110311/2002-1/index.html

Schedule

Week Topic Reference
1 (6/6) Introduction, systems programming, UNIX, C, course outline, texts, references, tutorial, assignments, projects, quiz, grading, computer facilities
2 (13/6) UNIX commands and utilities, UNIX file system [H-1]
3 (20/6) UNIX shells [H-4]
4 (27/6) C programming language [H-2]
5 (4/7) C library functions for input-output, files, string, memory allocation, argument handling, etc. [H-8]
[H-9]
6 (11/7) Developing large C programs (compile, make, link, library) [H-13]
[R-A]
7 (18/7) Debugging and profiling C code [H-15]
8 (25/7) --Midterm Exam--
9 (1/8) Processes and Concurrency (program execution, dynamic linking, virtual memory, run-time environment) [R-1]
[R-2] 
[H-10]
10 (8/8) Files and devices [R-3]
11 (15/8) Communicating between processes (interrupt, exception, signal, device drivers, I/O, IPC) [R-5]
[H-12]
12 (22/8) Shells [R-7]
13 (29/8) Threads [R-9]
[R-10]
14 (5/9) Network programming (communication, socket, networking), Client-Server Communication [R-12]
15 (12/9) Remote Procedure Calls [R-14]
16 (19/9)  
17 (23/9) --Final Exam (Monday 23 September 8.30-11.30)--

Note: The schedule may be adjusted during the course.  Some sections of the text may be omitted.