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