General
About CSC
Organisation

People
Process for CSC hosting
School Models
Role of Local Organisers
Other Roles

Participants
Past Schools

2004 2005 2006 2007 2008 2009 2010 2011

Diploma at CSC
Sport at CSC
Inverted CSCs

iCSC05 iCSC06 iCSC08 iCSC10 iCSC11

Special schools

School@chep06


Inverted School 2010

8-9 March 2010


CSC2010

CSC2010 Overview

Practical Information
Programme
Schedule
Lecturers
Participants
Organizers

 
Examination results
How to apply
 
CSC-Live

inverted CERN School of Computing 2010 8-9-March 2010, CERN

Programme Overview

 

All questions

Software management and optimization

Visualisation

System Monitoring Details of All Lectures

Schedule

Lecturers

Lecturer Bios

 

Mentors

Printable Version

iCSC2010 Software Management and Optimization

Details of all lectures

Series: Living OO Design
Lecture: Introduction to UML for Developers and OO Best Practices

A few questions addressed in the lecture

Monday 8 March

 

10:00 10:55

Lecture
1

Introduction to UML for Developers and OO Best Practices

 

Tim Muenchen
Bergische Universität Wuppertal - Germany

Introduction to the series of two lectures
In High Energy Physics, as in most areas of Science, using Computers to simulate, analyse and interpret physical data has become indispensable in the last decades, as the sheer amount of data one has to process has grown to dimensions difficult to handle manually. On top of that, the usage of object orientation is on the advance, replacing legacy programming languages like Fortran by modern ones like (among others) C++, Java and Python.

 

Though, one can not just carry programming style and concepts from procedural languages to object oriented languages and hope to benefit from the advantages of this new programming paradigm. Instead, there are numerous things to keep in mind to produce working, error-free and performing - but also understandable, maintainable and expandable - object oriented software designs.

 

This series of two lectures aims to sensitize the "object oriented programming physicist" to things he or she should be aware of and keep in mind to fully utilize the OO-paradigm.

 

First lecture:
Introduction to UML for Developers and OO Best Practices

In this lecture, a powerful tool to express, communicate and record software design concepts, ideas and structures is briefly presented: the Universal Modeling Language.

 

Albeit being a complex and complete language to describe most aspects of (not only) software design, we will focus on the single most useful part of the UML when talking about OO best practices and patterns: the Class Diagram. This is then used in all of the rest of the series to visualize the concepts presented.

 

The main part of the lecture, then, focuses on ten best practices every OO-developer should know. The best practices and the reasons for them being crucial are described and deepened by examples and anecdotes.

 

Audience and benefits
This series of two lectures targets physicists designing and implementing  physics analysis code, event generators and the like in object-oriented languages like C++, as well as more junior developers of software infrastructure libraries used at CERN.

On top of that, every interested programmer can benefit from the concepts presented in these lectures.

 

In this first lecture, attendees will be sensitized to things to know and keep in  mind when designing software systems to ensure the best possible quality of  systems in terms of maintainability, flexibility and extensibility, comprehensibility and stability.

You will learn about a few simple rules to adhere that will help in make your design better in respect to those criteria, and what to avoid in designing software.

 

Before that, the UML class diagram is introduced briefly as means to communicate design concepts and to visualize the Best Practices presented in this lecture, and the Design Patterns in lecture 2.

 

Pre-requisite
Attendees should have basic knowledge about object-oriented programming, concepts and idioms, as well as object-oriented programming languages like C++ and Java."

 

Series: Living OO Design

Lecture: Design Patterns and Anti-Patterns

A few questions addressed in the lecture

Monday 8 March

11:05 12:00

Lecture 2

Design Patterns and Anti-Patterns

Tim Muenchen
Bergische Universität Wuppertal - Germany

Introduction to the series of two lectures

