Programação Avançada usando C, tem como principal objectivo fornecer uma competência sólida no desenvolvimento de programas de média e elevada complexidade. Pelo que, se introduz uma metodologia que procura atingir a descrição final da solução de problemas, por decomposição funcional, através da implementação de tipos abstractos de dados. Outro objectivo principal consiste na aprendizagem de técnicas mais avançadas de análise da solução de problemas, como seja a recursividade. Nesse sentido, são estudados aspectos relacionados com a eficiência das soluções. Especificamente, pretende-se atingir os seguintes objectivos:
O estudo de algoritmos recursivos, como alternativa à decomposição hierárquica das soluções, e a comparação com os algoritmos repetitivos equivalentes;
A gestão da memória dinâmica (heap) e o estudo de estruturas de dados dinâmicas, nomeadamente das listas (lists) e das árvores (trees);
O estudo do paradigma da programação modular, que assenta na implementação de tipos abstractos de dados, começando pelos tipos de dados que modelam elementos matemáticos, como, por exemplo, números complexos, vectores, polinómios, matrizes e conjuntos;
O estudo dos diferentes tipos de memórias, nomeadamente da memória de acesso aleatório (RAM), da memória fila (Queue), da memória pilha (Stack) e da memória associativa (CAM), e dos algoritmos associados para pesquisa, colocação e remoção de informação;
O estudo da implementação de tipos abstractos de dados especializados, nomeadamente da fila com prioridade (Priority Queue) e do grafo (Graph).