Ido Roll

64 papers A* 1A 8B 20Journal 15Unranked 18
YearRankTypeTitle / Venue / Authors
2026 J jnl
Comput. Educ.
Inbal Klein-Avraham, Rut Ston, Osnat Atias, Ido Roll, Ayelet Baram-Tsabari
2025 J jnl
Int. J. Artif. Intell. Educ.
Maya Usher, Ido Roll, Orly Fuhrman, Ofra Amir
2025 J jnl
Int. J. Artif. Intell. Educ.
Jade Maï Cock, Ido Roll, Tanja Käser
2025 conf
AIED (5)
Jade Maï Cock, Valentine Delevaux, Ido Roll, Richard Lee Davis, Tanja Käser
2025 J jnl
Int. J. Artif. Intell. Educ.
Maya Usher, Ido Roll, Orly Fuhrman, Ofra Amir
2025 conf
AIED (5)
Eman Ganaiem, Tanja Käser, Ido Roll
2025 conf
AIED (3)
Shir Drive, Ido Roll
2024 J jnl
Int. J. Artif. Intell. Educ.
Ilana Ram, Sara Harris, Ido Roll
2023 conf
AIED (Posters/Late Breaking Results/...)
Jade Maï Cock, Ido Roll, Tanja Käser
2023 conf
AIED (Posters/Late Breaking Results/...)
Jonathan Ben-David, Ido Roll
2023 J jnl
Interact. Learn. Environ.
Letitia Englund, F. Moosvi, Ido Roll
2023 A conf
AIED
Janan Saba, Manu Kapur, Ido Roll
2022 J jnl
Comput. Hum. Behav.
Heather L. O'Brien, Ido Roll, Andrea Kampen, Nilou Davoudi
2021 J jnl
Comput. Educ.
Kyoungwon Seo, Samuel Dodson, Negar M. Harandi, Nathan Roberson, Sidney S. Fels, Ido Roll
2021 ed.
AIED (1)
Ido Roll, Danielle S. McNamara, Sergey A. Sosnovsky, Rose Luckin, Vania Dimitrova
2021 ed.
AIED (2)
Ido Roll, Danielle S. McNamara, Sergey A. Sosnovsky, Rose Luckin, Vania Dimitrova
2021 B conf
L@S
Ido Roll, Ilana Ram, Sara Harris
2020 B conf
L@S
Kyoungwon Seo, Sidney S. Fels, Dongwook Yoon, Ido Roll, Samuel Dodson, Matthew Fong
2019 A* conf
CHI
Matin Yarmand, Dongwook Yoon, Samuel Dodson, Ido Roll, Sidney S. Fels
2019 B conf
L@S
Matthew Fong, Samuel Dodson, Negar Mohaghegh Harandi, Kyoungwon Seo, Dongwook Yoon, Ido Roll, Sidney S. Fels
2019 conf
AIED (2)
Charleen Brand, Jonathan Massey-Allard, Sarah Perez, Nikol Rummel, Ido Roll
2018 B conf
CHIIR
Samuel Dodson, Ido Roll, Matthew Fong, Dongwook Yoon, Negar M. Harandi, Sidney S. Fels
2018 B conf
L@S
Samuel Dodson, Ido Roll, Matthew Fong, Dongwook Yoon, Negar M. Harandi, Sidney S. Fels
2018 conf
AIED (2)
Sarah Perez, Jonathan Massey-Allard, Joss Ives, Deborah Butler, Doug A. Bonn, Jeff Bale, Ido Roll
2018 J jnl
Int. J. Artif. Intell. Educ.
Ido Roll, Daniel M. Russell, Dragan Gasevic
2018 conf
JCDL
Matthew Fong, Samuel Dodson, Xueqin Zhang, Ido Roll, Sidney S. Fels
2017 B conf
L@S
Lauren Fratamico, Sarah Perez, Ido Roll
2017 J jnl
Int. J. Artif. Intell. Educ.
Lauren Fratamico, Cristina Conati, Samad Kardan, Ido Roll
2017 A conf
AIED
Sarah Perez, Jonathan Massey-Allard, Deborah Butler, Joss Ives, Doug A. Bonn, Nikki Yee, Ido Roll
2016 B conf
Graphics Interface
Matthew Fong, Gregor Miller, Xueqin Zhang, Ido Roll, Christina Hendricks, Sidney S. Fels
2016 J jnl
Int. J. Artif. Intell. Educ.
Ido Roll, Ruth Wylie
2016 J jnl
Int. J. Artif. Intell. Educ.
Vincent Aleven, Ido Roll, Bruce M. McLaren, Kenneth R. Koedinger
2016 B ed.
L@S
Jeff Haywood, Vincent Aleven, Judy Kay, Ido Roll
2015 A conf
AIED
Cristina Conati, Lauren Fratamico, Samad Kardan, Ido Roll
2015 B conf
L@S
Ido Roll, Leah Macfadyen, Debra Sandilands
2014 conf
ICLS
Benjamin S. Goldberg, Robert A. Sottilare, Ido Roll, Susanne P. Lajoie, Eric G. Poitras, Gautam Biswas, James René Segedy, John S. Kinnebrew, Elaine Stampfer Wiese, Yanjin Long, Vincent Aleven, Kenneth R. Koedinger, Phil Winne
2014 conf
ICLS
Steven Lonn, Christopher Brooks, Zachary A. Pardos, Barry W. Peddycord III, Emily Schneider, Ido Roll, Ashley Shaw
2014 conf
ICLS
Ido Roll, Adriana Briseno, Nikki Yee, Ashley Welsh
2014 B conf
Intelligent Tutoring Systems
Ido Roll, Nikki Yee, Adriana Briseno
2014 B conf
Intelligent Tutoring Systems
Samad Kardan, Ido Roll, Cristina Conati
2014 J jnl
J. Learn. Anal.
Ido Roll, Philip H. Winne
2013 conf
AIED Workshops
Ido Roll, Natasha G. Holmes, James Day, Anthony H. K. Park, D. A. Bonn
2012 conf
ICLS
Paulo Blikstein, Marcelo Worsley, Bruce Sherin, Ryan Baker, Matthew Berland, Taylor Martin, Ido Roll, Vincent Aleven, Ken Koedinger, Arnon Hershkovitz
2011 A conf
AIED
Ido Roll, Vincent Aleven, Bruce M. McLaren, Kenneth R. Koedinger
2011 B conf
CogSci
Ido Roll, Vincent Aleven, Kenneth R. Koedinger
2010 conf
ICLS
Ido Roll, Vincent Aleven, Kenneth R. Koedinger
2010 conf
ICLS
Ido Roll, Manolis Mavrikis, Sergio Gutiérrez Santos
2010 B conf
Intelligent Tutoring Systems (1)
Ido Roll, Vincent Aleven, Kenneth R. Koedinger
2008 J jnl
User Model. User Adapt. Interact.
Ryan Shaun Joazeiro de Baker, Albert T. Corbett, Ido Roll, Kenneth R. Koedinger
2007 A conf
AIED
Ido Roll, Vincent Aleven, Bruce M. McLaren, Kenneth R. Koedinger
2007 A conf
AIED
Ido Roll, Vincent Aleven, Roger Azevedo, Ryan Shaun Joazeiro de Baker, Gautam Biswas, Cristina Conati, Amanda Harris, Rosemary Luckin, Antonija Mitrovic, Tom Murray, Barbara White, Philip H. Winne
2006 B conf
Intelligent Tutoring Systems
Ryan Shaun Joazeiro de Baker, Albert T. Corbett, Kenneth R. Koedinger, Shelley Evenson, Ido Roll, Angela Z. Wagner, Meghan Naim, Jay Raspat, Daniel J. Baker, Joseph E. Beck
2006 B conf
Intelligent Tutoring Systems
Ryan Shaun Joazeiro de Baker, Albert T. Corbett, Kenneth R. Koedinger, Ido Roll
2006 B conf
Intelligent Tutoring Systems
Ido Roll, Vincent Aleven, Bruce M. McLaren, Eunjeong Ryu, Ryan Shaun Joazeiro de Baker, Kenneth R. Koedinger
2006 J jnl
Int. J. Artif. Intell. Educ.
Vincent Aleven, Bruce M. McLaren, Ido Roll, Kenneth R. Koedinger
2006 B conf
Intelligent Tutoring Systems
Ido Roll, Eunjeong Ryu, Jonathan Sewall, Brett Leber, Bruce M. McLaren, Vincent Aleven, Kenneth R. Koedinger
2005 A conf
AIED
Vincent Aleven, Ido Roll, Bruce M. McLaren, Eunjeong Ryu, Kenneth R. Koedinger
2005 conf
User Modeling
Ryan Shaun Baker, Albert T. Corbett, Kenneth R. Koedinger, Ido Roll
2005 A conf
AIED
Ryan Shaun Baker, Ido Roll, Albert T. Corbett, Kenneth R. Koedinger
2005 conf
User Modeling
Ido Roll, Ryan Shaun Baker, Vincent Aleven, Bruce M. McLaren, Kenneth R. Koedinger
2004 B conf
Intelligent Tutoring Systems
Ido Roll, Ryan Shaun Baker, Vincent Aleven, Kenneth R. Koedinger
2004 B conf
Intelligent Tutoring Systems
Ido Roll, Vincent Aleven, Kenneth R. Koedinger
2004 B conf
Intelligent Tutoring Systems
Vincent Aleven, Bruce M. McLaren, Ido Roll, Kenneth R. Koedinger
2004 conf
ICCM
Ido Roll, Ryan Shaun Baker, Vincent Aleven, Kenneth R. Koedinger
docs/apk-code-schema.md
← Index docs/apk-code-schema.md markdown
# APK Code Analysis — ClickHouse Schema

