Data Structures and Algorithms: mastering concepts like stacks, queues, singly
and doubly linked lists, as well as tree data structures and related algorithms (see
github).
Object-Oriented Programming (OOP) in Java: covering its key concepts and
applying them in a project (see PROJECTS).
C Programming: including memory manipulation, Makefile, and CMakeLists,
implemented during a fully developed group project (see PROJECTS).
Computer Architecture: exploring fundamentals, including some assembly
programming.
Networking: setting up a small email server in Python, learning networking
protocols and models, and practicing with tools like QEMU, implementing firewalls, and more.
Bordeaux University Second year
Data Structures and Algorithms: mastering concepts like stacks, queues, singly
and doubly linked lists, as well as tree data structures and related algorithms (see
github).
Object-Oriented Programming (OOP) in Java: covering its key concepts and
applying them in a project (see PROJECTS).
C Programming: including memory manipulation, Makefile, and CMakeLists,
implemented during a fully developed group project (see PROJECTS).
Computer Architecture: exploring fundamentals, including some assembly
programming.
Networking: setting up a small email server in Python, learning networking
protocols and models, and practicing with tools like QEMU, implementing firewalls, and more.
Bordeaux University Last year
Functional Programming: learning OCaml concepts such as anonymous functions,
pattern matching, tail recursion, efficiency, sorting algorithms, strong typing, and graph
algorithms (e.g., trees, Dijkstra's algorithm, and other key algorithms).
Explored graph traversal methods such as depth-first search (DFS) and breadth-first search
(BFS), and analyzed their complexity.
Theory of Languages: studied determinization, regular expressions, Glushkov’s
algorithm, minimization techniques, the pumping lemma, residuals, Arden’s lemma, and Thompson’s
construction algorithm.
System Programming: learned how to use Linux input/output mechanisms (file
descriptors 0, 1, 2) and performed low-level programming using system calls such as
write, open, close, and read.
Shell Project: implemented advanced shell functionalities, including
redirections, multiple pipelines, background commands, and more.