Throughout my two-year master's program, my main goal is to become a Secure Software Engineer and gain expertise in both areas. The curriculum covers a broad range of courses, including security-focused subjects and engineering-related topics.
Data Protection and Privacy teaches the latest methodologies for anonymizing different types of data and covers legal aspects related to user data privacy. The final project was focused on studying and developing from scratch an algorithm for anonymization.
kb-anonymizationFunctional and Security Testing Techniques focuses on the fundamentals of functional and security testing of software systems, with a special emphasis on challenges posed by Web and Mobile applications, and introduces automated tools used for testing techniques.
Command Injection Testsuite SQL Injection Testsuite (pytest) Reflected-XSS Testsuite (behave)Digital Forensics involves the collection, examination, analysis, and presentation of digital evidence, using various open-source and commercial forensic tools.
FS Forensics - Inspect, Fix and Retrieve Information from Corrupted FS Network Forensics - Detect Malicious ActivitiesThe Binary Analysis and Secure Coding course aims to raise awareness among developers about how poorly written programs can be exploited by attackers, causing programs to behave in unintended ways. It demonstrates how binary programs can be analyzed, vulnerabilities can be identified, and secure software can be designed and written, free from such vulnerabilities.
Game Hacking - Patching binaries through Hex Editors and Ghidra Shellcoding - Exploiting binaries through shellcodes Binary Exploitation - Exploiting Buffer Overflow and Format String vulnerabilitiesDistributed Computing teaches how to design high-quality distributed systems, ranging from client-server to peer-to-peer and blockchain-based systems. The course applies classical mathematical tools to measure reliability, availability, and fault tolerance.
Discrete Event SimulationVirtualization and Cloud Computing introduces the theoretical and practical foundations of virtualization technologies and focuses on different types of virtualization techniques.
Automatic Integration (Swarm+Ansible)Network Analysis course covers algorithms and techniques for large-scale graph analytics, including centrality measures, connected components, graph clustering, and graph properties for random, small-world, and scale-free graphs.
Analyze and Run Simulations on Wikipedia GraphsMobile Development focuses on how to design and develop mobile apps, with an emphasis on leveraging features like location services, sensors, and gestures found in modern mobile devices. While the concepts are applicable to any mobile operating system, the course places particular emphasis on Android development through the use of real devices and emulators.
mustVisit - using GPT API to find places to visitInternet of Things focuses on learning methods, protocols, architectures, and platforms for the development of distributed and mobile applications for IoT, including machine to machine protocols, distributed algorithms for fault tolerance and replication, service oriented architectures platforms, embedded operating systems, real time and streaming data, geolocation, and collaborative framework.
Transport Monitoring with IoTThe Machine Learning and Data Analysis course teaches data analysis techniques to extract information and new knowledge to support decision-making.
Diabetes PredictionThe Capstone Project course focuses on the development of a realistic project, following a given model of development process, encouraging to think critically, learn how to be autonomous, solve challenging problems, and develop soft skills, as team working, communication, and self-time management.
testQuests - a game to learn about User TestingThe High Performance Computing course focuses on the main aspects of modern high-performance computing systems (pipeline/superscalar processors,shared-memory/message-passing multiprocessors, vector processors, GPUs) and basic programming skills for high-performance computing (cache optimization, OpenMP, CUDA).
Discrete Fourier Transform - OpenMP 2D Heat Conduction - CUDA Mandelbrot - OpenMP and CUDA
During my three years of bachelor's study, the focus was on acquiring a wide range of good practices to become a proficient computer scientist.
Our approach leaned more towards horizontal exploration of numerous subjects rather than an in-depth focus on a single one, thereby introducing us to a diverse array of IT disciplines.
Throughout the three years, the curriculum encompassed both IT-specific courses and mathematics-related ones.
In the first year, I delved into C++ algorithms and data structures, grasped the fundamentals of computer architecture and networks, and studied algebra and calculus.
In the subsequent year, core courses were focused on operating systems (with hands-on labs in C), databases, well-known algorithms in C++ and Python, object-oriented programming using Java, and functional programming through OCaml; I also took courses in algebra and statistics.
In the final year, my studies covered a wide array of topics, including software engineering, computer security, data science, image processing, web applications, and quantum computing.