All tables follow the `ReplacingMergeTree(analysis_date)` pattern from
`docs/new-code-binja-schema.md`, except `code_apk_analysis_errors` which
uses `MergeTree()`.

**Companion PDD:** `APK_CODE_ANALYSIS_PDD-Tech_Annex.md` §7

---

## Table overview

| # | Table | Analog (Binja) | Engine | Key |
|---|-------|----------------|--------|-----|
| 1 | `code_apk_decompiled_methods_content` | `code_binja_decompiled_functions_content` | ReplacingMergeTree | `decompiled_method_hash` |
| 2 | `code_apk_decompiled_methods_references` | `code_binja_decompiled_functions_references` | ReplacingMergeTree | `(sha256, decompiled_method_hash)` |
| 3 | `code_apk_smali_methods_content` | `code_binja_disassembled_functions_content` | ReplacingMergeTree | `smali_method_hash` |
| 4 | `code_apk_smali_methods_references` | `code_binja_disassembled_functions_references` | ReplacingMergeTree | `(sha256, smali_method_hash)` |
| 5 | `code_apk_method_similarity_metrics` | `code_binja_function_similarity_metrics` | ReplacingMergeTree | `smali_method_hash` |
| 6 | `code_apk_cfg_methods` | `code_binja_cfg_functions` | ReplacingMergeTree | `smali_method_hash` |
| 7 | `code_binja_strings_raw` *(shared)* | — | Null (→ MV) | — |
| 8 | `code_apk_analysis_errors` | `function_analysis_errors_binja` | MergeTree | `(sha256, error_location, error_hash)` |

