The purpose of this course is the understanding of the core fundamentals and concepts of Programmic Languages design. Some of the topics examined are:
- Syntactic Analysis
- Functional Programming
- Types and Type Inference
- Variable Scope
- Memory Management and Activation Records
- Object Oriented Programming
- Exceptions
- Parameter Passing
- Logical Programming
This repo is dedicated to the assignments of the course, in which we had to implement algorithms in the following programming languages:
- C++
- SML-NJ
- Java
- SWI-Prolog
Following up, we present the problems and the languages used for each one:
- Skitrip (C++, SML-NJ and SWI-Prolog)
Problem: Given a list of numbers, find the longest interval for which the left bound number is smaller than the right bound number.
- Spacedeli (C++ and SML-NJ)
Problem: Apply Dijkstra's algorithm for finding the shortest path and distance between two nodes. In this problem, the graph needed to have 2 levels and the weights of the edges were all equal to 1.
- Villages (SML-NJ and Java)
Problem: Apply Union-Find algorithm to count the groups of nodes in a graph.
- Moredeli (SML-NJ, Java and SWI-Prolog)
Problem: Apply Dijkstra's algorithm to find the shortest path and distance between two nodes. In this problem, the graph had 1 level and the weights of the edges were not equal.
- Hopping (C++ and SWI-Prolog)
Problem: The problem supposes that we have a ladder with broken steps and a set
$S$ of possible steps we can make. We have to find with how many different ways, one can climb that stair.