The Unix Model Curriculum:
Outline for a One-Quarter Course

The Unix Model Curriculum is a detailed plan for teaching all the important concepts necessary for an introductory course in Unix and Linux. The Unix Model Curriculum was developed by Harley Hahn to help instructors decide which topics to teach and the order in which to teach them.

The following is an outline for a one-quarter Unix/Linux course based on the Unix Model Curriculum. The outline contains a total of 54 teaching units, each of which takes about 25 minutes to teach. The intention is for you to teach 6 units per week.

Thus, if you have two 1½-hour classes a week, you should teach 3 units per class. If you have three 1-hour class a week, you should teach 2 units per class. In all, it should take you 9 weeks to teach the course (54/6 = 9).

The schedule is based on a 11-week quarter, with the last week taken up by final exams, leaving 10 teaching weeks. I assume that, during these 10 weeks, one class will be used for a midterm exam, and another class will be lost because of a holiday.

Within the course outline below, the section numbers refer to the Unix Model Curriculum. The page references indicate the relevant pages to read in the textbook Harley Hahn's Guide to Unix (McGraw-Hill Higher Education).

Section 1: Introduction to Unix

Unit Page
References
    Topics
1 1-3
3-4
4-5
5
• The Unix family of operating systems
• The Unix culture
• Why do we use Unix?
• Who uses Unix?

Section 2: What is Unix? What is Linux?

Unit Page
References
    Topics
2 9-10
11-12
12-13
18-19
22-28
35
• What is an operating system?
• What is the kernel?
• Unix = Kernel + Utilities
• The GPL (General Public License) and Open Source Software
• The development of Linux
• What is Unix? What is Linux?

Section 3: The Unix Connection

Unit Page
References
    Topics
3 38-41
 37-38,
+41-43 
45-46
49-50
50-51
52-52
• Multiprogramming, time-sharing
• Host and terminals paradigm
 
• The console
• Client/server relationship
• What happens when you press a key?
• Character terminals, graphics terminals

Section 4: Starting to Use Unix

Unit Page
References
    Topics
4 55-56
56-57
57-59
59-61
• System administrator
• Userids and passwords
• Logging in
• What happens after you log in?
Unit Page
References
    Topics
5 61-62
62-63
63-64
• Shell prompt
• Logging out  [logout, exit, login]
• Upper- and lowercase
Unit Page
References
    Topics
6 66-67
67-69
70
 70-71,
+838-840 
• Changing your password  [passwd]
• Choosing a password
• Userids and users
• The superuser userid  [root]
(Appendix E: What to Do If You Forget the Root Password)

Section 5: GUIs: Graphical User Interfaces
Section 6: The Unix Work Environment

Unit Page
References
    Topics
7 73-75
79-81
82-85
96-97
97-98
• What is a GUI?
• Desktop environment
• KDE and Gnome
• The GUI and the CLI (command line interface)
• Logging in and logging out with a GUI
Unit Page
References
    Topics
8 108-110
110-112
113-116
116
118-122
125-126
• Multiple desktops/workspaces
• Terminal windows
• Virtual consoles
• The console
• Working as superuser  [su]
• Shutting down; rebooting  [init, reboot, shutdown]

Section 7: Using the Keyboard With Unix

Unit Page
References
    Topics
9 138-139
137-138
145-146
148-149
153-155
155-157
• How does Unix know what type of terminal you are using?
• Modifier keys
• Stopping a program  [intr, quit]
• End of file signal  [eof]
• Command line editing
• Return; linefeed; newline

Section 8: Programs to Use Right Away

Unit Page
References
    Topics
10 161-164
164
 164-165,
+841-845 
168-169
169-170
170-172
• Finding a program on your system  [which, type, whence]
• How do you stop a program?
• Displaying the time and date  [date]
(Appendix F: Time Zones and 24-Hour Time)
• Information about your system  [uptime, hostname, uname]
• Information about you  [whoami, quota]
• Information about other users  [users, who, w]

Section 9: Documentation

Unit Page
References
    Topics
11 189-190
190-192
192-193
193
193-196
• The Unix tradition of teaching yourself
• RTFM
• What is the Unix manual?  [man]
• Man pages
• Displaying man pages
Unit Page
References
    Topics
12 199-201
202-203
203-204
204-208
208
209-210
• Organization
• Section numbers
• Referencing man pages
• Format of a man page
• Finding out what a command does  [whatis]
• Searching for a command  [apropos]

Section 10: Command Syntax

Unit Page
References
    Topics
13 223-224
224-225
225-226
226-227
227-229
• Entering more than one command at a time
• What happens when you enter a command?
• Command syntax
• Options
• Dash options; dash-dash options
Unit Page
References
    Topics
