Bachelor in Computer Science and Engineering (LEI) | 2nd Year - 2nd Semester
This repository contains the functional programming projects developed for the Languages and Programming Environments (Linguagens e Ambientes de Programação) course at the Faculty of Sciences and Technology of the NOVA University of Lisbon (NOVA FCT).
- Tomás Alves (Student No. 68681) - Projects 1,2 & 3
- Miguel Carmo (Student No. 65871) - Projects 2 & 3
The LAP course introduces different programming paradigms, with a very strong focus on Functional Programming using OCaml. It covers advanced recursion, higher-order functions, algebraic data types, and immutable data structures.
The repository is divided into two main folders containing the different projects:
- Type: Individual Project
- Description: A functional application built to simulate and calculate scores for a game of Darts ("Bullseye"). It involves validating dart board hits, calculating round scores, and determining game states using pure functional logic.
- Documentation:
- Location:
- Type: Group Project
- Description: Implementation of a simulator for Petri Nets. The project models places, transitions, and token distribution mathematically. It calculates the evolution of the net state by verifying transition conditions and executing valid firings.
- Documentation:
- Location:
- Functional Programming: Deep understanding of the functional paradigm, avoiding mutable state and side effects.
- OCaml & Dune: Mastery of the OCaml language syntax, type inference system, and the
dunebuild system. - Algebraic Data Types & Pattern Matching: Designing complex data structures and handling them safely with exhaustive pattern matching.
- Higher-Order Functions & Recursion: Processing collections and states using
map,fold,filter, and tail-recursive functions. - Mathematical Modeling: Translating mathematical models (like Petri Nets) into programmatic functional logic.
Copyright © 2026 Alvesss04. All Rights Reserved.