Glimmer Labs

Introduction

About Computer Science

The name Computer Science is a somewhat awkward one for the discipline, since it's arguable that we don't focus on the scientific method (as some say, If you have to put science in the name, it's not science) and we don't necessarily study computers. We're also too often associated with the more practical skill of computer programming, which has a similar relationship to the discipline that reading has to the English major: it's a necessary skill, but it's not all there is. However, we're stuck with the name and the misconception, so let's just consider what computer scientists do.

Although computer scientists differ somewhat in the ways in which they define the discipline, most would agree that

Computer science is the study of algorithms and data structures.

By algorithms, we mean sets of instructions that can be used to solve problems. Some problems are mathematical. For example, you might write an algorithm to find the square root of a real number. Other problems deal with textual information. For example, you might write an algorithm that tells how to find a name in the phone book. You can write algorithms for a wide variety of problems.

By data structures, we mean mechanisms for organizing information. For example, we organize some information in lists and other information in tables.

By study, we mean specify, design, describe, evaluate mathematically, evaluate experimentally, implement in software, implement in hardware, prove properties, consider applications and implications, and much, much more.

In our studies, we rely on the tools and techniques from a number of other disciplines. From mathematics, we take proof techniques, formal language for describing problems and solutions, and even core ideas. From science, we take experimental techniques. From engineering, we take techniques for designing and constructing things. From psychology and the social sciences, we take techniques for understanding the relationship of our work to human endeavors.

About This Experience

The primary goal of this two-day laboratory experience is to give you a sense of what it means to do computer science. We'll carefully specify some problems, design some algorithms to solve them, implement them in the programming language Scheme, and evaluate them experimentally.

Today we'll focus on some background ideas. We'll start by writing an algorithm for an everyday problem. We'll continue by looking at a traditional and well-studied problem in computer science, that of putting a list of things in order. We'll spend a little time working with the basics of Scheme. We'll conclude by reflecting on what we've done today.

Tonight you'll have the opportunity to read my somewhat more formal descriptions of some common sorting algorithms in preparation for tomorrow's lab. You'll also reflect on what you've done today.

Tomorrow, we'll consider these sorting algorithms and some related algorithms in more depth. We'll be doing a good deal of experimental analysis and also look at some related design and theory principles.

You can find more information on my plans for the two days in the syllabus.


This document was generated by Siteweaver on Tue Aug 17 07:24:50 2010.
The source to the document was last modified on Tue Aug 20 12:52:41 2002.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Glimmer/Sorting/intro.html.

You may wish to validate this document's HTML ; Valid CSS! ; Check with Bobby

Glimmer Labs: The Grinnell Laboratory for Interactive Multimedia Experimentation & Research
glimmer@grinnell.edu