In High Energy Physics, as in most areas of Science, using Computers to simulate, analyse and interpret physical data has become indispensable in the last decades, as the sheer amount of data one has to process has grown to dimensions difficult to handle manually. On top of that, the usage of object orientation is on the advance, replacing legacy programming languages like Fortran by modern ones like (among others) C++, Java and Python.

 

Though, one can not just carry programming style and concepts from procedural languages to object oriented languages and hope to benefit from the advantages of this new programming paradigm. Instead, there are numerous things to keep in mind to produce working, error-free and performing - but also understandable, maintainable and expandable - object oriented software designs.

 

This series of two lectures aims to sensitize the "object oriented programming physicist" to things he should be aware of and keep in mind to fully utilize the OO-paradigm.

 

Second lecture:
Design Patterns and Anti-Patterns

In this second lecture of the series, after the core ideas in designing maintainable and well-designed software have been shown in lecture 1, a powerful concept is presented: the Design Pattern. Being reusable "blue print" design snippets - as opposed to reusable pieces of code or libraries - such patterns help in establishing high-quality software designs without "reinventing the wheel".

Furthermore, Design Patterns fulfil the very important role of establishing a common vocabulary between software engineers and developers, leveraging knowledge transfer in and between teams of software developers and turning software designs into building blocks of software that are easy to understand and easy to recognize.

 

After a few popular Design Patterns are presented and examples are given, the second big topic of this lecture are the so-called "Anti Patterns" - the exact opposite of Design Patterns. These describe things to avoid when designing a software system, albeit looking just like "the right thing to do". We will try to explain why those look so good, and what the consequences are.

 

Audience

This lecture builds up on lecture 1. Attendees will learn about established  Design Patterns that can be used to ease creating object-oriented software designs and to streamline the application of the design Best Practices presented in the first lecture.

Furthermore, Anti-Patterns are introduced that show typical things not to do when designing software that lead to common problems, although seeming attractive and easy to apply on the first sight, and thus are very dangerous.

 

 Pre-requisite
To draw maximum benefits from this lecture, the attendant should preferably have followed lecture 1.

 

How to make web applications run faster

A few questions addressed in the lecture

   

Monday 8 March

 

14:00 - 14:55

Lecture 3

How to make web applications run faster

David Horat

Description

Response time in web applications is one of the most important issues today. The whole stack of intermediate software we use to deliver web interfaces added to the increasing popularity of web services make web applications very slow.

 

In this lecture we will present several methods on how to improve web applications response time based on optimizations and knowledge on HTML, HTTP and other web protocols.

Audience
Web developers

 

Pre-requisite

HTML as well as  basics on related web technologies

 

Distributed version control using Git: Get more efficient managing your code

A few questions addressed in the lecture

Monday 8 March

15:05 16:00

Lecture 4

Distributed version control using Git: Get more efficient managing your code

David Svantesson

 Description

 Distributed version control allow you to work more efficient and with greater flexibility while keeping most of the benefits of a centralized versioning system. This lecture aims to explain why and how you use it and how it differ from for example CVS and svn.

The history of development from local to centralized (e.g. CVS and svn) to distributed version control systems will be covered, explaining the difference between them and their benefits and drawbacks.

The lecture will contain a discussion on different work-flows for collaborating in a group and how a distributed version system give you more flexibility in this perspective.

