CSE3305
Specifically, to:
problem solving
controlling space / time
heuristic search methods
stochastic search (probabilities)
stochastic simulation
limits of computation (what CAN be solved?)
formal complexity analysis
So WHAT IS COMPUTER SCIENCE? What is real computer science?
Science:
Discovering the nature of the world
emphasis on empirical methods
Science is about discovery
So there are these other subjects that float around the core subjects in CS, like AI, or soft eng. They don't deal with the real 'scientific' stuff. This is one opinion. So AI is one of the dispensable subjects.
One of the applications of CS.
So what is at the core? Computation. Turing machines. All that stuff.
So is computer science really a science? OR is it just like 'Hygiene Science' or 'Secretarial Science'?
Yes it is, because we can set out to discover what IS computable, and what the limits of computers are.
Just because we created something doesn't necessarily mean that we know what it does. Do you know what everything in a computer program you have created does and why? What can we do with computers?
We can also create applications through engineering. So computer science is also about applying computers to practical problem solving.
We're going to emphasise search as the algorithmic side of problem solving.
Problem => Model => Solution
Here's where the lecture hit its 'interesting peak'.
Def 1:
You have a problem when the present state of a system is not equal to its desired (goal) state (MF, p. 1)
So the first step is to model the problem.
Say you were going to model a star that was about to go nova. You could create model objects and properties / relationships for every particle, but you would be waiting forever for the dang thing to compute. The time complexity is absurd. So we have to decrease the resolution of the model somewhat. Now, there are a lot of things happening in the real version that don't get modeled in your computational model. You then manipulate that lower res computational model to create your solution.
This is what they mean by 'the details don't matter, they've been mostly omitted anyway!'.
Thus, in rough English, Def 2::
A model M of P is:
An Abstract representation of P
Abstract: e.g., mathematical, algorithmic
Abstractions lose (hopefully: irrelevant) details
States and operations of M parallel states and changes of P
Manipulating M (searching the state space of M) allows us to search for a goal state of M
Def 3:
A solution for a problem in M is a sequence of operations from an initial state to a goal state.
Thus problem solving is
Find a problem (identify)
Develop a model
Search the model's state until a solution is found
This was illustrated in class with the example of finding the route to another city.
But we need to allow feasible searches and solutions.
Ok, so this means it ahs to run in polynomal time (space) or less, when we think in general like computer scientists.
Or we can think more generally and say that it is feasible when the solution meets the problem constraints.
State Space Complexity is simply the number of possible states a model has. Sometimes if repeated states are allowed, the search space complexity is infinite.
Complexity is sensitive to the choice of implementation. In other words, if you choose badly, you're going to have an awful program that hogs all your resources. It's way too complex.
I'll stop
here