Representing molecules in the form of graph is natural. The atoms can be viewed as nodes and chemical bonds as edges of the graph as in Fig. . Each node in graph is represented by a nodal feature vector such as atomic features in molecules and potentially label properties in the node-level tasks. For edges, in addition to representing the connectivity of nodes in graph, they can also have edge features such as the chemical bound types. Each graph can have global graph-level properties such as the HOMO-LUMO gap for a specific molecular graph. GCNNs employ a message-passing framework to represent the interactions of nodes, the centerpiece of which is graph convolutional (GC) layers. In each GC layer, messaging passing is performed sequentially with three steps, i.e., message preparation, aggregation, and nodal state update. In message preparation, each node wraps a message, e.g., a vector, based on their current state with a message function and then sends out the message through edges to their neighbours. In message aggregation, the nodes collect the messages received from their neighbours and aggregate the messages with an aggregation function. The aggregated message is then used to update the node together with its current state via an update function. After the message passing in one GC layer, all nodal states are updated with information gathered from their immediate neighbour nodes. With multiple GC layers stacked together, messages are passed to nodes that are further away. In molecules, a single GC layer can be used to approximate pair-wise atomic interactions, while the many-body effects are implicitly represented by stacking many GC layers together. A variety of GCNNs have been developed to better represent the atomic systems, such as crystal GCNN (CGCNN) for crystalline materials, MEGNet for both molecules and crystals , as well as ALIGNN that adds the bond angles in the model. More details about GCNNs can be found in .