Este material foi desenvolvido para atender às disciplinas básicas de programação do Departamento de Ciência da Computação (DCC) da Universidade Federal de Juiz de Fora (UFJF) que atende diversos cursos desta universidade. Ele abrange o conteúdo programático das disciplinas de Algoritmos e Laboratório de Programação. A linguagem utilizada neste livro é a linguagem C. Vários exercícios contidos neste livro foram extraídos das apresentações que foram criadas para atender às demandas destas disciplinas. Estes exercícios foram revisados e atualizados com a colaboração de todos os professores e monitores que atuaram neste curso a partir de 2009. O primeiro capítulo deste livro tem como objetivo fornecer ao leitor conceitos básicos sobre algoritmos, pseudolinguagem, lógica de programação, linguagem de programação e ambientes de desenvolvimento integrado. O capítulo seguinte apresenta os conceitos de constantes e variáveis e suas formas de utilização. Neste capítulo também são apresentados os primeiros comandos de entrada e saída. A seguir será introduzido o conceito de funções, que permitem, por exemplo, uma melhor modularização do código. Os próximos capítulos tratam das estruturas de controle básicas que são: Sequência Simples, Alternativa e Repetição. Em seguida são apresentadas as estruturas de dados homogêneas e heterogêneas. Um capítulo adicional tratando de arquivos finaliza este trabalho.