1st Edition

Explorations in Computing An Introduction to Computer Science

By John S. Conery Copyright 2011
    390 Pages 115 B/W Illustrations
    by CRC Press

    Based on the author’s introductory course at the University of Oregon, Explorations in Computing: An Introduction to Computer Science focuses on the fundamental idea of computation and offers insight into how computation is used to solve a variety of interesting and important real-world problems. Taking an active learning approach, the text encourages students to explore computing ideas by running programs and testing them on different inputs. It also features illustrations by Phil Foglio, winner of the 2009 and 2010 Hugo Award for Best Graphic Novel.

    Classroom-Tested Material
    The first four chapters introduce key concepts, such as algorithms and scalability, and hone practical lab skills for creating and using objects. In the remaining chapters, the author covers "divide and conquer" as a problem solving strategy, the role of data structures, issues related to encoding data, computer architecture, random numbers, challenges for natural language processing, computer simulation, and genetic algorithms. Through a series of interactive projects in each chapter, students can experiment with one or more algorithms that illustrate the main topic. Requiring no prior experience with programming, these projects show students how algorithms provide computational solutions to real-world problems.

    Web Resource
    The book’s website at www.cs.uoregon.edu/eic presents numerous ancillaries. The lab manual offers step-by-step instructions for installing Ruby and the RubyLabs gem with Windows XP, Mac OS X, and Linux. The manual includes tips for editing programs and running commands in a terminal emulator. The site also provides online documentation of all the modules in the RubyLabs gem. Once the gem is installed, the documentation can be read locally by a web browser.

    After working through the in-depth examples in this textbook, students will gain a better overall understanding of what computer science is about and how computer scientists think about problems.

     

    Introduction
    Computation
    The Limits of Computation
    Algorithms
    A Laboratory for Computational Experiments

    The Ruby Workbench
    Introducing Ruby and the RubyLabs environment for computational experiments
    Interactive Ruby
    Numbers
    Variables
    Methods
    RubyLabs

    The Sieve of Eratosthenes
    An algorithm for finding prime numbers
    The Sieve Algorithm
    The mod Operator
    Containers
    Iterators
    Boolean Values and the delete if Method
    Exploring the Algorithm
    The sieve Method
    A Better Sieve
    Experiments with the Sieve

    A Journey of a Thousand Miles
    Iteration as a strategy for solving computational problems
    Searching and Sorting
    The Linear Search Algorithm
    The Insertion Sort Algorithm
    Scalability
    Best Case, Worst Case

    Divide and Conquer
    A new strategy: breaking large problems into smaller subproblems
    Binary Search
    Binary Search Experiments
    Merge Sort
    Merge Sort Experiments
    Recursive Methods

    When Words Collide
    Organizing data for more efficient problem solving
    Word Lists
    Hash Tables
    The mod Function Again
    Collisions
    Hash Table Experiments

    Bit by Bit
    Binary codes and algorithms for text compression and error correction
    Binary Codes
    Codes for Characters
    Parity Bits
    Huffman Trees
    Huffman Codes

    The War of the Words
    An introduction to computer architecture and assembly language programming
    Hello, MARS
    The Temperature on MARS
    Corewar
    Self-Referential Code
    Clones

    Now for Something Completely Different
    An algorithm for generating random numbers
    Pseudorandom Numbers
    Numbers on Demand
    Games with Random Numbers
    Random Shuffles
    Tests of Randomness

    Ask Dr. Ruby
    A program that understands English (or does it?)
    Overview of ELIZA
    Sentence Patterns
    Building Responses from Parts of Sentences
    Substitutions
    An Algorithm for Having a Conversation
    Writing Scripts for ELIZA
    ELIZA and the Turing Test

    The Music of the Spheres
    Computer simulation and the N-body problem
    Running around in Circles
    The Force of Gravity
    Force Vectors
    N-Body Simulation of the Solar System

    The Traveling Salesman
    A genetic algorithm for a computationally demanding problem
    Maps and Tours
    Exhaustive Search
    Random Search
    Point Mutations
    The Genetic Algorithm
    Crossovers

    Appendix A: Answers to Selected Exercises
    Appendix B: Ruby Reference

    Biography

    John S. Conery is a professor in the Department of Computer and Information Science at the University of Oregon. With over 30 years of teaching experience, he has taught courses on high performance computing and scientific computing in addition to introductory computer science courses. A member of the University's Center for Ecology and Evolutionary Biology, Dr. Conery has worked with biologists on a variety of problems related to gene and genome duplication, artificial neural networks, and population modeling. His current research interests are computational biology and bioinformatics.

    This entry-level computer science textbook is intended for use in an introductory course for computer science majors or non-majors desiring an overview of the basic concepts and processes of computer programming. … Each chapter contains illustrations and code examples as well as a tutorial project that walks the student step-by-step through a task-related programming activity. Access to online resources, including a lab manual and links to the latest version of the open source Ruby software, is provided.
    SciTech Book News, February 2011