This introductory book introduces the fundamental principles of neural networks and their diverse applications. It explains neural networks from the perspective of differentiable programming, providing an intuitive introduction to function optimization methods through automatic differentiation and common neural network architectures (e.g., convolutions, attention, and recurrent blocks) for sequence, graph, text, and audio processing. Code examples using PyTorch and JAX connect theory and practice, facilitating an understanding of advanced models such as large-scale language models (LLMs) and multimodal architectures.