The aim of this course is to present an approach which is and evidently will remain stable for a long time regardless of technical and technological mutations.
In fact, contrary to systems which are always undergoing the stress of their time and which respond to the demands of permanently evolving aims, this course presents the fundamental principles of computer science, particularly the algorithm.
Even today the typical image of computer science is unfairly reduced to that of a machine and a human trying to solve a problem. This image , which owes a lot to the banalisation of computer science is simply the media element of a proper science which expresses its principles, methods, demands and values. It is also a poor image in that it hids several aspects of a discipline whose increasing complexity is reflected in its presence in almost every sector of human activity today. It is and will remain unthinkable to conceive of a type of engineer today or tomorrow without informatics skills. Even if they won’t have to program themselves they have and will have to juggle with the potential of computing.
This potential is inscribed in the foundational state of computer science in that it commands the whole by preceding and situating all other practical aspects. It defines, in advance the horizon and limits evolution to what is or seems technically possible.
So firstly we shall speak od problems and their resolution without worrying about the effective mediation of machines and languages. Secondly we shall study the effective passage of algorithmic solutions brought to machines. This second part will be an introduction to programming.