This is about improving clarity and maintainability
onlye 3 techniques: sequence (statement order), selection (if / else etc), and iteration (loops and stuff)
flowcharts are good because they show sequence and selection. Psuedo code is good to just get your ideas out
tracetables are used to see where errors occur within a program
thinking concurrently is cool because you can increase number of tasts done per second
parallel procesing can be cool because it takes advantage of different processors, but some tasks might run faster on just 1 processor
pp is good for 3d though
a problem is computable if there is an algorithm to sovle the problem in every instance within a finite amount of steps. wow, hella deep.
some problems are theoretically solvable just take ages like guessing a password because it'll take a whlie to CRACK it
quick aside: these are the most nothing ways to solve a problem. wow i can think creatively like ocr are so clever for this.
Strats for problem solving include Divide and conqure (like binary search), problem abstraction (getting rid of useless info)
visualization is used to see a problem more clearly and therefore find a solution.
backtracking is goign back to where you were previously after a dead end to see if you cna find a solution, like in a maze.
data mining is going through data to predict trends
big data is a large set of data which can't really be handled in a normal databass
intractable problems are problems which are solvable, just take too frickin long
Heuristic methods are about approximating an answer for an intractable problem
performance modelling is simulating system loads instead of doing the performance becase that could be expensive
pipeliningin is splitting tasks into smaller parts adn overlapping them when you do them