Algorithms are fundamental to computer science and software engineering. The real-world performance of any software system depends on only two things: (1) the algorithms chosen and (2) the suitability and efficiency of the various layers of implementation. Good algorithm design is therefore crucial for the performance of al l software systems. Moreover, the study of algorithms provides insight into the intrinsic nature of the problem as well as possible solution techniques independent of programming language, programming paradigm, computer hardware, or any other implementation aspect. An important part of computing is the ability to select algorithms appropriate to particular purposes and to apply them, recognizing the possibility that no suitable algorithm may exist. This facility relies on understanding the range of algorithms that address an important set of well-defined problems, recognizing their strengths and weaknesses, and their suitability in particular contexts. Efficiency is a pervasive theme throughout this area.

in IEEECS-ACM Computing Curricula 2001

O objectivo principal da disciplina de Algoritmos e Complexidade é a introdução de técnicas para o desenho e análise de algoritmos. O ênfase é colocado nos algoritmos como objectos passíveis de serem analisados formalmente, mas também nos aspectos pragmáticos da sua execução. Esta abordagem requer pois dos alunos um trabalho quer ao nível teórico quer ao nível prático, laboratorial.