Deep learning techniques and architectures have proliferated and are becoming increasingly specialized in dealing with practical challenges in science and engineering. This course concentrates on the analysis of two broad groups of deep learning networks: graph neural networks (GNNs) and generative adversarial networks (GANs). For both classes of networks, we introduce the fundamental mechanisms that govern their operations. Among other things, we show that most of basic classes of deep learning networks could be understood as a specialization of GNNs which observer specific symmetry principles. We provide a series practical illustrations of use of GNNs and GANs. For GNNs, we dive into the analysis of neural molecular fingerprints or quantitative structure property relationship and simulations of fluid motion. For GANs, we examine in full detail the generation of realistic people images and speech. In both classes of networks, we learn how to impose constraints that are reflections of various physical or geometric laws governing behavior of analyzed or generated systems. Examples used in the course and homework assignments are given using Keras (TensorFlow 2.x) and PyTorch application programming interfaces (APIs).