Print Version

Effective: Winter 2014

Advisory: Advisory: C S 30A and 30B.
Grade Type: Letter Grade, the student may select Pass/No Pass
Not Repeatable.
FHGE: Non-GE Transferable: CSU/UC
4 hours lecture, 3 hours laboratory. (84 hours total per quarter)

Student Learning Outcomes -
  • A successful student will be able to manage and repair the many aspects of the operating system including networking, file sharing, accounting, logging, printing and disk file system.
  • A successful student will be able to configure an OS and be capable of planning for the routine maintenance of the system's many components.
Description -
Introduction to basic system administration of Linux and UNIX systems. Overview of basic PC hardware, system boot process, administration utilities, and management of user accounts, file systems, basic networking, printing, security, accounting and logging. Software install and removal using source code and package managers. Kernel updating and boot managers

Course Objectives -
The student will be able to:
  1. understand and discuss basic system administration responsibilities
  2. understand basic PC hardware and setup with respect to administration
  3. understand and explain the system boot process
  4. use various system administration utilities
  5. setup and manage user accounts and groups
  6. perform file system setup, maintenance, check/repair, mounting, and backup/restore
  7. configure basic networking
  8. load and unload dynamic kernel drivers
  9. understand basic security issues, setup and procedures
  10. understand basic accounting and log files
  11. setup and manage basic print services
  12. understand basic Linux and UNIX installation and configuration
Special Facilities and/or Equipment -
  1. Access to a computer laboratory Unix or Linux operating systems.
  2. A website or course management system with an assignment posting component (through which all lab assignments are to be submitted) and a forum component (where students can discuss course material and receive help from the instructor). This applies to all sections, including on-campus (i.e., face-to-face) offerings.
  3. When taught via Foothill Global Access on the Internet, the college will provide a fully functional and maintained course management system through which the instructor and students can interact.
  4. When taught via Foothill Global Access on the Internet, students must have currently existing e-mail accounts and ongoing access to computers with internet capabilities.

Course Content (Body of knowledge) -
  1. Overview of systems administration
    1. Roles (service provider vs. corporate cop)
    2. Regular operations
    3. Hardware and software management
    4. Planning and administration
    5. System monitoring
  2. Overview of Linux and UNIX
    1. Shells
    2. The kernel
    3. Files
    4. Processes
    5. Devices
  3. Hardware overview
    1. PCI
    2. Disk controllers (IDE/SCSI)
    3. Serial ports
    4. USB
    5. BIOS
  4. Startup and Shutdown
    1. Boot loaders
    2. The UNIX boot process
    3. Initialization files and startup scripts
    4. Single vs. multi-user
    5. Shutting down a Unix system
    6. System crashes
  5. The Root Account (superuser)
    1. Overview of root and its privileges
    2. Responsibilities
    3. Security issues
    4. Useful commands (su, sudo)
  6. Managing processes and understanding signals
    1. Fork, exec & threads
    2. Parent and child processes
    3. Process ids and information
    4. Commands for managing processes
    5. Common system daemons
    6. Cron and crontabs
  7. Managing Filesystems
    1. File types
    2. Disk I/O performance issues
    3. Formatting and partitions
    4. Mounting and un-mounting file systems
    5. Sharing system files - rdist, rsync
  8. Managing Software
    1. Acquiring source or packages
    2. Package managers
    3. Source code configuration, building, and installation
    4. Using ldconfig/ldd vs. static libraries
  9. Managing kernels
    1. Acquiring new kernels
    2. Patching kernel source code
    3. Managing modules
    4. Building kernel images
    5. Kernel installation
    6. Managing the boot loader
  10. Managing Users and Groups
    1. Unix users and groups
    2. Managing user accounts
    3. Enabling disk quotas
    4. Editing user information files
    5. Administrative tools
  11. Backup and Restore
    1. Commands to backup and restore
    2. Backup policies
    3. Backup procedures
    4. Backup devices
    5. Recovering from system disaster
    6. Repairing a damaged filesystem
    7. Restoring from boot disk or backup tapes
  12. Configuring Printers and Print Spoolers
    1. Components of the print system
    2. Printer types
    3. Printer protocols
    4. Printing utilities: BSD and System V
    5. Other printing software
  13. Managing Network Services
    1. Networking hardware
    2. Setup TCP/IP networking
    3. Basic TCP/IP administrative commands
    4. Networking devices and drivers
    5. Configuration files
    6. Other useful network utilities
  14. System Monitoring and Accounting
    1. BSD-style accounting files
    2. Printing accounting
    3. Monitoring and managing disk space usage
    4. Monitoring memory usage
  15. Security
    1. Security overview
    2. Protecting files and the file system
    3. Role-based access control
    4. Network security
    5. Hardening Unix and Linux systems
    6. Detecting problems
    7. Repeatability - Moved to header area.
Methods of Evaluation -
  1. Examinations (quizzes, mid-term)
  2. Homework assignments, projects, and hands-on exercises
  3. Laboratory skill demonstrations
  4. Comprehensive final examination
