O objetivo deste curso é fornecer conhecimento para apoiar o uso eficaz de ferramentas de inteligência artificial generativa no desenvolvimento de software. Para isso, apresentaremos uma visão geral da arquitetura dos grandes modelos de linguagem (LLMs, da sigla em inglês) atualmente mais usados, identificando suas vantagens e limitações. Discutiremos o potencial de adaptação de modelos pré-treinados para tarefas específicas, como ajuste fino e aprendizado no contexto, com um foco particular neste último, introduzindo vários padrões de engenharia de prompts. Em seguida, exploraremos vários casos de uso de como equipes de desenvolvimento de software em todo o mundo estão empregando efetivamente esses modelos para diferentes atividades de engenharia de software. Também realizaremos exercícios práticos para vivenciar alguns desses usos.