For practical examples, Git will be used (http://git-scm.com/). An introduction to Git and basic as well as more advanced usage will be given. This includes the use of branches and how to rewrite the version history.

 

Audience
This lecture is intended for software developers or anyone wanting to improve their management of source code, whether it be for personal use of in large collaborations.

 

Pre-requisite

To draw maximum benefits of the lecture, it is an advantage to have some experience of using version control systems before (e.g. CVS or svn) but it is not essential for understanding the lecture.

 

Recent Advances in Multivariate Data Visualisation

A few questions addressed in the lecture

Monday 8 March

16:30 - 17:25

Lecture 5

Recent Advances in Multivariate Data Visualisation

Benjamin Radburn-Smith

Presentation
The aim of this lecture is to make the audience aware of alternative visualisation techniques available and the possible benefits that might arise from using them on their data.

 

Audience
This lecture targets anyone who has multivariate data; that is to say data containing many variables, which they want to analyse. Particle Physics data will be used in the demonstrations.

 Pre-requisite
This lecture can be followed by anyone who has some experience of data analysis and data visualisation.

 

SNMP for monitoring and operating devices

A few questions addressed in the lecture

Tuesday 9 March

09:00 - 09:55

Lecture 6

SNMP for monitoring and operating devices

Uwe Westerhof

Description

This lecture will give an overview of the Simple Network Management Protocol (SNMP) from a users point of view. It will provide the basic knowledge to use SNMP productively.

 

The lecture will explain the concepts of SNMP including MIB definition files, the communication protocol and security aspects.

 

At the end, examples will be given showing the management of different hardware components via SNMP.

 

Audience
This lecture targets anyone interested in monitoring and controlling network attached hardware, like switches, printers, power supplies or servers.

Pre-requisite

This lecture can be followed by anyone without requiring special knowledge in network management or network technologies.

 

Series: Advanced Tools for system data collection:

Lecture: Logs in software: How to record the what, the when and the who

A few questions addressed in the lecture

Tuesday 9 March

10:30 - 11:25

Lecture 7

Logs in software:
How to record the what, the when and the who

Luis Muñoz Mejías

Description

In this part we'll highlight the relevance of having good quality logs that are easy to understand by both humans and machines. We'll describe the properties good logs must have (relevant contents, unambiguous timestamping, easy classification, integrity...), and the existing tools designed to meet these requirements, with examples for both developers (what and how to log) and system administrators (what to do with those logs). Real-world examples of good and bad practices will be shown, together with some ideas for improvement.

 

Audience
Software developers and, perhaps, system administrators.

 

Pre-requisite

Understanding of UNIX systems. Programming experience with C/C++/Perl/Python/Java will help.

 

Series: Advanced tools for system data collection:

Lecture: Systemtap - Tapping the Linux Kernel to Find out What Your Machine is Really Doing

A few questions addressed in the lecture

Tuesday 9 March

11:35 - 12:25

Lecture 8

Systemtap - Tapping the Linux Kernel to Find out What Your Machine is Really Doing

Malte Nuhn

Description

This lecture introduces Systemtap, a free software (GPL) infrastructure to simplify the gathering of information about the running Linux system.

The lecture's first part points out in which situations administrators and developers are often lacking information when diagnosing performance or functional problems.

A short overview about the Linux Kernel is given, enabling the listener to get a feeling, which information is accessible and might be interesting in his specific use-case.

Next, a brief overview of Systemtap's inner workings is given.  Therefore, common probing techniques, their prerequisites, possible risks and downsides are presented. This part ends by showing how these techniques are accessible in Systemtap and what is needed to get them to run.

The lecture's last part introduces Systemtap's scripting language. It explains a couple of commonly used scripts and shows how the listener can practically introduce them to his own logging and monitoring environment.

 

Audience
This lecture targets developers and administrators who are running/ developing software on Linux servers. This lecture will introduce a powerful toolchain, allowing the listener to finally get a grip on his Linux server.

 

Pre-requisite

To draw maximum benefits of the lecture, the attendant should preferably have some experience in Linux System administration and/or programming. This lecture can be reasonably followed without having attended the first lecture of this series.

 

iCSC
All on iCSCs
News
Registration
Handouts
Programme
Schedule
All questions

Software management and optimization

Lecture1

Lecture2

Lecture3

Lecture4

Living OO Design series

All theme lectures

Visualisation

Lecture5

System monitoring

Lecture6

Lecture7

Lecture8

All theme lectures

 
All iCSC Lectures
 
FAQ
 
Social event

Feedback: Computing (dot) School (at) cern (dot) ch
Last update: Monday, 18. June 2012 09:43

Copyright CERN