[Skip Links]
Sorting:
[Front Door]
[Syllabus]
[Standard Sorting Algorithms]
[Lab Manual (PDF)]
Exercises:
[PBJ]
[PBJ2]
[Sorting Books]
[Sorting Numbers]
[Starting Scheme]
[Comparing Algorithms]
[Selection Sort]
[Formalizing Requirements]
[Comparing Sorts]
[Finding the Largest]
Glimmer/Education:
[Glimmer Labs]
[SchemeWeb]
[ScriptFu For Schemers]
[CS Education]
Glimmer Labs
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.
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
;
;
Check with Bobby