Computer Science 271 Software I

Dr. Stephen Bloch office 112 Alumnæ Hall phone 877-4483

                email sbloch@boethius.adelphi.edu

office hours T 9–11, WF 12–2, or by appointment

August 29, 1995

1 Subject Matter

This course will explain the basic concepts common to many computer operating systems and introduce you to a great number of tools and features provided by operating systems, especially Unix, which is currently the most popular at academic and research institutions and coming into widespread use elsewhere.

The Unix operating system has more personality than most, not because of how it works but because the people who built (and continue to build) it left such a distinctive mark on it with their senses of beauty, humor, and responsible behaviour. These have led to a system which, once you’ve grasped its fundamental philosophy, allows you both to make efficient use of your time and to have fun at it.

The creators of Unix used computers all day, every day, and wanted to use them as efficiently as possible. These people loved elegance and simplicity, and hated re-inventing the wheel, so they built a number of simple tools that could be combined as needed in billions of ways. They also loved whimsy, so you will find a lot of puns and jokes built into the system. On the other hand, they believed strongly in personal responsibility, so destructive pranks, invasions of privacy, and insults are strongly discouraged — usually not by rules, but by peer pressure. Unix has evolved from a computer system to a philosophy and finally to a community. I hope, among other things, to make you productive and civilized members of that community.

A disadvantage of building the whole system out of simple tools is that you need to learn a lot of simple tools before you can do anything. So in the first half of the semester you’ll read a lot of documentation and try your skill on small examples. In the second half of the semester the emphasis will shift somewhat from reading about Unix tools to actually using them.

Many of the people in this class are taking CSC 270 concurrently. You’ll need to learn the same Unix tools and commands for both courses, but whereas for 270 it will suffice to learn only their simplest, most basic uses, in this class we’ll discuss each tool and command in greater detail.

2 Texts

In the course of the semester I expect you to read most of the book A Student’s Guide to Unix, by Harley Hahn. This very engaging, fun book discusses Unix philosophy and many common tools and commands. It does not cover Unix internals and programmers’ tools, so I expect you to learn about those through online documentation later in the semester. You can also learn a lot from the Net, and I may give out other reading assignments by email or in magazines.

You are responsible for everything in the reading assignments, whether or not I discuss it in a lecture.

3 Grading

As I write this (a week before classes start), I envision five homework assignments, each worth 10% of the semester grade, a midterm worth 20%, and a final exam worth 30%. I may change this somewhat as the semester unfolds.

Exams must be taken at the scheduled time, unless arranged in advance or prevented by a documented medical or family emergency. If you have three or more exams scheduled on the same date, or a religious holiday that conflicts with an exam or assignment due date, please notify me in writing within the first two weeks of the semester in order to receive due consideration. Exams not taken without one of the above excuses will be recorded with a grade of 0.

Homework and programming assignments will be accepted late, with a penalty of 1/3 per 24 hours or portion thereof after they’re due. An hour late is 33% off, 25 hours late is 67% off, and after 48 hours don’t bother turning it in. It’s still a good idea to do as much of it as you can, however, because I’ll assume on the exams that you’ve done the homework.

Programs are not abstract works of art, they are supposed to run and solve real problems. So if I get a program that doesn’t compile or run, or a program that has little or nothing to do with the problem I assigned, I will give it a zero, no matter how much time you put into it. Don’t bother turning in a program you haven’t tested yourself.

4 Ethics

Most of the assignments in this class are to be done individually. You may discuss general approaches to a problem with classmates, but you may not copy large pieces of programs or homework solutions. If you do, all the students involved will be penalized.

All work on an exam must be entirely the work of the one person whose name is at the top of the page. If I have evidence that one student copied from another on an exam, both students will be penalized; see above.

5 Schedule

This class meets every Monday, Wednesday, and Friday from 11:00 AM to 11:50 AM, except on University holidays or if I cancel class. All dates in the following schedule are tentative, except those fixed by the University; if some topic listed here as taking one lecture in fact takes two lectures to cover adequately, or vice versa, the schedule will shift.

I expect you to have read the specified chapters in the textbook before the lecture that deals with that topic; this way I can concentrate my time on answering questions and clarifying subtle or difficult points in the textbook, rather than on reading the textbook to you, which will bore both of us. Please read the textbook!

Date(s) Assignment Reading Lecture Subject 30 Aug Administrivia, accounts, & passwords 1 Sept 1–2 What is an operating system? What is Unix? 4 Sept Labor Day — no classes 6 Sept 3–4, (5?) Logging in and out, etc.

8 Sept  6–7  Basic Unix commands
11 Sept  HW1  8–9  Online documentation and command syntax
13 Sept  10–11  Command shells

Last day to add courses

15 Sept Shell scripts

18 Sept  19  Text editors (ex, vi, emacs, sed, awk)
20 Sept  HW2  20–21  The Unix file system
22 Sept  22  File-manipulation commands

25 Sept Rosh Hashanah — no classes

27 Sept  HW1 due 12–13  Basic Communication and the Net
29 Sept  14  Electronic mail

Last day to drop courses

2 Oct 15–16 Filters, pipes, and combining programs 4 Oct Yom Kippur — no classes

6 Oct  17–18  Displaying and printing
9 Oct  HW2 due  The Shell-Program Interface
11 Oct  HW3  Review for midterm, catch up

13 Oct Midterm exam 16 Oct man pages The stdio library 18 Oct man pages Process control: fork, exec, wait 20 Oct HW3 due man pages More on process control 23 Oct Discuss midterm 25 Oct HW4 man pages Low-level Unix I/O calls 27 Oct man pages More on Unix system calls

Last day to apply for May degree

30 Oct man pages The rcs version control utility 1 Nov man pages The gdb debugger 3 Nov man pages More on gdb

Last day to withdraw from courses 6 Nov man pages The make compilation control utility 8 Nov man pages More on make 10 Nov man pages The flex scanner generator 13 Nov HW4 due man pages More on flex 15 Nov man pages Yet more flex; yacc 17 Nov HW5 man pages More on yacc 20 Nov handouts TEX and L^{A}TEX 22 Nov handouts More on TEX and L^{A}TEX 24 Nov Thanksgiving break — no classes

27 Nov  23–24  The Net
29 Nov  24–25  The Net, continued

1 Dec man pages The World Wide Web and browsers 4 Dec on-line help HTML: writing your own Web pages 6 Dec on-line help HTML continued 8 Dec catch up 11 Dec HW5 due Review for Final Exam 15 Dec 10:30 AM–12:30 PM, Final Exam