SCI199 Home Page (Septemeber 2001 - April 2002)
This version of SCI199 will be based on a previous version taught during
the 1999-2000 academic year.
- Fall 1999
- Spring 2000
Announcement for week of May 6, 2002
Check your grades here for all tests and assignments.
I am also listing any approved absenses in a separate file.
- final grades
Please note that late assignments will not be accepted
after 1 week of lateness! Furthermore, please submit hard copies
of your assignments. Too many word documents have attached viruses
and hence we want a hard copy.
Here is the link for the
glossary .
We will again pursue the general (and very debateable)
theme of GREAT IDEAS in COMPUTING
(including some beautiful algorithms). We will concentrate on
mathematical, algorithmic and software ideas with the understanding
that the importance and usefulness of these ideas depends
upon (and often parallels) the remarkable ideas and progress
in computing and communications hardware.
The list of topics we shall discuss will depend to some degree on
the background and interests of the class.
During the fall of 1999, the topics discussed included the
following: Turing's concept of computability and the Church-Turing thesis,
the von Neumann machine model,
FORTRAN and the development of `high level' languages,
fast sorting algorithms, recursion,
an information theortic lower bound for comparison based sorting,
search engines
(including a visit by Andrei Broder, Altavista CTO),
Shannon's development of information theory, compression algorithms, error
correcting codes, the Euclidean algorithm and a brief discussion of
computational number theory problems, public key crypography,
and the Theory of NP-completeness. During the spring 2000 term,
Arnold Rosenbloom continued the course and additional topics included
networking,
audio and video compression, computational geoemtry, parallel
and distributed computation and relational databases. We will again visit
many of these topics and
we also plan to discuss
some topics in HCI, operating systems, scientific computatation and
other aspects of information retrieval.
This page will provide WWW access to various documents concerning SCI199.
Most, if not all, of these documents are electronic versions of
handouts given to the class. Some announcements will also be made on
this page. See also the references given in the Fall 1999 link above.
Please send any comments or questions to the instructor or the teaching
assitant:
The course information sheet
has been distributed in class.
We will begin the course by considering some fundamental ideas of Turing,
especially his concept of a ``computable function''
as developed in his famous 1936 paper. The work and life of Alan Turing
has been described in many sources, and has also been the subject of
stage productions. You can begin to search some
of the relevant literature by looking at the website maintained by
Andrew Hodges ,
author of a widely acclaimed book on Turing.
As a prelude
to understanding the Turing machine model, we will briefly
consider the concept of a finite automaton. A discussion
of finite automata can be found in many text books as well as online
lecture notes such as
David Matuszek's notes
which includes this
example .
Turing machines are taught in every undergraduate course in computer
science and one can find several Turing machine simulation applets on the web.
You can try
TM applet 1 or
TM applet 2 .
Rather than trying to become proficient Turing machine programmers,
lets consider some simple sorting algorithms either expressed
informally or written in some known programming language (like C).
Some
common
sorting algorithms can be found here. We should be able to
convince ourselves that these algoritms could be implemented on a
Turing machine as a small piece of evidence in support of the Church-Turing
Thesis. These algorithms also provide an introduction to some other
great ideas (e.g. complexity bounds and optimal algorithms, recursive
programs) we will be considering.
As a change of pace, we will next consider an exceptionally prophetic
1945 article by
Vannevar Bush . (In particular, see sections 6 and 7 for
the concept of hyperlinks.)
Motivated by Bush's article, we then discuss search engines. What
kinds of queries are easily handled by current search engines and what kinds
of queries are difficult for these search engines?
For assignment 3, we take Bush's
suggestion and see if we can find information on the advantages of the Turskish
short bow over the English long bow during the Crusades.
What has caused home computing to be so pervasive? Clearly the world wide web
(and search engines) has caused a dramatic increase in home computer use.
But even prior to the emergence of the web, home comuter use was increasing.
Clearly the significant reduction in costs was a driving (and certainly
necessary) factor. But certain "killer applications" were perhaps
also needed and these applications include email and word processing.
We consider the functionality provided by current word processors
and investigate how some of these features are implemented.
While Turing's work provided us with a mathematically appealing
and unambiguous definition of the meaning of ``computable'',
it did not provide an attractive model for computer architecture.
Our next great idea is the von Neumann architecture. Without worrying
too much about the historical credits, von Neumann's description (in 1946)
of a general purpose machine architecture had an immediate and long
lasting impact on the design and use of computers.
Based on the von Neumann architecture, programming languages
begin to emerge by the early 1950's. While there is an interesting
(and perhaps somewhat disputed history) of the early development
of "high level languages", it seems fair to say that
the first commercially successful high level language (and compiler)
was FORTRAN developed at IBM by John Bachus and his group.
Our last topic for the the fall term will be operating systems.
We will consider some of the main concepts in the development of
operating systems. For a little historical perspective,
one can look at John McCarthy's history of
time sharing and at Dennis Ritchie's account
of the development of
UNIX . One of the great
ideas in the development of operating systems is
virtual memory .
We started the new term by discussing the "complexity thesis"
or "extended computability thesis". Recall that the Church-Turing
thesis equates the informal concept of "computable" with
the matehmatically precise concept of "Turing machine computable".
The complexity thesis equates the informal concept of "efficiently computable"
with the mathematical precise concept of "computable by a
Turing machine in polynomial
time". The compelxity thesis is more debateable than the Church-Turing
thesis but still it enables us to develop a very useful framework
for studying the complexity of problems. In particular,
we discussed the P vs NP question.
The
concept of NP completeness initiated by Cook (and independently
by Levin) and then developed by Karp and many others has had a profound
impact on computing, mathematics and many other related fields.
For motivation (and an introduction to this concept) I suggest looking at
how to get rich quick.
You can also look at some lecture notes on
NP and NP Completeness and some other topics
that we discuss in CSC364/CSC366.
We then began a discussion of complexity based cryptography
and the public key RSA system. Karolina has located a great
link for understanding the
RSA algorithm .
Lateness Policy: The course grade will depend significantly
on the assignments.
Assignments are expected to be handed in on time. Any assignment
which is submitted late will be penalized 25% and we will
accept at most three late assignments during the year.
Here is Assignment 2
Here is Assignment 4
Here is Assignment 5
Here is Assignment 6