|1. Description - |
|Introduction to the Linux and UNIX operating systems 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.|
|2. Course Objectives - |
|The student will be able to: |
- Describe the basic features of the Linux operating system.
- Understand the history and philosophy of UNIX systems and standards.
- Discuss the various components of UNIX.
- Describe the UNIX kernel and its subsystems.
- Create a user account, logon and get information using commands on a UNIX system.
- Compare UNIX shell types and use variables in the shell environment.
- Understand a basic shell script and demonstrate the understanding of the shell through the use of an alias and built in commands.
- Use the man pages effectively and show proficiency in using the command line.
- Display, count, sort and compare files using filter commands.
- Discuss the UNIX files system concepts and organization.
- Perform directory and file operations including changing permissions, creation, deletion, moving and renaming.
- Demonstrate an understanding of user and system processes and basic process operations.
- Use regular expressions to effectively describe desired search patterns.
- Write code to redirect input and output to and from the user, files and commands using redirection and pipe.
- Connect to remote computers and transfer files using UNIX commands.
- Create and edit text files in a UNIX text editor to illustrate knowledge of the text editor functions and commands.
|3. Special Facilities and/or Equipment - |
- Access to a computer laboratory with a UNIX operating system.
- 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.
- 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.
- 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.
|4. Course Content (Body of knowledge) - |
- Brief overview of operating systems
- Overview and features of Linux
- Pros and cons of UNIX
- History and Philosophy
- Original and current philosophies
- Origin and history of UNIX systems and their derivatives
- Overview of UNIX standards (i.e. POSIX, XOPEN)
- Components of UNIX
- Shell command line vs. GUI
- The kernel and its subsystems
- System Call Interface, File subsystem, I/O and device subsystem.
- Process Control: scheduler, time slicing
- Memory management: paging vs. swapping
- Getting Started with UNIX
- How to login and logout
- User accounts
- The superuser
- Account settings and configuration
- Commands for getting information
- Stopping a program
- Introduction to UNIX Shells
- Function of shells
- Comparison of UNIX shell types
- Shell environment
- Shell variables and environment variables
- Using variables
- More about the Shell
- Quoting and escaping
- Built in and external commands
- Search path
- Basic shell programming functions
- Overview of Commands
- Understanding man pages
- Command line syntax
- Arguments and options
- command line history
- command line completion
- command line editing
- Filter Commands
- Displaying files
- Comparing files
- Counting lines, words and characters
- Sorting data
- Selecting lines
- The Unix Filesystem
- Overview of files
- inode concepts
- Hardware and processes as file abstractions
- Modern Unix and Linux filesystem types
- Hierarchical organization of filesystems
- Directory organization
- Working with Directories and Files
- Absolute and relative pathnames
- Working directory
- Moving about in the filesystem
- Basic directory operations
- Basic file operations
- Finding files
- Kernel management of processes
- System processes vs. user processes
- Foreground vs. background processes
- Displaying process information
- Suspending and killing processes
- Regular Expressions
- Introduction to regular expressions
- Matching lines, words and characters
- Character classes
- Introduction to sed and awk
- Input and Output
- Standard input
- Standard output and standard error
- File descriptors
- Introduction to basic utilities
- Connecting to remote computers
- Transferring files
- Text Editors
- Comparison of Unix text editors
- Text editor basics
- How to create, open and save a file
- Editing a text file
- Repeatability - Moved to header area.
|5. Repeatability - Moved to header area.|
|6. Methods of Evaluation - |
- Examinations (quizzes, mid-term)
- Homework assignments, projects, and hands-on exercises
- Laboratory skill demonstrations
- Comprehensive final examination
|7. Representative Text(s) - |
|Hahn, Harley, Harley Hahn's Guide to Unix and Linux, 1st Edition, McGraw-Hill Higher Education, 2008. |
|8. Disciplines - |
|Computer Science |
|9. Method of Instruction - |
- Lectures which include history, structure and use of the UNIX and Linux operating systems.
- On-line labs (for all sections, including those meeting face-to-face/on campus) consisting of
- A lab 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 laboratory assignment and submit their completed work.
- 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.
- Detailed review of written assignments which includes model solutions and specific comments on the student submissions.
- In person or on-line discussion which engages students and instructor in an ongoing dialog pertaining to all aspects of the UNIX and Linux operating systems.
- When course is taught fully on-line:
- 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.
- Additional instructional guidelines for this course are listed in the attached addendum of CS department on-line practices.
|10. Lab Content - |
- Getting started with UNIX
- Create a new user account with user id and password.
- Enter commands such as whois, which and whereis to get basic information.
- Run and stop programs from the command line.
- Alter user account settings.
- Using basic commands
- Demonstrate the use of commands to display, compare, count, sort and select files and text.
- Use a text editor to incorporate commands into small scripts.
- Explore the UNIX man pages to gain information on command purpose and use.
- Demonstrate the use of command options to alter the behavior of commands.
- Exploring various environment and shell variables in the UNIX operating system.
- Develop understanding of the numeric and string variable types as well as allowed operations on each.
- Gain experience in effectively using the text editor to edit system files.
- Use the text editor and command line to alter the value assigned to certain shell and environment variables.
- Deduce the effect working with shell and environment variables has on the shell environment.
- Mastering the command line
- Explore command line syntax through reading man pages and trial and error.
- Interact with utilities by typing arguments and options on the command line.
- Practice the use of the command line history and command line completion while invoking basic commands.
- Play the role of user and programmer, alternately, to establish a command line-interaction plan for a program.
- Files and directories
- Become familiar with the history and concepts of the UNIX filesystem.
- Practice moving about the filesystem to become familiar with the hierarchical organization of files.
- Understand the UNIX permissions by viewing and changing permissions on both files and directories.
- Use a variety of commands to perform basic operations on the filesystem including moving, creating and deleting files and directories.
- Finding, reading and writing files
- Use utilities to assist in the location of files in the UNIX system.
- Write a short script which uses redirection to send output to a specified file.
- Gain experience with pipes to send output from one command to another command.
- Incorporate regular expressions into a grep call to refine search terms.
- Communicating with remote computers
- Demonstrate the use of basic commands to transfer files to and from a remote computer.
- Gain experience with file transfer protocols.
- Explore the use of a variety of methods to connect along with the benefits and risks of each.
- Investigate the need for security in communicating with external machines and develop strategies to lessen security risks.
- Demonstrating the UNIX text editor
- Compare the features of two or more text editors in the UNIX environment.
- Use the basic commands of a text editor to create a new file, write and edit text and save the file.
- Edit a script using the text editor's commands for moving around and editing.
|11. Honors Description - No longer used. Integrated into main description section.|
|12. Types and/or Examples of Required Reading, Writing and Outside of Class Assignments - |
- Textbook assigned reading averaging 30 pages per week.
- Reading the supplied handouts and modules averaging 10 pages per week.
- Reading on-line resources as directed by instructor though links pertinent to understanding the UNIX and Linux environment.
- Reading library and reference material directed by instructor through course handouts.
- Writing technical prose documentation that supports and describes the assignments that are submitted for grades.
|13. Need/Justification - |
|This course is a restricted support course for the AS Degree in Computer Science. |