Chabot College Fall 2002 Removed Fall 2006

advertisement
Chabot College
Fall 2002
Removed Fall 2006
Course Outline for Computer Science 18C
LINUX SYSTEMS PROGRAMMING II
Catalog Description:
18C - Linux Systems Programming II
2 units
Continuation of Computer Science 18B. Advanced Linux file handling, inter-process
communication, resource sharing, libraries, daemons and shells. Properties of files under Linux:
permissions, ownership, access rights, stream vs. block-special files, devices. Accessing
directory tree and file information. The ANSI C standard file access library and the Linux file
access library. Concepts of shells: executing commands, pipelines, I/O redirection, and tees.
Prerequisite: Computer Science 18B (completed with a grade of C or higher). Strongly
recommended: Computer Science 15 or Computer Science 19A (may be taken concurrently). 1.5
hours lecture, 1.5 hours laboratory.
Prerequisite Skills:
Before entering the course the student should be able to:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
explain the steps in the software engineering lifecycle;
use accepted design methods (structure charts, pseudocode, simple class diagrams) to
develop and code several (six-ten) programs of intermediate difficulty and length in the
C++ language, including programs broken into several files;
adhere to style and documentation standards in writing programs;
use system debuggers to step into and over code, set breakpoints and watch variables;
identify what makes a good test data suite and use it to thoroughly test a program under
development;
write C++ overloaded functions, simple recursive functions, function templates;
define, initialize, dereference and manipulate pointers;
manipulate arrays using pointer notation;
define, design and use simple C++ classes, including at least one project that uses a
class inheritance hierarchy;
manipulate both standard C-strings using the cstring library and string objects using the
ANSI string library;
overload C++ operators both as member functions and friend functions;
define and use virtual member functions to implement polymorphic behavior;
identify bitwise, unary and binary scope resolution, and conditional operators;
use the new and delete operators to implement a singly linked list.Chabot College.
Expected Outcomes for Students:
Upon completion of the course the student should be able to:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
identify the differences between Linux operating system file services and the C file library;
use Linux services to provide file access in small C programs;
identify the major types of Linux resources that can be accessed as files: regular files,
named and unnamed pipes, directories, devices, symbolic links and sockets;
use any of these (except sockets) in a C program on Linux;
identify, use, and set owner, group and other permissions on a file or directory;
use Linux file access functions: creat, unlink, open, close, read, write, seek, and ioctl;
move around in a directory tree, and create or remove directories;
implement multiplexed file access using fd_set and select;
lock and unlock files and records;
manage memory-mapped files;
write a simple Linux shell that executes commands, creates pipelines, does I/O redirection,
and implements a tee correctly;
create and use a library;
create and use a daemon.
Chabot College
Course Outline for Computer Science 18C
Fall 2002
Page 2
Course Content:
1.
2.
3.
4.
Advanced Linux file handling
a.
Changing file timestamps
b.
ext2 file system
c.
handling directories
d.
I/O multiplexing with fd_set and select()
e.
Memory-mapped files
f.
File and record locking
Daemons
a.
Characteristics of daemons, example daemons
b.
How to create a daemon and handle errors in a daemon
Creating and using libraries
a.
Linux library tools
b.
Creating and using static, shared, and dynamically-linked libraries
Interprocess Communication (IPC)
a.
Pipes and FIFOs
b.
Shared memory
c.
Semaphores
d.
Message queues
e.
Optional - brief overview of sockets (will cover in detail in CSCI-18D and CSCI-18E)
f.
How to "put it all together" in a simple shell (final project is to write one)
Methods of Presentation:
1.
2.
Lecture
In-class example programs with explanations and demonstrations
Assignments and Methods of Evaluating Student Progress:
1.
Typical Assignments
a.
Programming homework illustrating main points from lectures
b.
Non-programming homework to reinforce concepts from lecture and reading
2.
Methods of Evaluating Student Progress
a.
Midterm exam
b.
Short quizzes
c.
Final exam
Textbook(s) (Typical):
Linux Programming by Example, Kurt Wall, Que Corporation, 2000
Special Student Materials:
Computer lab fee
Diskettes
Optional zip disk
Revised: July 2001
Keith Mehl
Hps
CS 18C Outline Fall 2002
Download