Base Technologies Theme
Coordinators:
Pere Mato,
CERN |
This theme presents a selection of advanced underlying computing technologies which are particularly relevant in the context of scientific computing, and serve as a basis to construct higher level services services such as those offered by Grid Technologies. They include software engineering, computer architectures, computing security and networking topics
The first topic addresses computer security with a particular focus on two aspects: cryptography, authentication and security infrastructures on the one hand, and the creation of secure software on the other hand. The latter series includes hand-on exercises.
The second and third series of lectures describes the evolution and the state of the art of computer architectures, discusses the bottlenecks and the consequences of this evolution on software design and optimization. It presents principles for writing software that scales with the hardware, techniques for hardware and software performance monitoring and issues related to the impact of compilers on performances.
The theme is complemented by a series of lectures on networking, which presents principles, methods and techniques for improving quality of service and network performance.
|
Creating Secure Software |
||
Session |
Description |
Lecturer |
Lecture 1 |
Introduction to computer security First lecture starts with a definition of computer security and an explanation of why it is so difficult to achieve. The lecture highlights the importance of proper threat modelling and risk assessment. It then presents three complementary methods of mitigating threats: protection, detection, reaction; and tries to prove that security through obscurity is not a good choice. |
|
Lecture 2 |
Security in different phases of software development The second lecture addresses the following question: how to create secure software? It introduces the main security principles (like least-privilege, or defense-in-depth) and discusses security in different phases of the software development cycle. The emphasis is put on the implementation part: most common pitfalls and security bugs are listed, followed by advice on best practice for security development. |
|
Lecture 3 |
Web application security, exercise
debriefing This third hour consists of a debriefing of the exercises, and in particular those web-related. Various vulnerabilities typical to web applications (such as Cross-site scripting, SQL injection, cross-site request forgery etc.) are introduced and discussed. |
|
Exercise 1 Exercise 2 Exercise 3 |
Avoiding, detecting and removing software security vulnerabilities
In
the practice session, a range of typical security
vulnerabilities will be presented. The goal is to learn how
they can be exploited (for privilege escalation, data
confidentiality compromise etc.), how to correct them, and
how to avoid them in the first place! Students will be given
small pieces of source code in different programming
languages, and will be asked to find vulnerabilities and fix
them. The online course documentation will gradually reveal
more and more information to help students in this task.
Additionally, students will have a chance to try several
source code analysis tools, and see how such tools can help
them find functionality bugs and security vulnerabilities. |
|
Prerequisite and References |
Desirable Prerequisite
Books
|
Computer Architecture and Performance Tuning |
||
Session |
Description |
Lecturer |
Lecture 1 |
Understanding scalable hardware |
|
Lecture 2 |
Software that scales with the hardware
In the second part of this double lecture we will
discuss several strategies which can allow
software to scale to the maximum resource
potential in a given architecture. These
strategies are based on both data and task
parallelism. We will stress the importance
of a Data Oriented Design and also mention
the issue of “performance portability”
across platforms. Some important factors
related to programming styles will be
reviewed. To back up everything with
evidence, several scalable examples from
physics will be portrayed. |
|
Lecture 3 |
Performance Optimization |
|
Exercise 1 Exercise 2 Exercise 3 |
Exercises 1, 2 and 3 |
|
Prerequisite and References |
Desirable Prerequisite
|
|
Software Design in the Many-Cores Era |
||
Session |
Description |
Lecturer |
Lecture 1 |
Physics and Computing
Challenges to Experiment Software |
|
Lecture 2 |
Concurrent
Programming in Action I |
|
Lecture 3 |
Concurrent
Programming in Action II |
|
Exercise 1 Exercise 2 |
Exercise 1 & 2 The
exercises will cover the topics of lectures
1 and 2 at a hands on basis, based on C++11
and TBB. It covers examples for the new
C++11 functionality related to threads and
thread safety. In addition there will be
examples for concurrent access to data, lock
and lock-free data structures, and task
based programming. |
|
Prerequisite and References |
References
|
Networking |
||
Session |
Description |
Lecturer |
Lecture 1 |
Internet QoS options Improving Quality of Service guarantees and performances in data network is a key requirement of Grid computing. Indeed, fast transfers require high-bit rate connections, and grid operation requires network predictability and high availability. On the other hand, the Internet historical technology is not naturally best suited to deterministic behaviour. This lecture explains the technical challenges and the range of options available to improve QoS guarantees in Internet-based networks. |
|
Lecture 2 |
Multimedia over the Internet The Grid is not only a network of computer resources but also a network of people cooperating to use these resources. Part of the collaborative tools scientists are increasingly using include audio and video systems. They place new challenging requirements on the networking systems. The class discusses these requirements and their consequences on the end-systems as well as within the underlying network. |
|
Prerequisite and References |
Desirable Prerequisite Participants will draw maximum benefits from the lectures if they have a fair knowledge of computer network principles, in particular the concepts of
Books
Vikipedia Computer Networking (http://en.wikipedia.org/wiki/Computer_networks) Other Links |