Active Outline
General Information
- Course ID (CB01A and CB01B)
- CIS D013.
- Course Title (CB02)
- Unix/Linux Systems Programming
- Course Credit Status
- Credit - Degree Applicable
- Effective Term
- Fall 2024
- Course Description
- This course covers systems programming in the Unix/Linux/Posix environments, with emphasis on low-level Unix/Linux/Posix system calls from C programs and Shell scripts. The course also discusses the differences in major Unix/Linux/Posix environments.
- Faculty Requirements
- Discipline 1
- [Computer Science]
- FSA
- [FHDA FSA - COMPUTER SCIENCE]
- Course Family
- Not Applicable
Course Justification
This course is CSU and UC transferable. It is part of the Liberal Arts (Business and Computer Information Systems Emphasis) Associate in Arts degree. It provides practical and in-depth knowledge about the programming interface to the Unix/Linux kernel and the Unix/Linux interprocess communication, which are essential skills for Unix system programmers.
Foothill Equivalency
- Does the course have a Foothill equivalent?
- No
- Foothill Course ID
Formerly Statement
Course Development Options
- Basic Skill Status (CB08)
- Course is not a basic skills course.
- Grade Options
- Letter Grade
- Pass/No Pass
- Repeat Limit
- 0
Transferability & Gen. Ed. Options
- Transferability
- Transferable to both UC and CSU
Units and Hours
Summary
- Minimum Credit Units
- 4.5
- Maximum Credit Units
- 4.5
Weekly Student Hours
Type | In Class | Out of Class |
---|---|---|
Lecture Hours | 4.0 | 8.0 |
Laboratory Hours | 1.5 | 0.0 |
Course Student Hours
- Course Duration (Weeks)
- 12.0
- Hours per unit divisor
- 36.0
Course In-Class (Contact) Hours
- Lecture
- 48.0
- Laboratory
- 18.0
- Total
- 66.0
Course Out-of-Class Hours
- Lecture
- 96.0
- Laboratory
- 0.0
- NA
- 0.0
- Total
- 96.0
Prerequisite(s)
CIS D018A and CIS D026B (or CIS D26BH)
Corequisite(s)
Advisory(ies)
Limitation(s) on Enrollment
Entrance Skill(s)
General Course Statement(s)
Methods of Instruction
Lecture and visual aids
Discussion of assigned reading
Discussion and problem solving performed in class
Quiz and examination review performed in class
Homework and extended projects
Laboratory discussion sessions and quizzes that evaluate the proceedings weekly laboratory exercises
Collaborative learning and small group exercises
Assignments
- Reading from textbook and lecture notes
- 6 - 8 programming homework assignments covering the range of Unix/Linux system functions
Methods of Evaluation
- At least one midterm examination that covers reading/writing programs. Answers will be evaluated for completeness and correctness, and for code writing, additional evaluation will be on efficiency and effective use of programming constructs.
- A comprehensive final examination with programming questions on client / server applications on the Unix / Linux system
- Evaluation of programming assignments for completeness and correctness of C code and Unix / Linux system functions
Essential Student Materials/Essential College Facilities
Essential Student Materials:Â
- None.
- Access to a computer running the Unix/Linux operating system
Examples of Primary Texts and References
Author | Title | Publisher | Date/Edition | ISBN |
---|---|---|---|---|
Ward, Brian | How Linux Works: What Every Superuser Should Know | ‎ No Starch Press | 3rd edition, 2021 | 978-1718500402 |
Billimoria, Kaiwan | Linux Kernel Debugging | Packt Publishing | 1st edition, 2022 | 978-1801075039 |
Examples of Supporting Texts and References
None.
Learning Outcomes and Objectives
Course Objectives
- Examine the Unix / Linux operating systems and environments
- Investigate the Unix/Linux file system
- Implement programs with C language file I/O functions
- Implement directories and directory hierarchies in programs
- Implement processes and process hierarchies in programs
- Implement interprocess communication
- Investigate and select problem solving tools
- Investigate and use advanced software development tools
CSLOs
- Design, code, document, analyze, debug, and test client/server application programs for network communications.
Outline
- Examine the Unix / Linux operating systems and environments
- UNIX/LINUX evolution and overview
- Design philosophies of the UNIX/LINUX system
- I/O redirection
- C program development cycle
- Investigate the Unix/Linux file system
- I/O streams
- Directory hierarchies and I-nodes
- User/group codes and file protection
- Metacharacters and regular expression
- Hard and soft file links
- Implement programs with C language file I/O functions
- ASCII sequential
- System calls vs. standard I/O package
- Binary and random access
- File attributes
- Links (hard and soft)
- File protection
- Implement directories and directory hierarchies in programs
- Directory structures and primitives
- Password file structures and primitives
- Function pointers and function arrays
- Implement processes and process hierarchies in programs
- Foreground/background jobs
- Process environments and I/D's
- Forking and execL
- Wait
- Implement interprocess communication
- Pipes
- Redirection of file descriptors
- Signals and signal handlers
- Examination of race conditions
- Clients, servers and daemons
- Use of sockets and Transport Level Interface (TLI)
- System V IPC
- Investigate and select problem solving tools
- Efficiency considerations
- Tradeoffs
- Investigate and use advanced software development tools
- Make utility
- SCCS (Source Code Control System)
- Symbolic debuggers (dbx)
- Archive library utility (ar)
Lab Topics
- I/O redirection on the Unix / Linux platform
- Unix / Linux file system, including directories and links, and regular expressions
- Unix / Linux process control
- Directory hierarchies and file I/O functions
- Interprocess communications, including signals, interrupts, pipes, sockets
- Software development tools and environments such as the make and ar utilities