Problem Solving and Computing (CSC-103 98S)
Outline of Class 1: Introduction
Held: Tuesday, January 20, 1998
- Make sure to read the various online administrative
handouts I've prepared.
- Make sure to fill out the
introductory survey.
- Read chapter one of Bailey.
- I've just learned that the supplementary text for this course,
The Java Tutorial, won't be ready until at least March.
online version.
- The bookstore tells me that they won't get Thinking Mathematically
until the end of the month. I'll photocopy the first few pages so that
you can get started reading.
- Starting next Monday at noon, and continuing most of the following weeks
will be the "CS Bag Lunch Film Festival". I strongly encourage all of
you to attend (at least for the first two weeks). January 26 and
February 2 will be films on Java from the creators of Java. February
9 we'll have a guest speaker from industry who has worked for Thinking
Machines, the Free Software Foundation (GNU), the Open Software
Foundation, and is currently working at a small startup.
Assignments
- I like to start my classes with a short discussion of the core topic
or topics we are studying. In particular, what are
we studying, why do we study that topic, and how do we study that topic.
- This course concerns itself with issues in mathematics and computer
science, so we should begin by looking at definitions of those to
terms?
- What is mathematics?
- A tool for the sciences?
- "It's all Greek to me"?
- A discipline whose focus is defining formal systems, postulating
theorems about those systems, and proving those theorems?
- ...
- What is computer science?
- A fancy term for computer programming?
- The science of computing (what is computing)?
- But then, what is science?
- A method of studying objects based on observation, postulation of
hypotheses, and verification of those hypotheses by experimentation?
- ...
- Many computer scientists consider computer science to be the study
of algorithms: formal sets of instructions for completing
tasks.
- We develop and analyze algorithms.
- We build languages to express algorithms in such a way that they
may be understood unambiguously and/or executed on the computer.
- We build machines that execute certain algorithms.
- We build programs that use algorithms.
- ...
- To some, computer science is a field that draws upon science, mathematics,
and engineering.
- Hopefully, you are here for a number of reasons. Here are a few
quick possibilities, but I'd like to here your own.
- To see a different way of approaching the world. Mathematicians and
computer scientists often concern themselves with formal systems and
models.
- To learn more about problem solving and to develop skills in solving
problems.
- The joy of learning.
- ...
- Most mathematicians and computer science agree that you can only learn
problem solving and computing by doing.
- That is, you can't just read solutions (or strategies for coming up
with solutions), you need to try to solve problems.
- Similarly, you can't just read algorithms and computer programs; you
need to write your own to understand the subtleties of the field and
to build strengths so that you can develop new algorithms.
- Hence, we'll spend a lot of time in this class working on problems.
Sometimes, the problems will be mathematical; sometimes they'll be
more computing oriented. Sometimes we'll use the computer, sometimes
we won't.
- Our main strategy will be to
- Work problems in small groups and
- Reflect on the problem solving process
See the handout.
See the handouts in the
course web.
- How do we solve (or even approach) problems?
- Clearly, it varies from person to person and problem to problem.
- Nonetheless, there are a number of general strategies that seem
to work for a wide range of people and problems.
- We also hone our problem solving skills by working on a variety of
problems.
- What are some basic principals?
- Make sure you understand the problem. It does you little good
to solve the wrong problem.
- Specialize
- Try a variety of examples
- Try to solve a simplified version of the problem
- ...
- Accept that being stuck and
dead ends are part of problem solving
- In science, incorrect solutions are often as valuable as correct
solutions because they prevent further attempts in useless
directions.
- In general, the work spent on an incorrect solution still gives
you experience with a strategy that may work on other
problems.
- Make sure that you develop tools for getting unstuck (specializing
is one; we'll see others).
- Generalize
- Look for patterns and try to find general principles.
- See what underlies your solutions
- Take Notes
- Often, we forget what we've done once we reach a solution.
- If we take notes along the way, we'll remember the process as well
as the solution.
- Notes also help us when we get stuck on other problems.
Our main focus is problem solving, so we'll spend the rest of the class
working in small groups on solving problems. There are two sets of
problems. One set is more
mathematical. The other set is more oriented towards
computing. Don't worry
if you can't finish any of the problems; today's class is intended to
get you started working on them.