The aim of this course is to provide all doctoral students with a common core of knowledge and understanding about the fundamental concepts, principles and methods of contemporary computer science. The course is meant to be accessible to students with different backgrounds and possibly with limited previous exposure to computer science. It will bring these students to the level at which they can profitably follow the more advanced courses of the computer science curriculum.
To achieve this aim, the course will consist of two complementary parts. The first part will provide the basic notions and vocabulary of computer science. This part will cover the following topics:
- Classical models of computation
- Data representation and data structures
- Recursion, reflection and self-reference
- Computational complexity
- Computing architectures
- Distributed computation
The second part will use the above notions and vocabulary to explore some advanced topics that characterize modern developments of computer science. Examples of these topics are:
- Massively distributed systems, including ubiquitous computing, the Internet of Things, cyber-physical systems
- Unconventional models of computation, including spatial computing, amorphous computing, dynamic system models, quantum computing
- Formal models of computation, including modal, temporal and dynamic logics
- Self-properties, including autonomic computing and aware computing
The selection of the specific advanced topics to be addressed in the course will be made on a year-by-year basis, depending on the background, the educational needs and the research interests of the participating students.