Vassilis Komis

52 papers B 7C 2Misc 2Journal 21Unranked 18
YearRankTypeTitle / Venue / Authors
2025 conf
IISA
Dimitris Tsipianitis, Georgios Vlisidis, Alexios Tsetsonis, Konstantinos Lavidas, Anastasia Misirli, Vassilis Komis
2025 J jnl
Comput.
Spyridon Aravantinos, Konstantinos Lavidas, Vassilis Komis, Thanassis Karalis, Stamatios Papadakis
2025 conf
IISA
Dimitris Tsipianitis, Vasilis Koumenteas, Anastasia Misirli, Konstantinos Lavidas, Vassilis Komis
2025 J jnl
Educ. Inf. Technol.
Emmanuel Burguete, Bernard Coulibaly, Vassilis Komis
2025 conf
ANT/EDI40
Dimitrios Tsipianitis, Maria Filippou, Konstantinos Lavidas, Vassilis Komis
2024 conf
ISSEP
Gabriel Parriaux, Jean-Philippe Pellet, Vassilis Komis
2024 J jnl
Inf.
Konstantinos Lavidas, Iro Voulgari, Stamatios Papadakis, Stavros Athanassopoulos, Antigoni Anastasiou, Andromachi Filippidi, Vassilis Komis, Nikos I. Karacapilidis
2024 conf
HAR
Sylvain Luc Agbanglanon, Vassilis Komis
2023 conf
"MIS4TEL (Workshops)
Andromachi Filippidi, Christophoros Karachristos, Konstantinos Lavidas, Vassilis Komis, Nikos I. Karacapilidis
2023 conf
HAR
Anastasia Misirli, Vassilis Komis
2023 J jnl
Technol. Knowl. Learn.
Ioanna Theodoropoulou, Konstantinos Lavidas, Vassilis Komis
2022 J jnl
Comput.
Konstantinos Lavidas, Antonia Petropoulou, Stamatios Papadakis, Zoi Apostolou, Vassilis Komis, Athanassios Jimoyiannis, Vasilis Gialamas
2021 J jnl
Technol. Knowl. Learn.
Kleopatra Nikolopoulou, Vasilis Gialamas, Konstantinos Lavidas, Vassilis Komis
2020 conf
SEEDA-CECNSM
Chrysanthi Tziortzioti, Eirini Mavrommati, Ioannis Chatzigiannakis, Vassilis Komis
2020 C conf
FDG
Iro Voulgari, Konstantinos Lavidas, Vassilis Komis, Stavros Athanassopoulos
2016 conf
EDUROBOTICS
Vassilis Komis, Margarida Romero, Anastasia Misirli
2016 conf
EDUROBOTICS
Raoul Kamga, Margarida Romero, Vassilis Komis, Anastasia Mirsili
2015 J jnl
Int. J. Learn. Technol.
Georgia Virla, Nikolaos K. Tselios, Vassilis Komis
2014 J jnl
Comput. Hum. Behav.
F. Siampou, Vassilis Komis, Nikolaos K. Tselios
2014 B conf
ICALT
Iro Voulgari, Vassilis Komis, Demetrios G. Sampson
2013 C conf
FDG
Iro Voulgari, Vassilis Komis
2012 ch.
Intelligent Adaptation and Personalization Techniques in Computer-Supported Collaborative Learning
Iro Voulgari, Vassilis Komis
2011 conf
Int. Sym. Wikis
Nikolaos K. Tselios, Panagiota Altanopoulou, Vassilis Komis
2011 ch.
Technology-Enhanced Systems and Tools for Collaborative Learning Scaffolding
Georgios Kahrimanis, Nikolaos M. Avouris, Vassilis Komis
2011 conf
VS-GAMES
Iro Voulgari, Vassilis Komis
2011 J jnl
Educ. Inf. Technol.
Giorgos E. Panselinas, Vassilis Komis
2010 conf
INCoS
Iro Voulgari, Vassilis Komis
2010 J jnl
Int. J. Mob. Hum. Comput. Interact.
Christos Sintoris, Adrian G. Stoica, Ioanna Papadimitriou, Nikoleta Yiannoutsou, Vassilis Komis, Nikolaos M. Avouris
2009 Misc conf
IDC
Nikoleta Yiannoutsou, Ioanna Papadimitriou, Vassilis Komis, Nikolaos M. Avouris
2008 J jnl
Interact. Technol. Smart Educ.
Stefania Siozou, Nikolaos K. Tselios, Vassilis Komis
2008 conf
DIGITEL
Iro Voulgari, Vassilis Komis
2008 J jnl
Educ. Inf. Technol.
Nikolaos K. Tselios, Nikolaos M. Avouris, Vassilis Komis
2007 J jnl
J. Comput. Assist. Learn.
Marida Ergazaki, Vassiliki Zogza, Vassilis Komis
2007 J jnl
Comput. Educ.
Vassilis Komis, Marida Ergazaki, Vassiliki Zogza
2006 conf
SETN
Christos Fidas, Panagiotis Politis, Vassilis Komis, Nikolaos M. Avouris
2006 B conf
ICALT
Ioanna Papadimitriou, Georgios Fiotakis, Adrian G. Stoica, Vassilis Komis, Nikolaos M. Avouris
2006 J jnl
J. Educ. Technol. Soc.
Nikolaos K. Tselios, Adrian G. Stoica, Manolis Maragoudakis, Nikolaos M. Avouris, Vassilis Komis
2006 Misc conf
AIAI
Christos Fidas, Nikolaos M. Avouris, Vassilis Komis, Panagiotis Politis
2005 J jnl
Comput. Educ.
Christos Fidas, Vassilis Komis, Spyros Tzanavaris, Nikolaos M. Avouris
2005 J jnl
Comput. Hum. Behav.
George Fesakis, Angelique Dimitracopoulou, Vassilis Komis
2004 J jnl
J. Educ. Technol. Soc.
Nikolaos M. Avouris, Vassilis Komis, Meletis Margaritis, Georgios Fiotakis
2004 B conf
ICALT
Angelique Dimitracopoulou, Vassilis Komis
2004 B conf
ICALT
Michalis Nik Xenos, Nikolaos M. Avouris, Vassilis Komis, Dimitris Stavrinoudis, Meletis Margaritis
2004 B conf
ICALT
Meletis Margaritis, Nikolaos M. Avouris, Vassilis Komis
2003 conf
CSCL
Vassilis Komis, Nikolaos M. Avouris, Christos Fidas
2003 B conf
ICALT
Nikolaos M. Avouris, Vassilis Komis, Georgios Fiotakis, Meletis Margaritis
2003 J jnl
Comput. Hum. Behav.
Nikolaos M. Avouris, Angelique Dimitracopoulou, Vassilis Komis
2003 B conf
ICALT
Nikolaos M. Avouris, Meletis Margaritis, Vassilis Komis
2002 conf
CSCL
Christos Fidas, Vassilis Komis, Nikolaos M. Avouris, Angelique Dimitracopoulou
2002 J jnl
Educ. Inf. Technol.
Vassilis Komis, Nikolaos M. Avouris, Christos Fidas
2002 conf
CSCL
Nikolaos M. Avouris, Angelique Dimitracopoulou, Vassilis Komis, Christos Fidas
2001 J jnl
Comput. Educ.
Athanassios Jimoyiannis, Vassilis Komis
redb/extractors/decompiler/bninja/similarity/minhasher.py
← Index redb/extractors/decompiler/bninja/similarity/minhasher.py python
import logging
import random
from enum import Enum

