Academic Catalog

C S 30A: INTRODUCTION TO LINUX

Foothill College Course Outline of Record

Foothill College Course Outline of Record
Heading Value
Effective Term: Summer 2023
Units: 4.5
Hours: 4 lecture, 2 laboratory per week (72 total per quarter)
Degree & Credit Status: Degree-Applicable Credit Course
Foothill GE: Non-GE
Transferable: CSU/UC
Grade Type: Letter Grade (Request for Pass/No Pass)
Repeatability: Not Repeatable

Student Learning Outcomes

  • A successful student will be able to describe the various aspects of the Unix operating system from a user and administrator perspective.
  • A successful student will be able to perform basic sysadmin tasks, write simple shell scripts, make changes to the OS file system and use regular expressions for searching the file system.

Description

Introduction to the Linux operating system primarily focused on command line usage. Covers the history, kernel, file systems, shells, and user utilities. Also introduces students to the fundamentals of shell programming, processes, communications, and basic security.

Course Objectives

The student will be able to:

  1. Describe the basic features of the Linux operating system
  2. Understand the history and philosophy of Linux systems and standards
  3. Discuss the various components of Linux
  4. Describe the Linux kernel and its subsystems
  5. Create a user account, log on, and get information using commands on a Linux system
  6. Compare Linux shell types and use variables in the shell environment
  7. Understand a basic shell script and demonstrate the understanding of the shell through the use of an alias and built in commands
  8. Use the man pages effectively and show proficiency in using the command line
  9. Display, count, sort, and compare files using filter commands
  10. Discuss the Linux files system concepts and organization
  11. Perform directory and file operations, including changing permissions, creation, deletion, moving, and renaming
  12. Demonstrate an understanding of user and system processes and basic process operations
  13. Use regular expressions to effectively describe desired search patterns
  14. Write code to redirect input and output to and from the user, files, and commands, using redirection and pipe
  15. Connect to remote computers and transfer files using Linux commands
  16. Create and edit text files in a Linux text editor to illustrate knowledge of the text editor functions and commands

Course Content

  1. Overview
    1. Brief overview of operating systems
    2. Overview and features of Linux
    3. Pros and cons of Linux
  2. History and philosophy
    1. Original and current philosophies
    2. Origin and history of Linux systems and their derivatives
    3. Overview of Linux standards
  3. Components of Linux
    1. Kernel
    2. Shells
    3. Utilities
    4. Shell command line vs. GUI
  4. The kernel and its subsystems
    1. System call interface, file subsystem, I/O and device subsystem
    2. Process control: scheduler, time slicing
    3. Memory management: paging vs. swapping
  5. Getting started with Linux
    1. How to log in and log out
    2. User accounts
    3. The superuser
    4. Account settings and configuration
    5. Commands for getting information
    6. Stopping a program
  6. Introduction to Linux shells
    1. Function of shells
    2. Comparison of Linux shell types
    3. Shell environment
    4. Shell variables and environment variables
    5. Using variables
  7. More about the shell
    1. Meta-characters
    2. Quoting and escaping
    3. Built in and external commands
    4. Search path
    5. Aliases
    6. Basic shell programming functions
  8. Overview of commands
    1. Understanding man pages
    2. Command line syntax
    3. Arguments and options
    4. Command line history
    5. Command line completion
    6. Command line editing
  9. Filter commands
    1. Displaying files
    2. Comparing files
    3. Counting lines, words, and characters
    4. Sorting data
    5. Selecting lines
  10. The Linux filesystem
    1. Overview of files
    2. Inode concepts
    3. Hardware and processes as file abstractions
    4. Modern Linux filesystem types
    5. Hierarchical organization of filesystems
    6. Directory organization
  11. Working with directories and files
    1. Absolute and relative pathnames
    2. Working directory
    3. Moving about in the filesystem
    4. Basic directory operations
    5. Basic file operations
    6. Permissions
    7. Links
    8. Finding files
  12. Processes
    1. Kernel management of processes
    2. System processes vs. user processes
    3. Foreground vs. background processes
    4. Displaying process information
    5. Suspending and killing processes
  13. Regular expressions
    1. Introduction to regular expressions
    2. Matching lines, words, and characters
    3. Character classes
    4. Operators
    5. Introduction to sed and awk
  14. Input and output
    1. Standard input
    2. Standard output and standard error
    3. Redirection
    4. Pipes
    5. File descriptors
  15. Communications
    1. Introduction to basic utilities
    2. Connecting to remote computers
    3. Transferring files
  16. Text editors
    1. Comparison of Linux text editors
    2. Text editor basics
    3. How to create, open, and save a file
    4. Editing a text file

