Foundations of Computing -- Winter 2001

Jon Jacky

Winter quarter we will study systems composed of many programs, including operating systems and networked applications.

Languages
Operating Systems
Networked Applications
Textbooks
Other books
Software
Lectures and Seminars
Laboratories

Last revised March 29, 2001. Use your browser's Reload or Refresh button to get the latest version.

Check here for recent announcements

Back to course page.


Languages

We will continue our study of problem-solving in contrasting programming languages. Fall quarter we studied Scheme. This quarter we will add Awk and Java.

Awk is a scripting language, intended to help programmers write small but effective programs quickly. It is particularly well-suited for processing text patterns (in email messages, web pages, and other network traffic) and tabular data (from spreadsheets, databases, and other computer output). Other popular scripting languages are Perl, Python and Tcl, but Awk has a cleaner design and is easier to learn. It is excellent preparation for learning Perl which is similar but much hairier. Awk also has the same expression syntax (appearance and grammar rules) as C, C++, Java, and Javascript and is good preparation for learning any of these.

Java is ... oh, you've heard of it? What matters for our purposes is that it is representative of the most popular general-purpose languages. It has much in common with the older workhorses C and C++ but is simpler and more reliable.


Operating Systems

An operating system is a collection of programs that work together to provide the services of a computer in a convenient form to users and programmers.

In Fall term, we will have become familiar with the ubiquitous Windows operating system. In Winter, we will learn and use Linux, a popular modern version of the vastly influential Unix operating system.

In addition to using Windows and Linux, we will study the strategies their designers adopted for organizing large software systems.

As we learn the Unix operating system, we will learn the Awk programming language.

Here is page of links on Unix and Linux including tutorials, command summaries, history, humor, etc.:


Networked Applications

When you use a computer these days, it is likely that you are actually working with several different computers that communicate over a network. For example, when you use a web browser your computer communicates with remote server computers that send the content you see in the web pages.

We will study how networked applications are constructed and experiment with building some ourselves.

We will use the Java programming language to experiment with networked applications.


Textbooks

We will use the Awk book and the Java book that were required Fall Quarter.

These new books are also required:

Sams Teach Yourself Linux in 10 Minutes, John R. Ray, ISBN 0-672-31524-6, Sams Publishing (MacMillan Publishing Company), 1999, 212 pages. About $13.

Linux in a Nutshell: A Desktop Quick Reference, Third Edition, Ellen Siever, Jessica P. Hekman, Stephen Figgins, Stephen Spainhour, ISBN 0-59600-025-1, O'Reilly and Associates, 2000, 797 pages, about $35

Java Network Programming, Second edition, Elliotte Rusty Harold ISBN 1-56592-870-9, O'Reilly and Associates, 2000, 731 pages, about $40


Other books

Here are some helpful Unix/Linux books. They provide explanation and motivation that is missing from reference books like ... 10 Minutes and ... Nutshell.

The Unix Programming Environment, Brian W. Kernighan and Rob Pike, ISBN 0-13-937681-X (paperback), 0-13-937699-2 (hardback), Prentice-Hall, 1984, about $35 (paper). An early classic. The first four chapters on the file system, filters and pipes are superb and suitable for beginners. The rest of the book is for serious Unix C programmers. Nothing on networks or graphics.

Think Unix, Jon Lasser, ISBN 0-7897-2376-x, Que, 2000, about $30. Good explanations of the Unix philosophy, covers many topics including networks and graphics. Not comprehensive but complements the reference books nicely.

Here are some other network books I considered before I chose Java Network Programming. They provide some useful material but aren't very technical and don't have any programming examples.

Networked Applications: A Guide to the New Computing Infrastructure, David G. Messerschmitt, 1999, Morgan Kaufmann, About $40. Good topic coverage but no technical examples, exercises or projects.

Not Just Java, Peter Van der Linden, About $40. Covers many of the same topics as Messerschmitt, very heavy on the pro-Java, anti-Microsoft advocacy, a few light technical examples but no exercises or projects.

Middleware, Daniel Serain (translated by Iain Craig), ISBN 1-85233-011-2, Springer UK, 1999, about 250 pages. Good but very brief coverage of many topics, but no exercises or projects.


Software

There is a staggering amount of information about Linux online, as well as the software itself. A good starting point is www.linux.org. The Linux distribution on the ACC lab computers is from Red Hat.

Awk comes included with Linux (where it is called gawk). You can download Awk for Windows here. There is information about Awk for Macintosh here. You can download the example programs from The Awk Programming Language here.

Sun's Java site is here. The latest version of the language and development environment is called the Java 2 SDK, version 1.3. You can download it for Windows or Linux here (be warned, it's huge - not practical to download without a cable modem or DSL). There is an article about Java on Macintosh here. Apple's own Java site is here.


Lectures and Seminars

Bring a short reading report to each meeting (starting Thursday January 11). Use the same three-sentence report format we used in the Fall.


Laboratories

Handouts and links:

Spelling checker example:

Assignments:

Worksheets and quizzes:

Example programs:

Solutions:


Jon Jacky, jackyj@evergreen.edu