14 229-230
230-231
231-232
232-234
235
235-236
• Arguments
• Whitespace
• One or more; zero or more
• Syntax: the formal description of a command
• Learning command syntax from the Unix manual
• Dealing with a lot of options

Section 11: The Shell

Unit Page
References
    Topics
15 239-240
240-244
244-247
• What is a shell?
• The Bourne shell family  [sh, ksh, bash]
• The C-Shell family  [csh, tcsh]

Section 12: Using the Shell: Variables and Options

Unit Page
References
    Topics
16 256-257
257-258
259-262
262-264
• Interactive shells; non-interactive shells
• Environment; processes; variables
• Environment variables; shell variables
• Displaying environment variables  [env, printenv]
Unit Page
References
    Topics
17 264
 264-267,
+846-850 
267-269
269-271
• Displaying shell variables  [set]
• Displaying and using the value of a variable  [echo, print]
(Appendix G: Shell Options and Shell Variables)
• Bourne shell family: Using variables  [export, unset]
• C-Shell family: Using variables  [setenv, unsetenv, set, unset]

Section 13: Using the Shell: Commands and Customization

Unit Page
References
    Topics
18 277-279
279-283
283-284
284-287
287-289
• Metacharacters
• Quoting; escaping
• Strong quotes; weak quotes
• Builtin commands  [type]
• External commands
Unit Page
References
    Topics
19 289-291
292-294
299-301
301-302
• Search path
• Shell prompt
• Command substitution
• Typing commands; making changes
Unit Page
References
    Topics
20 302-308
309-314
316-322
• History list  [fc, history]
• Autocompletion
• Aliases  [alias, unalias]

Section 14: Using the Shell: Initialization Files

Unit Page
References
    Topics
21 327-329
329-330
330-331
331-332
• Initialization files; logout files
• Names of initialization and logout files
• Dotfiles and rc files
• Using a simple text editor
Unit Page
References
    Topics
22 332-333
333-334
335
335-336
336-337
• Login shells; non-login shells
• When are initialization files executed?
• What to put in initialization files
• Displaying, creating and editing initialization files
• Comments in shell scripts

Section 15: Standard I/O, Redirection, and Pipes

Unit Page
References
    Topics
23 345-348
 
348-349
349-350
350-352
• The Unix philosophy regarding tools
(combining tools, small is beautiful)
• Standard input; standard output; standard error
• Redirecting standard output
• Preventing files from being replaced or created by redirection
Unit Page
References
    Topics
24 352-353
353-354
354-355
360-361
362-365
365-367
• Redirecting standard input
• File descriptors
• Redirecting standard error: Bourne Shell family
• Throwing away output (/dev/null)
• Redirection summary
• Pipelines

Section 16: Filters: Introduction and Basic Operations

Unit Page
References
    Topics
25 374-375
376-377
377-380
380-382
382-383
• Filters
• The problem solving process
• The simplest possible filter  [cat]
• Increasing the power of filters
• The most useful filters
Unit Page
References
    Topics
26 382-385
391-392
392-393
• Combining files  [cat]
• Selecting lines from the beginning or end of data  [head, tail]
• Deleting columns of data  [colrm]

Section 17: Filters: Comparing and Extracting
Section 18: Filters: Counting and Formatting

Unit Page
References
    Topics
27 395-396
396-397
397-399
399-408
424-426
• Comparing files
• Comparing any two files  [cmp]
• Comparing sorted text files  [comm]
• Comparing unsorted text files  [diff]
• Counting lines, words, characters  [wc]

Section 19: Filters: Selecting, Sorting, Combining, and Changing

Unit Page
References
    Topics
28 447-450
450-454
455-458
• Selecting lines that contain a specified pattern  [grep]
• The most important grep options  [grep]
• Selecting lines beginning with a specific pattern  [look]
Unit Page
References
    Topics
29 459-461
461-462
471-473
• Sorting data  [sort]
• Controlling the order in which data is sorted  [sort -dfn]
• Finding duplicate lines  [uniq]
Unit Page
References
    Topics
30  464-465,
+833-837 
465-466
466-471
• ASCII code
(Appendix D: The ASCII Code)
• Collating sequences
• Locales

Mid-term Exam

Section 20: Regular Expressions

Unit Page
References
    Topics
31 497-498
502-504
504-505
505
505-506
• Introduction to regular expressions
• Matching lines
• Matching words
• Matching characters
• Character classes
Unit Page
References
    Topics
32 506-507
506-507
507-511
511-514
514-517
• Predefined character classes
• Ranges
• Locales and collating sequences
• Repetition operators
• Understanding complex regular expressions

Section 21: Displaying Files

Unit Page
References
    Topics
33 521-524
524-526
525-526
527-529
• Survey of programs used to display files
• Using less for paging  [less]
less: Starting, stopping, help
less: Most common commands
Unit Page
References
    Topics
