Complex Networks - Network Science -2021/2022

This is the page of the Complex Networks course at ENS de Lyon.
This class can be followed by students from different specializations:
The class covers: 1)Fundamentals of Network Science, e.g., Classic random models, centralities, small-world phenomenon, etc. 2)Focus classes on advances topics, e.g., dynamic networks, graph algorithmic, community detection, machine learning on graphs 3)An introduction to cutting-edge research topics, such as Graph embedding and Graph Convolutional Neural Networks (GCN).

This class is thought to provide a broad overview of current topics in Network Science. It is grouded in research, with short presentations by researchers in the field introducing their research questions, collective reading and commenting of recent scientific articles, and experimental applications of key concepts. The objective of the course is to lead the students to a point where they are able to gain a general understanding of most articles currently published in the field.

Overview of the course
The course organisation depends on your specialization: 24h are common to all students (CS+info), 6 hours in January are mandatory only for info students, while 6 hours of practicals are mandatory only for CS students. All students are welcome to attend all classes if they wish.

Previous Versions

The page of last year's course can be found there: 2020/2021.

E-learning setting

I'll wait for further information before setting up the e-learning settings.
You can however already join the Discord Channel of the class, that will allow us to exchange information more easily. You can register using this link : This can be more convenient than e-mails for discussions which are not strictly personal (questions about the class, about exams, etc.).

Program, classes and content

Below is an overview of the courses and practicals. As the classes are done, I'll add my presentation slides, recordings, some notebooks, etc.
This organization can be subject to changes !.

Day Time Room Group Topic Resources
Tuesday Nov.16 8h00-10h00 ? All Introduction, Describing Networks
Thursday Nov. 18 10h15-12h15 ? All Centralities, Gephi, networkx intro
Tuesday Nov. 23 08h00-10h00? All Teacher: Christophe Crespelle. Phase transition in ER random graphs
Thursday Nov. 25 8h00-10h00? CS only (practicals)Data to Network: Scientometric Networks PDF
Thursday Nov. 25 10h15-12h15? All Random Graph Models II, Community Structure
Tuesday Nov. 30 08h00-10h00? All Teacher: Christophe Crespelle. Community detection algorithms.
Thursday Dec. 2 8h00-10h00? CS only (practicals)Data to Network: Movies PDF
Thursday Dec. 2 10:15-12:15? All Community Evaluation, Hypergraphs, Multigraphs, etc.
Tuesday Dec. 7 08h00-10h00? All Visualization - Assortativity
Thursday Dec. 9 8h00-10h00? CS only (practicals)Data to Network: Project
Thursday Dec. 9 10h15-12h15? All Dynamic Networks
Tuesday Dec. 14 8h00-10h00? All Spatial Networks
Thursday Dec. 16 8h00-10h00? CS only (practicals)Data to Network: Project + Optional
Thursday Dec. 16 10h15-12h15? All Spreading Processes
Tuesday Jan. 4 8h00-10h00? All Machine Learning on graphs (Link Prediction, Node Classification)
Thursday Jan. 6 10h15-12h15? All End of article presentations
Tuesday Jan. 11 8h00-10h00? Info only Teacher: Christophe Crespelle. Betweenness centrality and graph editing
Thursday Jan. 13 10h15-12h15? Info only Graph Embedding
Tuesday Jan. 18 8h00-10h00? Info only Graph Convolutional Networks
Thursday Jan. 20 10h15-12h15? Info only TBA


Small network StarWars(.graphml)
Small network Game Of Thrones(.csv)
Medium network Airports(.edges)
Airports with location and country(.graphml)

Dataset collections
There are many network dataset repositories available on the web, here is for instance a collection of collection of networks: network-datasets
A recent addition to this list is Netzschleuder repository, which has the advantage of allowing to load a graph directly from its name. Here is a minimal working example, to load the openflights dataset:

from io import BytesIO
from zipfile import ZipFile
from urllib.request import urlopen
zipfile = ZipFile(BytesIO("edges.csv").decode().split("\n")
g= nx.parse_edgelist(strf,delimiter=",",data=False)


For tutorials and the experimental part of lectures, you need to use some softwares, detailed below.


Gephi is a software for basic graph manipulation and visualization. Although you can't do much in term of graph analysis, it is really convenient to explore and visualize graphs of small to medium size ( < 1000 nodes).
It can be donwloaded there : Gephi.
Gephi requires Java, and suffer from a few bugs on windows (but there is no better alternative). Here are solutions to common problems:


Most of the experiments are done in python. If you're not familiar with this language, there are numerous tutorials on the web. A good one for instance is from w3schools. If you want to be all set-up for experiments, here is a list of packages we will use. Note that some of them are only available with pip, and not anaconda. If you're using anaconda, you can neverthless use them, using the pip command (pip install package_name).
  • networkx. Generic network analysis
  • notebook. Jupyter notebook
  • cdlib. Community detection
  • tnetwork. Temporal networks
  • scikit-learn. Machine learning/Data mining
  • seaborn. ploting library


There will be two grades given in this class:
  • A scientific article presentation. You will have to form groups of 2 to 3 students, choose an article in a list of proposition, and present it in a given time (to define according to the number of groups). Presentations will be done during the last week of december and the first week of January.
  • A Graph Analysis project. CS students must finish their projects by January 4th while Info students have to finish their by January 25th (projects are different, more info coming soon.)