O objetivo deste livro é fornecer suporte ao estudo da Programação Matemática e sua teoria de máximos e mínimos em uma introdução aos métodos de otimização. Este material é um apanhado de vários temas, em geral, encontrados dispersos na literatura e foi feito com o intuito de resumir a teoria de maneira simples e prática. Neste sentido, um conhecimento prévio das noções de cálculo diferencial, álgebra linear, probabilidade e programação Python deve ser complementado paralelamente ao desenvolvimento sistemático dos alunos iniciantes. Com estes requisitos, além dos conceitos básicos sobre máximos e mínimos, a composição dos tópicos foi elaborada em duas formulações: (1) Modelos determinísticos em Programação Linear com o método Simplex Primal-Dual e em Programação Não Linear com Gradiente descendente, Matriz Hessiana e Multiplicadores de Lagrange; (2) Modelos probabilísticos com Enxame de Partículas, Algoritmos Genéticos e Otimização Bayesiana. Todos os tópicos descrevem problemas interessantes, como aplicações dos conceitos estudados, acompanhados de exemplos resolvidos e suas respectivas soluções disponibilizadas em código de programação Python. Assim, este livro destina-se tanto a alunos iniciando a graduação em Ciência da Computação ou Engenharia quanto àqueles que estão em estudos mais avançados em teoria de otimização.