Este curso trata da criao de programas com mltiplas threads (multithread, multitarefa). As threads podem executar em paralelismo real, no caso de processadores multicore, ou pseudo-paralelismo atravs do escalonamento provido pelo sistema operacional. As threads trocam dados atravs de variveis compartilhadas e usam mecanismos de sincronizao para coordenar suas execues. Embora os conceitos apresentados no curso sejam vlidos para diferentes linguagens de programao e sistemas operacionais, vamos utilizar especificamente a linguagem de programao C e a biblioteca Pthreads disponvel no Linux para os exemplos. Ao longo de todo o curso a nfase est na programao. As abstraes e primitivas presentes nas Pthreads so descritas atravs de cdigos exemplo funcionais, ou seja, que compilam e executam. As aulas so apresentadas a partir de cdigo exemplo completo, o qual fica disponvel para download como um recurso do curso. O padro POSIX Threads (Pthreads) foi criado pela IEEE para padronizar a utilizao de threads em diversos sistemas. Atualmente existem implementaes da API Pthreads para vrias linguagens e sistemas operacionais. Ele muito utilizado, em particular, no desenvolvimento de aplicaes do tipo “embedded system” e “Internet das Coisas”.No curso so apresentados inicialmente os conceitos que norteiam a programao concorrente em geral e a programao multithread em particular. Em seguida so mostrados os aspectos bsicos tais como criar thread, esperar por thread, sincronizar threads, etc. Finalmente, so explorados os recursos mais avanados da API Pthreads, tais como sincronizao em barreira e do tipo leitor/escritor. Tambm sero tratados aspectos fundamentais como deadlocks, excluso mtua, atomicidade, condies de corrida e outros. Ao final do curso desenvolvido um pequeno projeto para ilustrar os diversos conceitos e recursos apresentados ao longo das aulas. Em termos de ferramentas computacionais, ser usado apenas um computador com o sistema operacional Linux, um editor de texto (gedit ou outro qualquer) e o compilador gcc. Tambm possvel usar um computador Windows com o WSL2 instalado. claro que alunos acostumados com outros ambientes de programao, tais como as IDE Visual Studio Code ou Eclipse, podem usa-las. Porm elas no fazem parte do escopo do curso.