Complex Networks - Network Science -2021/2022

NOTE : This is the page for last year (2021/2022). The class will have some important changes this year, in particular a focus on Graph Neural Networks taught by Adrien Guille for the students in the M2 in Foundations of Computer Science.

Introduction
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).

Objectives
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

From November 29, teachings at ENS must offer a way to be followed online. Here are the links, different for Tuesday and Thursday:
Tuesday
Thursday
Please be on-time: due to technical limitations, we have to authorize entrence manually.

You can also join the Discord Channel of the class, that will allow us to exchange information more easily. You can register using this link : https://discord.gg/Gv3hGzDek4. This can be more convenient than e-mails for discussions which are not strictly personal (questions about the class, about exams, etc.).

Rooms

Please be careful that we have different rooms on Monday and Tuesday. Both are in the Monod site at ENS de Lyon.
Amphi B is accessible from floor 3-4 (Computer Science department)
Amphi C is accessible from the ground floor (Physics department). Room E001 is accessible from the ground floor (Physics department).

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 B All Introduction, Describing Networks Cheatsheet intro
Cheatsheet mat.
slides
Recording
Thursday Nov. 18 10h15-12h15 C All Centralities, Gephi, networkx intro Cheatsheet
XP Gephi
XP networkx
slides
Recording
Tuesday Nov. 23 08h00-10h00B All Teacher: Christophe Crespelle. Phase transition in ER random graphsRecording
slides
Thursday Nov. 25 8h00-10h00E001 linux CompSys (practicals)Data to Network: Scientometric Networks Pandas
Python datastructures
Practical
Thursday Nov. 25 10h15-12h15C All Random Graph Models II Cheatsheet random
Cheatsheet SF
Experiments
Recording
slides
Tuesday Nov. 30 08h00-10h00B All Teacher: Christophe Crespelle. Community detection algorithms.Recording
slides
Thursday Dec. 2 8h00-10h00E001 linux CompSys (practicals)Data to Network: Movies PDF
Thursday Dec. 2 10:15-12:15C All Communities 2, Community Evaluation. Experiments
slides
Cheatsheet
Recording
Tuesday Dec. 7 08h00-10h00B All Visualization - AssortativityExperiments
Cheatsheet
slides
Recording
Thursday Dec. 9 8h00-10h00D2 à Descartes CompSys (practicals)Data to Network: Project
Thursday Dec. 9 10h15-12h15C All Dynamic NetworksExperiments
Cheatsheet
slides
Record. (2021, incomplete) Record. (2020)
Tuesday Dec. 14 8h00-10h00B All Spatial NetworksExperiments
Cheatsheet
slides
Recording
Thursday Dec. 16 8h00-10h00E001 linux CompSys (practicals)Data to Network: Project
Thursday Dec. 16 10h15-12h15C All Spreading ProcessesExperiments
Cheatsheet
slides
Recording
Tuesday Jan. 4 8h00-10h00B All ML on graphs (ONLINE) + article presentation (1)Experiments
Cheatsheet
slides
Recording(2020)
Thursday Jan. 6 10h15-12h15C All Article presentation (2)
Tuesday Jan. 11 8h00-10h00B CompSci Teacher: Christophe Crespelle. Complex networks as almost structured graphsRecording
Thursday Jan. 13 10h15-12h15B1 CompSci Graph EmbeddingExperiments
Cheatsheet
slides
Tuesday Jan. 18 8h00-10h00B CompSci Graph Convolutional Networks - ProjectCheatsheet
ex: Link Prediction
ex: Node Classification
Thursday Jan. 20 10h15-12h15B1 CompSci Article presentation (3)


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)

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.
Gephi requires Java, and suffer from a few bugs on windows (but there is no better alternative). Here are solutions to common problems:

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. 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

Exams



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 first classes in January (Complex systems/Cognitive Science) Or during the last class (Computer Science). Please report to Discord for details or to the e-mails you received
  • A Graph Analysis project. CS students must finish their projects by January 6th while Info students have to finish their by Sunday 30th. The description of the project is available there: Project
    You can find some examples of last year's projects there. (Please send your project as a notebook, I converted them here as PDF for convenience)