Foundations of Computing, Winter Quarter 2001

Jon Jacky

Foundations of Computing is a three-quarter sequential program intended to give the beginning -- yet strongly motivated -- student a foundation for a computer science specialization. We will cover important computer science areas including theory and practice. In each of these areas students will be exposed to critical topics in a meaningful though non-comprehensive way. Programming projects will develop technical skills. Readings and seminars will develop presentation skills and critical judgment.

Winter quarter we will continue our study of problem-solving in contrasting programming languages. We will study systems composed of many programs, including operating systems and networked applications.

More information about all three quarters appears on the course web page at http://grace.evergreen.edu/~jackyj/fofc/fofc.html

Reference #: 00252G

8 quarter hours. Credit will be awarded in computer science and technology issues.

Prerequisites: Concepts of Computing or equivalent, Foundations of Computing fall quarter or equivalent.

This a three-quarter sequential program. It was intended that students begin in Fall term and continue through Winter and Spring. Instructor's permission is required to enter the program in Winter. Contact Jon Jacky at this email address: jackyj@evergreen.edu.

Lecture and seminar: Tuesdays and Thursdays 5:30 -- 7:00 pm

Laboratory: Tuesdays and Thursdays 7:30 -- 9:30 pm, ACC lab (L2610 in the Computer Center).


Programming Languages

Programmers and other computer specialists typically work in several languages, not just one. The differences are not merely superficial. The languages have different purposes, and each expresses a different notion of computation. Fall quarter we studied Scheme. Winter 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 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. We will use Java to experiment with networked applications.


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 became 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.


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.


Textbooks

We will use the programming language textbooks that were required Fall Quarter:

The Awk Programming Language, 1st edition, Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger, ISBN 020107981X, Addison-Wesley, 1988, 210 pages. About $41.

On to Java, 2nd edition, Patrick Henry Winston and Sundar Narasimhan, ISBN 0201385988, Addison-Wesley, 1998, 379 pages. About $25.

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


Seminar readings

I am considering these:


Jon Jacky, jackyj@evergreen.edu