- I am a brazilian computer engineering student currently working on my engineering thesis project at the Laboratory of Computer Networks and Architecture - LARC at the University of São Paulo, Brazil 🇧🇷
- Graduate from the engineering program at Ecole Polytechnique 🇫🇷
- Worked as a web developer in the Brazilian edtech Ada Tech
- Summer internship at STMicroelectronics in Crolles, France
- Six-months "end-of-studies" internship at Arm in Sophia-Antipolis, France
- In high school, I participated on many different science olympiads, won over 20 awards and was a gold medalist in the Brazilian Informatics Olympiad
In this Github page, you'll find my more recent projects as well as university courses at both Ecole polytechnique and the University of São Paulo.
📫 Please feel free to reach out to me at gabriel.pereira-de-carvalho.2022@polytechnique.org :)
And please consider checking out my personal website at arkhamknightgpc.github.io.
- Courses at the University of São Paulo
- Ecole polytechnique courses
- INF564: Compilation
- INF567: Wireless Networks (Problem Sheets)
- INF567: Wireless Networks (Project)
- PHY581C: ASIC Design with Cadence Virtuoso
- PHY564A: Open Electronics (Final Project)
- PHY564: Open Electronics (Starter Project)
- INF554: Machine and Deep Learning
- INF557: Fundamentals of Computer Networking
- PHY573A: Micro and Nano electronics Experimental Designs
- PHY559A: Conception of Digital and Analog Integrated Circuits
- PHY473R: FPGA Lab Course
- INF442: Data Analysis in C++
- INF443: 3D Computer Graphics with C++/OpenGL
- INF421: Algorithms Design (Course Project)
- MAP412: Numerical Analysis
- MAP433: Statistics
- MAP432: Markov Chains and Martingales
- PHY431: Special Relativity and Variational Mechanics
- INF371: Object-Oriented Programming
- Polytechnique Tronc Commun
- Other projects
- Personal works in progress
This repository contains the VHDL code for HADES, a dedicated digital hardware architecture for SHA-3 extendable-output functions with decoupled I/O stages developed as part of my engineering thesis project at the University of São Paulo. Synthesis metrics are presented using the Yosys synthesis tool and the OpenSTA static timing analyser. Both 32-bit and 64-bit versions of HADES are provided.
This repository contains a NEORV32 based RISC-V System-on-Chip(SoC) integrating a customized stream-processor peripheral called HADES via the NEORV32 Stream Link Interface (SLINK) and memory-mapped control registers. In this project, 32-bit HADES is explored as a hardware accelerator for SHA-3 security primitives targeting code-based digital signature scheme CROSS presented as a candidate in the NIST Post-Quantum Cryptography (PQC) standardization process. The RISC-V system built here was developed as part of my engineering thesis project at the University of São Paulo to compare runtime metrics for the CROSS reference SHA-3 software implementation against calls to the HADES hardware implementation.
SystemVerilog implementation for the PoliLEGv8 processor presented in Digital Systems Design course at the University of São Paulo.
AI Hardware Attack Challenge for inserting and detecting hardware trojans using LLMs. The competition is a satellite event of IEEE HOST 2026.
Assignments and project for the FMCW Radar course at the University of São Paulo.
Unofficial LaTeX package for documents and presentations for EPUSP (Escola Politécnica da Universidade de São Paulo).
Assignments from the Compilation course at Ecole polytechnique. Assignements include: x86 assembly programs, an interpreter for a fragment of the Python language, a parser (made with Jflex and CUP) for a small logo language and a compiler project for a fragment of Java.
Problem sets from the Wireless Networks course at Ecole polytechnique. Topics covered include: physical modelisation of wireless signal propagation, probabilistic WiFi throughput analysis, analysis of 4G peak data rates and DL latency for different frame structures and analysis of different performance metrics for LoRa and SigFox.
Project developed for the course INF567: Wireless Networks at Ecole polytechnique. The goal of this project is to explore the zero-forcing beamforming technique proposed in a scientific paper for Physical Layer Security(PLS) to prevent both active and passive eavesdropping on VLC systems and attempt to replicate their results with Python simulations.
The goal of this project is to design an ASIC for a single-photon photodetector readout (known as SiPM or Silicon Photo-electron Multiplier). The circuit must perform high speed, low noise amplification and discrimination to allow pico-second timing measurement. The circuit was designed using Cadence Virtuoso and a library of TSMC components was used for layout.
Stepmania based group game project for PHY564A Open Electronics course at Ecole polytechnique. The project has two components: a pygame application running on a Raspberry Pi 3 Model B+, and a wireless controller based on a ESP32 microcontroller with LED buttons and a 3D case made with Autodesk Fusion. Communication between the Raspberry Pi and the controller is done via Bluetooth Low Energy using GATT notifications.
This mini project was developed on the first few weeks of the Open Electronics course at Ecole polytechnique. A ESP32 MCU captures the reading of an LDR, and communicates sensor data to a Raspberry Pi via MQTT. The Raspberry Pi uses a Fourier Transform to determine if the light readings correspond to natural light or not and sends a message back to the ESP32 via MQTT to lower/raise the blinders (controlled by a step motor).
Jupyter Notebook assignments from the course Machine and Deep learning (with PyTorch) at Ecole polytechnique. Topics covered include: SVMs, MLPs, CNNs, RNNs, Graph Neural Networks.
Assignments from the course Fundamentals of Computer Networking at Ecole polytechnique. Includes paper assignments in LaTeX with state machines for different transport layer algorithms, message charts as well as coding assignments (introductory tutorials in C, simplified wget command line application and DV routing implementation).
The objective of this experimental module was to implement the design of transistor based on carbon nanotubes. In more detail, the synthesis of carbon nanotubes by CVD(chemical vapor deposition) approach, the characterization of the latter (SEM microscopy, Raman spectroscopy) and finally the design and characterization of transistors based on these nanotubes were explored in the project.
Spice lab session from the course PHY559A (Conception of Digital and Analog Integrated Circuits) at Ecole polytechnique. The purpose of this lab is to introduce SPICE for electrical circuit simulation and study static and dynamical characteristics of the CMOS inverter.
Handwritten digit detection on FPGA project from the FPGA lab course at École polytechnique. This project implements Rosenblatt's perceptron for binary classification of 0/1 digits on FPGA using VHDL. The project was developed on a Altera DE2-115 board and includes interfaces with a VGA monitor, an LCD and a TRDB-DC2 camera.
Assignments from the Data Analysis in C++ course at École polytechnique. Includes implementations of the kd-tree data structure for KNN, Voronoi partitions and Lloyd's algorithm, hierarchical clustering, kernel density estimators, SVM and simple neural networks.
Assignments from the course 3D computer graphics at École polytechnique using C++ and OpenGL. Includes implementations of shader effects, Phong shading, procedural 3D modelisation, textures, animation and physical simulation.
Evolutionary algorithms project for an informatics course at École Polytechnique. Includes complexity proofs using fitness levels and empirical performance analysis on benchmark functions.
Jupyter notebook assignments from a numerical analysis course at École polytechnique, includes analysis of finite precision floating point calculations, polynomial interpolation algorithms, numerical integration methods, linear system solvers, numerical methods for non-linear systems, numerical methods for ODEs and parabolical EDPs.
Problem sets from a statistics course at École polytechnique. Includes theory-oriented problem sets with solutions in Latex and jupyter notebook assignments with analysis of datasets like the Titanic dataset(DM2) and the Breast Cancer Wisconsin Dataset(EN3).
A homework assignment for MAP432: Markov Chains and Martingales at École polytechnique. Explores the Metropolis-Hastings algorithm and the Doeblin criterion.
Assignments from the course PHY431: Special relativity and variational mechanics at École polytechnique. Assignments cover classical relativistic paradoxes, computations in Minkowski spacetime, Euler-Lagrange equations, Lagrangian mechanics, electromagnetic tensors, Hamiltonian mechanics and the Feynman principle.
Assignements from the course INF371: Mechanisms of Object-Oriented Programming Languages at École polytechnique. Includes OO implementations of the union find data structure, linked lists, hash tables. Graphical applications using Java AWT to explore inheritance concepts, including a calculator to explore expression parsing. And a compiler assignement for the simplified while language.
Some homework assignments for first year courses in maths and physics at École polytechnique (Analysis, Probability Theory and Quantum Mechanics). Solutions are provided in Latex. A project on spatial properties of hash tables was done in a separate repository.
Solutions to competitive programming problems. Includes C++ implementations of Fast Fourier Transform, Wavelet Trees, the Aho-Corasick automaton, Dynamic connectivity, Reachability Trees, Heavy-Light decomposition, Manacher's algorithm, Li Chao Trees for the Convex Hull Optimization technique in dynamic programming problems, Merge Sort Trees, Persistent Segment Trees, Fast Kuhn algorithm for the maximum bipartite matching problem, Treaps (randomized binary search trees) and Tarjan's algorithm for finding bridges and articulation points in trees.
Solutions to Codechef problems! Includes topics in number theory, graphs, fenwick trees, dynamic programming, game theory, greedy algorithms and more!
Group project developed for the IP Paris Swarm Rescue Competition. The project consists of a comparative analysis of different approaches to teach a swarm of drones how to behave to save a maximum of injured people in a minimum of time on a simulated environment.
Group project for an Object Oriented Programming Lab at University of São Paulo. Web application using the Java SpringBoot framework to create personalised news feeds based on a user's preferred news websites. Bootstrap was used for the frontend and a word cloud feature was implemented using the Kumo library and the Aho Corasick automaton for pattern matching and frequency counting.
IP Tracker made using Next.js and the react-leaflet package.
Group project for a Digital Systems Lab at University of São Paulo. VHDL project for a security system using an ultrasonic sensor and a servo motor. Can be controlled using a Processing application through MQTT messaging.
Bare metal application implementing process switching in an ARM based processor emulator.
Project from a Microprocessors Lab at University of São Paulo. Simple keyboard driver built using the gcc-arm-none-eabi toolchain on the qemu-system-arm system emulator for the ARM Versatile board.
VHDL and SystemVerilog implementations of a pipelined multi-core MIPS machine.
Study repository with an implementation of a minimal subset of the RISC-V instruction set written in SpinalHDL.
Study repository with solutions to selected exercises from the book "Guide to FPGA implementation of arithmetic functions". Exercise solutions include testbenches for verification.



