Skip to content
This repository was archived by the owner on Aug 25, 2025. It is now read-only.

NhanPhamThanh-IT/Academic-Labs-Collection

Repository files navigation

Academic Labs Collection

Overview

This repository contains a collection of academic laboratory projects and implementations across various computer science and mathematical disciplines. Each project is self-contained with its own documentation, source code, and resources, representing work in fields such as cryptography, machine learning, statistics, and algorithm design.

Repository Structure

The repository is organized into the following main projects:

Cryptography Projects

An implementation of the Diffie-Hellman key exchange protocol in two variants:

  • Diffie-Hellman over Prime Fields
  • Diffie-Hellman over Elliptic Curves

Technologies: C++ (C++17)

A beginner-friendly exploration of RSA encryption and decryption, covering key generation, encryption, and decryption processes.

Technologies: C++ (C++17)

Data Science & Machine Learning

Implementation of logistic regression using gradient descent optimization, with feature mapping capabilities for non-linear decision boundaries.

Technologies: Python

Mathematics & Statistics

A collection of Jupyter notebooks and implementations of Monte Carlo simulation methods for statistical analysis and random number generation.

Technologies: Python, Jupyter Notebooks

Theoretical Computer Science

A comprehensive collection of number theory concepts and their implementations relevant to competitive programming:

  • Binary Exponentiation
  • Modular Arithmetic & Inverse
  • Euclidean Algorithms (GCD/LCM)
  • Sieve of Eratosthenes
  • Prime Factorization
  • Linear Diophantine Equations
  • Chinese Remainder Theorem
  • Fermat Theorem

Technologies: Various programming languages

Detailed exploration of recursion concepts, including:

  • Comparison between tail recursion and normal recursion
  • Differences between recursion, induction, and iteration
  • Implicit recursion
  • Various types of recursive functions and their properties

Technologies: Various programming languages

Getting Started

Each project folder contains its own README.md with specific instructions for setup, execution, and exploration of the particular concept or algorithm. Navigate to the project of interest and follow the instructions provided.

Prerequisites

Different projects have different prerequisites. Common requirements across projects include:

  • Programming Languages: C++17, Python 3.x
  • Tools: Jupyter Notebook for statistical and data science projects
  • Libraries: Standard libraries as specified in project documentation

Documentation

Each project contains its own documentation in the following forms:

  • README files explaining the project structure and usage
  • Theory documents in /doc folders explaining the underlying concepts
  • Problem statements in /problem or /doc directories
  • Inline code comments explaining the implementation details

License

Individual projects may have their own license files. Please refer to the LICENSE file in each project directory for specific licensing information.

Acknowledgements

These projects were completed as part of various academic courses and research endeavors in computer science, mathematics, and related fields. The theoretical foundations are based on established academic literature in the respective domains.


Last updated: June 14, 2025

About

πŸ§‘β€πŸ’» Academic-Labs-Collection is a growing repository of academic lab projects, including cryptography, machine learning, statistics, number theory, and algorithms. Designed for students and educators, it provides organized resources and code samples, with plans for continuous expansion and new lab additions.

Topics

Resources

Stars

Watchers

Forks

Contributors