---

## Table 1: `code_apk_decompiled_methods_content`

**Analog:** `code_binja_decompiled_functions_content`

```sql
CREATE TABLE IF NOT EXISTS code_apk_decompiled_methods_content (
    decompiled_method_hash FixedString(64),          -- SHA-256 of normalized Java source
    decompiled_method String CODEC(ZSTD(3)),          -- Full Java method source
    decompiled_method_type Enum8('USER'=1, 'LIBRARY'=2, 'UNKNOWN'=5) DEFAULT 'UNKNOWN',
    decompiled_has_string_encryption UInt8 DEFAULT 0,
    decompiled_has_reflection_calls UInt8 DEFAULT 0,
    decompiled_excessive_goto_count UInt8 DEFAULT 0,
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_method_content_token lower(decompiled_method) TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY decompiled_method_hash;
```

## Table 2: `code_apk_decompiled_methods_references`

**Analog:** `code_binja_decompiled_functions_references`

```sql
CREATE TABLE IF NOT EXISTS code_apk_decompiled_methods_references (
    sha256 FixedString(64),
    decompiled_method_hash FixedString(64),
    smali_method_hash Nullable(FixedString(64)),
    decompiled_class_name LowCardinality(String),
    decompiled_method_name LowCardinality(String),
    decompiled_method_signature String,               -- Dalvik descriptor: (Landroid/os/Bundle;)V
    decompiled_method_prototype String,               -- Java-style: void onCreate(Bundle)
    functions_caller Array(String),
    functions_call Array(String),
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_decompiled_class_name decompiled_class_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
    INDEX idx_decompiled_method_name decompiled_method_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
    INDEX idx_functions_caller functions_caller TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
    INDEX idx_functions_call functions_call TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY (sha256, decompiled_method_hash);
```