Representative Text(s) -
Nemath, et. al., UNIX and Linux System Administration Handbook ,4th Edition, Pearson 2011.
Shah, Steve and Soyinka Steve, Linux Administration, a Beginner's Guide, Fourth Edition, McGraw Hill/Osborne, 2005. ISBN 0072262591

Disciplines -
Computer Science
Method of Instruction -
  1. Lectures which include motivation for syntax and use of the Unix Operating System shell programming, example programs, and analysis of these programs.
  2. On-line labs (for all sections, including those meeting face-to-face/on campus) consisting of
    1. A programming assignment web-page located on a college-hosted course management system or other department-approved Internet environment. Here, the students will review the specification of each programming assignment and submit their completed lab work.
    2. A discussion web-page located on a college hosted course management system or other department-approved Internet environment. Here, students can request assistance from the instructor and interact publicly with other class members.
  3. Detailed review of written assignments which includes model solutions and specific comments on the student submissions.
  4. In person or on-line discussion which engages students and instructor in an ongoing dialog pertaining to all aspects of designing, implementing and analyzing programs.
  5. When course is taught fully on-line:
    1. Instructor-authored lecture materials, handouts, syllabus, assignments, tests, and other relevant course material will be delivered through a college hosted course management system or other department-approved Internet environment.
    2. Additional instructional guidelines for this course are listed in the attached addendum of CS department on-line practices.
Lab Content -
  1. Familiarization with the beginning-level online lab environment
    1. Modify and customize the settings of an Integrated Development Environment (IDE).
    2. Use the IDE to create a new programming project.
    3. Organize projects within an IDE to make submitting labs and switching project environments an orderly process.
    4. Gain experience with the steps needed to edit a simple program.
    5. Modify IDE settings to produce an industry standard code style.
  2. Finding and fixing errors in simple programs
    1. Demonstrate the complete edit-compile-run cycle of a simple program using IDE or command-line environment.
    2. Distinguish between compiler/syntax errors and logic errors.
    3. Develop strategies for dealing with each type of error.
    4. Debug code to produce a working program.
  3. Exploring the different data types using the compiler/IDE
    1. Gain experience in effectively using the IDE to create code with C# value types.
    2. Gain experience in effectively using the IDE to create code with C# reference types.
    3. Use the IDE to assist in defining and using compound data types.
    4. Solve syntax and logic problems that arise from typical incorrect formulation of data types.
  4. Demonstrating user interaction (I/O) through the IDE's console or GUI capabilities
    1. Play the role of user and programmer, alternately, to establish a user-interaction plan for a program.
    2. Evaluate and comment on other students' user-interaction plan.
    3. Change modes from source code design (editing mode) to end-user interaction (run mode) in your IDE in order to perform Q/A on the program.
    4. Fix poor interaction behavior by adjusting source code and rerunning program until a satisfactory result is achieved.
  5. Building a program that demonstrates “intelligence” though a combination of control statements
    1. Become familiar with selection, loop and nesting to imbue a program with correct logic behavior.
    2. Use structured programming to make control structures maintainable.
    3. Run the program multiple times to verify that its control statements produce the correct behavior or output under any scenario.
    4. Fix incorrect logic behavior by adjusting control structures and rerunning program until a satisfactory result is achieved.
  6. Incorporating functions and class methods in programming projects
    1. Gain experience in writing a function/method.
    2. Use a previously written function or method in a client program.
    3. Refine methods/functions by adding or changing their definitions and observe the result.
    4. Deduce the impact of a function's or method's design on the programs that invoke it.
  7. Building a program around object-oriented techniques
    1. Use previously written classes to instantiate objects in program.
    2. Use the IDE to assist in the creation of a programmer-defined class.
    3. Demonstrate the correct choice of class members and methods for each class used.
    4. Use the IDEs class view and object browser tools to navigate from one class to another within a program.
  8. Exploring Arrays
    1. Understand the proper use of Arrays.
    2. Incorporate an array into a program to facilitate the solution of an assigned problem.
    3. Investigate use of variable indices and loops to shorten and clarify the logic in programs.
    4. Use debugging techniques to solve problems that arise during the testing of a program.
  9. Devising and utilizing algorithms
    1. Write a program that uses a combination of techniques such as looping, arrays, logic and user I/O, all encapsulated in a coherent algorithm.
    2. Test the algorithm by running the program multiple times giving it different initial values or inputs.
    3. Implement a sorting or simple searching algorithm using arrays.
Transcribe an abstract algorithm into a concrete program that is written and tested using the IDE and submitted online for evaluation.
Types and/or Examples of Required Reading, Writing and Outside of Class Assignments -
  1. Reading
    1. Textbook assigned reading averaging 30 pages per week.
    2. Reading the supplied handouts and modules averaging 10 pages per week.
    3. Reading on-line resources as directed by instructor though links pertinent to programming.
    4. Reading library and reference material directed by instructor through course handouts.
  2. Writing
    1. Writing technical prose documentation that supports and describes the programs that are submitted for grades.