The intention of Module 1 is to orient you, both historically and practically, to what you'll be studying and working on for the remainder of this course. We want to impress upon you that modern computer sceince is the result of over a century of evolution shaped by a confluence of forces-technological, social, political, commercial, and personal. We also want you to experience first-hand a state-of-the-art result of this evolution (the World Wide Web), as it is the medium through which we deliver all subsequent messages.
Toward these ends, we will
Describe the machine, designed over a hundred years ago, that could be considered the first true computer
Discuss some of the historical currents that led to the development of modern computers
Describe the explosive growth of computers during the last three decades
Provide you with an opportunity to develop your "surfing" skills using a browser program and the World Wide Web
Applications and Implications
This module is intended to convert you from a casual observer of computing technology to a more accomplished "user" of the machine, at least at a local software level. We want you to appreciate (if you don't already) that you don't have to be a "power user nerd" to get the computer to work effectively and productively for you. You will see that, thanks to the evolution and proliferation of task-oriented application programs, everyone can be (with, to be sure, varying degrees of success) a typesetter, an accountant, and a graphic designer.
Toward these ends, we will
Describe four common "microworlds" and their realizations as modern software applications
Present an inventory of some computer applications in business, technology, the professions, and entertainment
Provide you with an opportunity to develop (or demonstrate) your skills with a word processor, a spreadsheet program, a graphics processor, and a page layout program.
Global Implications
Our intention in this module is to help you make the leap from local, user-controlled, essentially private applications, to a global network of machines and programs controlled by and participated in by millions of user/operators. Using these programs and machines means communicating and interacting with a virtual community. Our goal is to bring you up-to-speed on the tools, techniques, and responsibilities that come with using the World Wide Web.
In particular, we will
Explore the historical background and technology of the Internet
Discuss some of the important applications of the Internet, including electronic
mail, news groups, and the WWW
Encourage you to use these applications in comventional ways
Consider some consequences and implications of these ever-more pervasive
uses of the WWW
Designing For Use
Up to this point, the computer, its programs and the Web have been "black boxes"Šperhaps fascinating, probably complicated, and probably incomprehensible in their details. In this module, we will explore the design process, showing you how complicated systems are constructed. Our intention is that by the end of this module, the black box will have become a gray box, and you will be ready for the next module, on programming, in which we make the box transparent, exposing even more of its inner workings.
Toward that end, we will
Examine the evolution of the user interface
Discuss the desirable features of a user interface
Explore the composition of a WWW page
Demonstrate how to use the HyperText Markup Language (HTML) to design a variety of sample pages
Use the techniques illustrated in our sample pages to develop your own "home page"
Programming
Every program that you have used-from your word processor to your web browser-had to be written in a programming language. The goal of this module is to give you a brief, but realistic introduction to the process and the means by which programs are written. In so doing we take you one step deeper into the machine. We also take you one step closer to the world of the power user, who can not only use and design interfaces for the computer, but can make them responsive and functional.
In particular, we will
Examine how certain HTML elements support interactive interfaces
Illustrate the structure of JavaScript programs, and shows how they are described in an HTML document
Review the JavaScript code that implements a simple adventure game to see the range of statements and data types that can be represented in JavaScript
Show you how to write, test, and debug JavaScript functions of your own
Describe the programming process in general, life cycle terms
Program Translation
The goals of this module are to demonstrate for you how programs-both the information and the statements therein-written in languages like JavaScript can be translated into the binary language of your computer, and to convince you that this is what allow programs to be understood and carried out.
Towards these ends, we will
Introduces the binary representation of information used by modern computers
Discuss machine language, and show how program statements can be translated into it using parse trees
Introduces several contemporary high-level languages, concentrating on how they make the programming process more efficient
Take a necessarily brief look at the problems involved in translating high-level languages into a form that a computer can execute
Hardware
This module takes us to the lowest level of abstraction-the physical realization of the computer in hardware. It explains why computers understand only binary languages, and demonstrates for you how they do so. Our goal is not to turn you into a hardware engineer, but rather to demonstrate for you how computers are designed and built to perform a wide range of processing tasks.
In particular, we will
Show how the circuits of a computer are constructed
Use the Logg-O program to build and test a variety of circuits
Discuss the hierarchical complexity of a computer, combining switches to make gates, combining gates to make circuits, and constructing the architectural organization of the computer by combining circuits
See how simple circuits, combined in complex ways, can implement a model computer
Explore the design of a small but complete microprocessor
Theory of Computation
Our goal in this module is to introduce you to the BIG Questions in Computer Science-the ones that define and delimit everything we can ever hope to do with computers. While these questions tend to be couched in highly abstract, mathematical terms, you will see that their answers have serious, down-to-earth implications to the practice of the discipline.
Toward this end, we will
Concentrate on the view of a program as defining an abstract machine
Consider two ways of looking at these abstract machines
Investigate and experiment with a variety of Turing Machines
Describe the expressive power and the limitations of Turing Machines
Artificial Intelligence
Throughout their history, computers have been applied to tasks that had previously been performed by human beings. Our goal in this lab module is to introduce the field of Artificial Intelligence and, in so doing, get you to consider how computers-and how we!-stack up in terms of our current understanding of intelligence.
Toward these ends, we will
Discuss the notion of embodying intelligence in a machine, and consider Alan Turing's operational test for machine intelligence
Look at some of the major directions in Artificial Intelligence research
Experiment with two programs that perform decidedly human tasks
Compare the manner of operation and the resultant behavior of these programs to your behavior in these tasks
Computers and Society
Our goal in this final module is to encourage you to think about computer science in the broadest social terms. Our hope is that by virtue of having progressed through this course you will be in a position to appreciate and articulate your opinions on a number of the issues we will raise for your consideration.
Specifically, we will
Identify the major trends possible in future computer use and try to make an approximate ranking of these trends in order of their likelihood
Discuss the possible implications of these trends in social, economic, and political terms
Consider the WWW as both a tool and a medium for participating in new social structures