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

Course Philosophy


Formerly Statement


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

TypeIn ClassOut of Class
Lecture Hours4.08.0
Laboratory Hours1.50.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


  1. Reading from textbook and lecture notes
  2. 6 - 8 programming homework assignments covering the range of Unix/Linux system functions

Methods of Evaluation


  1. 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.
  2. A comprehensive final examination with programming questions on client / server applications on the Unix / Linux system
  3. 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.
Essential College Facilities:
  • Access to a computer running the Unix/Linux operating system

Examples of Primary Texts and References


AuthorTitlePublisherDate/EditionISBN
Ward, BrianHow Linux Works: What Every Superuser Should Know‎ No Starch Press3rd edition, 2021978-1718500402
Billimoria, KaiwanLinux Kernel DebuggingPackt Publishing1st edition, 2022978-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


  1. Examine the Unix / Linux operating systems and environments
    1. UNIX/LINUX evolution and overview
    2. Design philosophies of the UNIX/LINUX system
    3. I/O redirection
    4. C program development cycle
  2. Investigate the Unix/Linux file system
    1. I/O streams
    2. Directory hierarchies and I-nodes
    3. User/group codes and file protection
    4. Metacharacters and regular expression
    5. Hard and soft file links
  3. Implement programs with C language file I/O functions
    1. ASCII sequential
    2. System calls vs. standard I/O package
    3. Binary and random access
    4. File attributes
    5. Links (hard and soft)
    6. File protection
  4. Implement directories and directory hierarchies in programs
    1. Directory structures and primitives
    2. Password file structures and primitives
    3. Function pointers and function arrays
  5. Implement processes and process hierarchies in programs
    1. Foreground/background jobs
    2. Process environments and I/D's
    3. Forking and execL
    4. Wait
  6. Implement interprocess communication
    1. Pipes
    2. Redirection of file descriptors
    3. Signals and signal handlers
    4. Examination of race conditions
    5. Clients, servers and daemons
    6. Use of sockets and Transport Level Interface (TLI)
    7. System V IPC
  7. Investigate and select problem solving tools
    1. Efficiency considerations
    2. Tradeoffs
  8. Investigate and use advanced software development tools
    1. Make utility
    2. SCCS (Source Code Control System)
    3. Symbolic debuggers (dbx)
    4. Archive library utility (ar)

Lab Topics


  1. I/O redirection on the Unix / Linux platform
  2. Unix / Linux file system, including directories and links, and regular expressions
  3. Unix / Linux process control
  4. Directory hierarchies and file I/O functions
  5. Interprocess communications, including signals, interrupts, pipes, sockets
  6. Software development tools and environments such as the make and ar utilities
Back to Top