If you are interested in a research internship around Network Science, check The projects I propose.

Complex Networks - Network Science - 2024/2025

Introduction
This is the page of the Complex Networks course at ENS de Lyon., in the Complex System option

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. Teachers for lectures are Rémy Cazabet and Pierre Borgnat. Practicals are independently teached by Juliana Du.

Objectives
This class is thought to provide a broad overview of current topics in Network Science. It is grounded in research. 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
There are 24h of lectures and 8h of practicals. The lectures by me (Rémy Cazabet) are divided in 4 parts of 4h each, composed of 2 hours of lectures and 2 hours of experiments. The experiments are taught by Célestin Coquidé. They are conducted in python, using notebooks. The course is given in English, unless all students are French speakers.


Program, classes and content

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

-->
Day Time Room Teacher Topic Resources
Thursday Sep. 12 8h00-10h00 F Rémy Cazabet Lecture: Introduction, Describing Networks, Centralities CheatSheet_intro - CheatSheet_matrices - CheatSheet_centralities - Slides
Thursday Sep.26 10h15-12h15 F Rémy Cazabet Lecture: Random Graphs Lecture - CheatSheet_RandomGraphs - CheatSheet_ScaleFree - CheatSheet_Spatial
Thursday Oct.03 10h15-12h15 F Célestin Coquidé Experiments: Gephi, networkx intro TP1 - TP2
Thursday Oct. 17 10h15-12h15 F Célestin Coquidé Experiments: Random Graphs TP
Thursday Oct. 24 10h15-12h15F Rémy Cazabet Lecture: Communities + ML classic Lecture
CheatSheet communities
CheatSheet Machine Learning
Thursday Nov. 7 10h15-12h15F Pierre Borgnat Spreading processes ; Dynamic on networks
Thursday Nov. 14 10h15-12h15F Célestin Coquidé Experiments: Communities TP communities
Thursday Nov. 28 10h15-12h15F Pierre Borgnat Graph Signal processing
Tuesday Dec. 3 10h15-12h15F Pierre Borgnat Representation Learning for graphs ; embeddings
Thursday Dec. 5 10h15-12h15F Rémy Cazabet Lecture: Dynamic of Networks + dynamic communities Lecture
CheatSheet Dynamic
Thursday Dec. 12 10h15-12h15F Rémy Cazabet Experiments: Dynamic of networks
Thursday Dec. 19 10h15-12h15F Célestin Coquidé Higher Order Networks


Day Time Room Teacher Topic Resources
Thursday Oct. 10 10h15-12h00 F Practicals + Project Scientometrics practicals
Thursday Nov. 28 8h00-10h00 F Project Project
You can find some examples of previous years' projects there
Thursday Dec. 5 8h00-10h00 F Project
Thursday Dec. 12 8h00-10h00 F project


Networks


Small networks
Small network Game Of Thrones(.graphml)
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
address="https://networks.skewed.de/net/openflights/files/openflights.csv.zip"
resp=urlopen(address)
zipfile = ZipFile(BytesIO(resp.read()))
strf=zipfile.read("edges.csv").decode().split("\n")
g= nx.parse_edgelist(strf,delimiter=",",data=False)

More generally, if you want to find data of interest, I provide here some tips to find them.

Tools

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

Gephi

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.

Python

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. You don't need to install anything, since you can do all the experiments using an online notebook such as Google colab. If you prefer to use a local installation on your computer, 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

Exams

There will be two grades given in this class:
  • A network analysis project. Send before December 17, 23h59. (40%)
  • The description of the project is available there: Project
    You can work in groups of 2 or 3 students. You must clarify what each student has done (graes can be personnalized).
    You can find some examples of previous years' projects there.
  • A final Exam (60%). All documents allowed (no computers). This exam covers classes by all teachers. You can find an exam from a previous year there. Note that the program was not exactly the same, but it gives an idea of the kind of questions you can have on my part.