## Table 3: `code_apk_smali_methods_content`

**Analog:** `code_binja_disassembled_functions_content`

```sql
CREATE TABLE IF NOT EXISTS code_apk_smali_methods_content (
    smali_method_hash FixedString(64),                -- SHA-256 of normalized smali body
    smali_method String CODEC(ZSTD(3)),               -- Full smali method body
    smali_method_type Enum8('USER'=1, 'LIBRARY'=2, 'UNKNOWN'=5) DEFAULT 'UNKNOWN',
    smali_instructions_count UInt32,
    smali_register_count UInt16,
    smali_has_string_encryption UInt8 DEFAULT 0,
    smali_has_reflection_calls UInt8 DEFAULT 0,
    smali_excessive_goto_count UInt8 DEFAULT 0,
    smali_flattened_score Float64 DEFAULT 0.0,       -- Control flow flattening score (0.01.0)
    smali_mba_score Float64 DEFAULT 0.0,             -- Mixed boolean-arithmetic score (0.01.0)
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_smali_ngram smali_method TYPE ngrambf_v1(3, 32768, 3, 0) GRANULARITY 1,
    INDEX idx_smali_method_type smali_method_type TYPE set(3) GRANULARITY 1,
    INDEX idx_smali_instr_count smali_instructions_count TYPE minmax GRANULARITY 4,
    INDEX idx_smali_reg_count smali_register_count TYPE minmax GRANULARITY 4,
    INDEX idx_smali_flattened smali_flattened_score TYPE minmax GRANULARITY 4,
    INDEX idx_smali_mba smali_mba_score TYPE minmax GRANULARITY 4
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY smali_method_hash;
```

## Table 4: `code_apk_smali_methods_references`

**Analog:** `code_binja_disassembled_functions_references`

```sql
CREATE TABLE IF NOT EXISTS code_apk_smali_methods_references (
    sha256 FixedString(64),
    smali_method_hash FixedString(64),
    decompiled_method_hash Nullable(FixedString(64)),
    smali_class_name LowCardinality(String),
    smali_method_name LowCardinality(String),
    smali_method_signature String,
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_smali_class_name smali_class_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
    INDEX idx_smali_method_name smali_method_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY (sha256, smali_method_hash);
```

## Table 5: `code_apk_method_similarity_metrics`

**Analog:** `code_binja_function_similarity_metrics`

Content-based fuzzy matching table. Structural/CFG scalars (block_count, edge_count, etc.)
are in `code_apk_cfg_methods` (Table 6) — this table holds only fuzzy hashes and MinHash.

```sql
CREATE TABLE IF NOT EXISTS code_apk_method_similarity_metrics (
    smali_method_hash FixedString(64),
    -- Raw smali fuzzy hashes (analog: ssdeep_disassembly / tlsh_disassembly)
    ssdeep_smali Nullable(String),
    tlsh_smali Nullable(FixedString(72)),
    -- Semantically normalized smali fuzzy hashes (analog: ssdeep_llil / tlsh_llil)
    ssdeep_smali_normalized Nullable(String),
    tlsh_smali_normalized Nullable(FixedString(72)),
    minhash Array(UInt8),
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_ssdeep ssdeep_smali TYPE bloom_filter GRANULARITY 1,
    INDEX idx_tlsh tlsh_smali TYPE bloom_filter GRANULARITY 1,
    INDEX idx_ssdeep_norm ssdeep_smali_normalized TYPE bloom_filter GRANULARITY 1,
    INDEX idx_tlsh_norm tlsh_smali_normalized TYPE bloom_filter GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY smali_method_hash;
```

## Table 6: `code_apk_cfg_methods`

**Analog:** `code_binja_cfg_functions` (see `db_migration/cfg_functions_ddl.sql`)

Structural and topological features computed from smali CFG. All fields mirror
the Binja table with APK-appropriate naming.

