A simple introductory explanation to what Complexity Theory is. This wonderful world were the Newtonian view of the world fails and where large heterogenous entities create complex systems that need new mathematical tools to process and understand them. It is only 5 minutes but gets to the main points of the field.
The Philosophy of Computer Science
The philosophy of computer science is concerned with those philosophical issues that arise from within the academic discipline of computer science. It is intended to be the philosophical endeavor that stands to computer science as philosophy of mathematics does to mathematics and philosophy of technology does to technology. Indeed, the abstract nature of computer science, coupled with its technological ambitions, ensures that many of the conceptual questions that arise in the philosophies of mathematics and technology have computational analogues. In addition, the subject will draw in variants of some of the central questions in the philosophies of mind, language and science. We shall concentrate on a tightly related group of topics which form the spine of the subject. These include specification, implementation, semantics, programs, programming, correctness, abstraction and computation.via The Philosophy of Computer Science Stanford Encyclopedia of Philosophy.
A must read for anyone interested in computer science.
Why do we need Best practices for Scientific Computing?
A paper on “Best practices for Scientific Computing” was recently published on arXiv. This paper, although authored by many (13 authors for a 6 page paper, one of which are references), isn’t in any way ground breaking. It compiles a set of thumb rules brought from the software development world and tries to shuffle them as a panacea for scientist bad coding practices.
Yes, scientist usually have bad code. But scientists aren’t programmers, and even computer scientists have bad code sometimes. Scientists usually aim at solving a problem and the code is just the tool (usually used like a hammer), and is many times neglected when publishing day arrives.
One of the problems is that although the paper is full of good tips on how to organize your programming activities, it brings into context some notions that many scientists don’t really ever used. The notion of versioning for example, that is so common on the programming world isn’t well understood in other areas. This is just an example, but I feel that the authors (13?, have I talked about that yet?) are mainly preaching for the already converted.
In any case this paper also reveals another problem with science today. A 6 page how to paper authored by 13 (yep, that number again) reveals how some science is being done today. Publish at all cost. Publish even if it is just a compilation of a best practices manual. Publish or get your name into someone else paper. Is this pageview driven science good for society and for science?
Yes, this particular case might be useful for someone that hasn’t thought before on how to organize his code, but otherwise it is just that kind of smart science to improve citation numbers (times 13).
Playing with A* Updated
Just updated the Playing with A* algorithm app so that now one can toggle on and off the use of the heuristic and the use of a cross product tiebreaker. This leads to new variants of the algorithm, mainly the well known Dijkstra algorithm.
This A * application was written in Java, so you’ll need to check your java permissions to run it. You can download the .jnlp file and run it from your computer.
The A* Algorithm (A star) is a pathfinding and graph traversal algorithm. It is widely used in computer science, games, robotics and network science. A thorough overview of the algorithm can be found in Introduction to A* which presents several comparisons and illustrations on the mechanics of the A star algorithm.
Playing with the A* Algorithm
In computer science, A* (pronounced “A star”) is a computer algorithm that is widely used in pathfinding and graph traversal, the process of plotting an efficiently traversable path between points, called nodes. Noted for its performance and accuracy, it enjoys widespread use. [Wikipedia]
My implementation uses a tie-breaker based on the cross product of the vectors from the start to the target and the evaluated node and the target.
The A Star App was coded in java. If your browser doesn’t run java you can download the A Star Jnlp file and run it from your desktop.