from ..analysis.medium_level_normalization import MediumLevelNormalization

try:
    from .minhashcustom import MinHashCustom
    from ..analysis.low_level_normalization import LowLevelNormalization
except ImportError:
    # Fallback to absolute imports (for multiprocessing spawned processes)
    from redb.extractors.decompiler.bninja.similarity.minhashcustom import MinHashCustom
    from redb.extractors.decompiler.bninja.analysis.low_level_normalization import LowLevelNormalization

## Values for this configuration were extracted from https://github.com/danielplohmann/mcrit/blob/main/mcrit/config/MinHashConfig.py#L10
# Length in number of Shingles of which a minhash consists
# this value represents the length of sha256sum hash truncated
MINHASH_SIGNATURE_LENGTH: int = 64
# Number of bits per signature element (1-32 bits)
MINHASH_SIGNATURE_BITS: int = 8


class TokenKind(Enum):
    LLIL = "llil"
    TYPED_LLIL = "typed_llil"
    MLIL = "mlil"
    TYPED_MLIL = "typed_mlil"


class MinHasher:
    # stick to the default method
    MINHASH_STRATEGY_HASH_ALL = 1

    def __init__(self, seed, il_function, kind: TokenKind = TokenKind.LLIL):
        self._minhash_seeds = []
        self.il_func = il_function
        self.kind = kind
        self._minhash_permutation = []
        self._signature_segments = []
        self._initMinhashing(seed)

    def _initMinhashing(self, MINHASH_SEED=None):
        random.seed(MINHASH_SEED)
        # init sequence of seeds
        self._minhash_seeds = [
            random.randint(0, MinHashCustom.getHashMax()) for _ in range(MINHASH_SIGNATURE_LENGTH)
        ]

    def make_ngrams(self, tokens, n=3):
        """Take the ngrams of the IL we try to pass into the functions"""
        return [tuple(tokens[i:i+n]) for i in range(len(tokens) - n + 1)]

    def _extract_tokens(self):
        """Extract the IL tokens from the IL function, picking the right
        normalizer (LLIL/MLIL) and the right normalization mode
        (skeleton/typed) based on self.kind."""
        if self.kind in (TokenKind.LLIL, TokenKind.TYPED_LLIL):
            normalizer = LowLevelNormalization()
        elif self.kind in (TokenKind.MLIL, TokenKind.TYPED_MLIL):
            normalizer = MediumLevelNormalization()
        else:
            raise ValueError(f"Unsupported token kind: {self.kind}")

        # typed variants include operand type info, skeleton variants don't
        if self.kind in (TokenKind.TYPED_LLIL, TokenKind.TYPED_MLIL):
            normalize = normalizer.normalize_instr_with_operands
        else:
            normalize = normalizer.normalize_instruction_all_levels

        instructions = []
        for basic_block in self.il_func.basic_blocks:
            for il in basic_block:
                instructions.append(normalize(il))

        return instructions

    def calculateMinHash(self):
        """Calculate hash function every time, then take minimum shingle per shingler"""
        minhash_result = MinHashCustom(minhash_bits=MINHASH_SIGNATURE_BITS)
        minhash_signature = []

        tokens = self._extract_tokens()
        shingles = self.make_ngrams(tokens, n=3)

        # Functions with fewer than 3 IL instructions can't produce n-grams
        # Return empty minhash for such small functions (thunks, stubs, etc.)
        # Triggered by 39d8ad95b0323c37bd3134ab93ac4af44c66a1a8443a41c1ac02cec19bb2816a
        if not shingles:
            return []

        # Generate the MinHash
        for seed in self._minhash_seeds:
            hashed_shingles = [
                self.shingle_hash(shingle, seed) for shingle in shingles
            ]
            min_value = min(hashed_shingles)

            if MINHASH_SIGNATURE_BITS < 32:
                min_value %= (2 ** MINHASH_SIGNATURE_BITS)

            minhash_signature.append(min_value)

        minhash_result.setMinHash(minhash_signature)
        return minhash_result.getMinHashInt()

    def shingle_hash(self, shingle, hash_seed=0):
        """Produce a single 32bit UINT hash for a given shingle"""
        return MinHashCustom.hashData(shingle, hash_seed)