34 529-530
541
541-542
542-544
less: Searching within a file
• Displaying the beginning of a file  [head]
• Displaying the end of a file  [tail]
• Watching the end of a growing file  [tail -f]
Unit Page
References
    Topics
35 544-550
550-551
551-555
• Binary, octal, hexadecimal
• Why we use hexadecimal rather than octal
• Displaying binary files  [hexdump, od]

Section 22: The vi Text Editor

Special references:
• Summary of vi Commands (Appendix C, pages 827-823)
• Quick Index for the vi Text Editor (pages 891-893)

Unit Page
References
    Topics
36 559-560
565-566
568-570
570-571
• Introduction to the vi text editor  [vi]
• Starting vi
• Command mode; input mode
• Knowing what mode you are in
Unit Page
References
    Topics
37 571
572-573
573-574
574-575
575-576
• Starting vi as a read-only editor:  [view, vi -r]
• Stopping vi
• How vi uses the screen
• Using vi and ex commands
• How to learn vi commands
Unit Page
References
    Topics
38 577
577-581
581-582
584-586
• Creating a practice file
• Moving the cursor
• Moving through the editing buffer
• Searching for a pattern
Unit Page
References
    Topics
39 586-587
587-589
590-592
592-594
594-597
597-598
• Using line numbers
• Inserting text
• Changing text
• Replacing text
• Deleting text
• Undoing or repeating a change
Unit Page
References
    Topics
40 599-601
601-602
608
609
613-614
• Moving text
• Copying text
• Copying lines
• Moving lines
• Writing data to a file

Section 23: The Unix Filesystem

Unit Page
References
    Topics
41 627-628
628-629
630
638-639
• What is a file?
• Types of files
• Directories; subdirectories
• Tree-structured filesystem
Unit Page
References
    Topics
42 639-640
640-641
643-647
647-649
650-652
• Filesystem Hierarchy Standard (FHS)
• Root directory and subdirectories
• Contents: root directory
• Contents: /usr directory
• Home directories

Section 24: Working With Directories

Unit Page
References
    Topics
43 659-663
660
663-666
666-669
• Pathnames: absolute, relative
• Working directory
• Pathname abbreviations ( .. . ~ )
• Moving around the directory tree  [cd, pwd]
Unit Page
References
    Topics
44 669-672
672-675
675-676
682-683
683-686
• Making a new directory  [mkdir]
• Removing a directory  [rmdir]
• Moving or renaming a directory  [mv]
• Using ls to list files  [ls]
• Directory listings  [ls -CrR1]
Unit Page
References
    Topics
45 697-720
702-703
703-707
• Globbing; wildcards
• Dot files (hidden files)  [ls -a]
• Long directory listings  [ls -dhltu]

Section 25: Working With Files

Unit Page
References
    Topics
46 717-720
720-721
721-722
722-723
• Rules and conventions for naming a file
• Copying a file  [cp]
• Copying files to a different directory  [cp]
• Copying a directory to another directory  [cp -r]
Unit Page
References
    Topics
47 723
723-724
724-725
725-727
• Moving a file  [mv]
• Renaming a file or directory  [mv]
• Deleting a file  [rm]
• How to keep from deleting the wrong files  [rm -if]
Unit Page
References
    Topics
48 729-731
732-735
735-737
737-738
• File permissions
• How Unix Maintains File permissions  [id, groups, ls -l]
• File modes
• Changing file permissions  [chmod]
Unit Page
References
    Topics
49 740-741
741-742
742-743
744-745
745-747
• Introduction to links  [stat, ls -i]
• Multiple links to the same file
• Creating a new link  [ln]
• Symbolic links  [ln -s]
• Using symbolic links with directories
Unit Page
References
    Topics
50 748-750
750-751
751-752
752-755
• Finding files: Searching a system database  [locate]
• Finding files: Searching a directory tree  [find]
• The find program: paths
• The find program: tests

Section 26: Processes and Job Control

Unit Page
References
    Topics
51 767-768
773-774
777-779
• How the kernel manages processes
• Foreground and background processes
• Job control
Unit Page
References
    Topics
52 779-780
780-782
784
785-787
787-788
• Running a job in the background
• Suspending a job  [fg]
• Displaying a list of jobs  [jobs]
• Moving a job to the foreground  [fg]
• Moving a job to the background  [bg]
Unit Page
References
    Topics
53 788-789
789-793
793-794
• Using ps to display process information  [ps]
• The ps program: Basic skills
• The ps program: Choosing options
Unit Page
References
    Topics
54 798-800
804-806
806-808
812-814
• Monitoring system processes  [top, prstat]
• Killing a process  [kill]
• Sending a signal to a process  [kill]
• Daemons

Final Exam



Jump to top of page