```sql
CREATE TABLE IF NOT EXISTS code_apk_cfg_methods (
    -- Identity
    smali_method_hash FixedString(64),

    -- Tier 0: Exact structural match
    cfg_topology_hash FixedString(16),

    -- Tier 1: Structural pre-filtering
    block_count UInt16,
    edge_count UInt16,
    cfg_instructions_count UInt32,            -- Dalvik instruction count (analog: llil_total_operations)
    call_count UInt16,
    cyclomatic_complexity UInt16,
    loop_count UInt16,
    max_depth UInt16,
    max_fan_out UInt16,
    md_index_topdown UInt64,
    md_index_bottomup UInt64,
    prime_product_smali UInt64,              -- Dalvik semantic primes (analog: prime_product_llil)

    -- Tier 2: Fuzzy matching
    cfg_feature_tlsh Nullable(FixedString(72)),
    wl_minhash Array(UInt8),

    -- Embedding-ready storage
    bb_features Array(Array(UInt16)),        -- ACFG block feature vectors
    cfg_adjacency Array(UInt32),             -- Packed (src << 16 | tgt)

    analysis_date DateTime64(3, 'UTC'),

    -- Indexes
    INDEX idx_topology cfg_topology_hash TYPE bloom_filter GRANULARITY 1,
    INDEX idx_complexity cyclomatic_complexity TYPE minmax GRANULARITY 4,
    INDEX idx_block_count block_count TYPE minmax GRANULARITY 4,
    INDEX idx_edge_count edge_count TYPE minmax GRANULARITY 4,
    INDEX idx_call_count call_count TYPE minmax GRANULARITY 4,
    INDEX idx_cfg_instr_count cfg_instructions_count TYPE minmax GRANULARITY 4,
    INDEX idx_loop_count loop_count TYPE minmax GRANULARITY 4,
    INDEX idx_max_depth max_depth TYPE minmax GRANULARITY 4,
    INDEX idx_max_fan_out max_fan_out TYPE minmax GRANULARITY 4,
    INDEX idx_md_topdown md_index_topdown TYPE minmax GRANULARITY 4,
    INDEX idx_md_bottomup md_index_bottomup TYPE minmax GRANULARITY 4,
    INDEX idx_prime prime_product_smali TYPE bloom_filter GRANULARITY 1,
    INDEX idx_cfg_tlsh cfg_feature_tlsh TYPE bloom_filter GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY smali_method_hash;
```

**Column mapping (APK → Binja):**

| APK column | Binja column | Notes |
|------------|-------------|-------|
| `smali_method_hash` | `disassembled_function_hash` | Both SHA-256 of normalized code |
| `cfg_instructions_count` | `llil_total_operations` | Dalvik instructions vs LLIL operations |
| `prime_product_smali` | `prime_product_llil` | Same prime algorithm, Dalvik semantic categories |
| All others | Same name | Identical algorithms from shared `cfg_features.py` |

## Table 7: `code_binja_strings_raw` (shared)

APK strings are inserted into the existing `code_binja_strings_raw` Null-engine table,
which feeds materialized views (`code_binja_strings_by_binary`, `mv_string_popularity_public`).
This enables cross-format string correlation between PE/ELF/Mach-O/APK samples.

No new table creation needed — see `docs/new-code-binja-schema.md` for the existing DDL.

## Table 8: `code_apk_analysis_errors`

**Analog:** `function_analysis_errors_binja`

```sql
CREATE TABLE IF NOT EXISTS code_apk_analysis_errors (
    sha256 FixedString(64),
    class_name Nullable(String) CODEC(ZSTD(3)),
    method_name Nullable(String) CODEC(ZSTD(3)),
    error_location LowCardinality(String) CODEC(ZSTD(3)),   -- 'jadx', 'apktool', 'androguard', 'analysis'
    error_message Nullable(String) CODEC(ZSTD(3)),
    error_type Nullable(String) CODEC(ZSTD(3)),
    error_hash FixedString(32),                               -- MD5 for dedup
    status Enum8('new' = 1, 'investigating' = 2, 'fixed' = 3, 'wontfix' = 4) DEFAULT 'new',
    analysis_date DateTime64(3, 'UTC')
) ENGINE = MergeTree()
ORDER BY (sha256, error_location, error_hash);
```