Lab Content

  1. Getting started with Linux
    1. Create a new user account with user id and password
    2. Enter commands, such as whois, which, and whereis, to get basic information
    3. Run and stop programs from the command line
    4. Alter user account settings
  2. Using basic commands
    1. Demonstrate the use of commands to display, compare, count, sort, and select files and text
    2. Use a text editor to incorporate commands into small scripts
    3. Explore the Linux man pages to gain information on command purpose and use
    4. Demonstrate the use of command options to alter the behavior of commands
  3. Exploring various environment and shell variables in the Linux operating system
    1. Develop understanding of the numeric and string variable types as well as allowed operations on each
    2. Gain experience in effectively using the text editor to edit system files
    3. Use the text editor and command line to alter the value assigned to certain shell and environment variables
    4. Deduce the effect working with shell and environment variables has on the shell environment
  4. Mastering the command line
    1. Explore command line syntax through reading man pages and trial and error
    2. Interact with utilities by typing arguments and options on the command line
    3. Practice the use of the command line history and command line completion while invoking basic commands
    4. Play the role of user and programmer, alternately, to establish a command line-interaction plan for a program
  5. Files and directories
    1. Become familiar with the history and concepts of the Linux filesystem
    2. Practice moving about the filesystem to become familiar with the hierarchical organization of files
    3. Understand the Linux permissions by viewing and changing permissions on both files and directories
    4. Use a variety of commands to perform basic operations on the filesystem including moving, creating, and deleting files and directories
  6. Finding, reading, and writing files
    1. Use utilities to assist in the location of files in the Linux system
    2. Write a short script which uses redirection to send output to a specified file
    3. Gain experience with pipes to send output from one command to another command
    4. Incorporate regular expressions into a grep call to refine search terms
  7. Communicating with remote computers
    1. Demonstrate the use of basic commands to transfer files to and from a remote computer
    2. Gain experience with file transfer protocols
    3. Explore the use of a variety of methods to connect, along with the benefits and risks of each
    4. Investigate the need for security in communicating with external machines and develop strategies to lessen security risks
  8. Demonstrating the Linux text editor
    1. Compare the features of two or more text editors in the Linux environment
    2. Use the basic commands of a text editor to create a new file, write and edit text, and save the file
    3. Edit a script using the text editor's commands for moving around and editing

Special Facilities and/or Equipment

1. Access to a computer laboratory with a Linux operating system.
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 email accounts and ongoing access to computers with internet capabilities.

Method(s) of Evaluation

Methods of Evaluation may include but are not limited to the following:

Examinations (quizzes, mid-term)
Homework assignments, projects, and hands-on exercises
Laboratory skill demonstrations
Comprehensive final examination

Method(s) of Instruction

Methods of Instruction may include but are not limited to the following:

Lectures which include history, structure and use of the Linux operating system
Online labs (for all sections, including those meeting face-to-face/on-campus), consisting of:
1. A lab assignment webpage located on a college-hosted course management system or other department-approved internet environment. Here, the students will review the specification of each laboratory assignment and submit their completed work
2. A discussion webpage 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
Detailed review of written assignments which includes model solutions and specific comments on the student submissions
In-person or online discussion which engages students and instructor in an ongoing dialog pertaining to all aspects of the Linux operating system
When course is taught fully online:
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 online practices

Representative Text(s) and Other Materials

Negus, Christopher. Linux Bible, 9th ed.. 2015.

Pelz, Oliver. Fundamentals of Linux, 1st ed.. 2018.

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 online resources as directed by instructor though links pertinent to understanding the Linux environment
    4. Reading library and reference material directed by instructor through course handouts
  2. Writing
    1. Writing technical prose documentation that supports and describes the assignments that are submitted for grades

Discipline(s)

Computer Science