Study Topics
Select a topic to view notes, code examples, and memory diagrams
Practice Quiz
224 questions across all chapters — pick how many you want, filter by topic, or stress-test in exam mode
Quick Reference
Everything you need on one page — pointer syntax, graph ops, complexity, sorting, DFS
Key Code Patterns
// ─── Linked List Node ─────────────────────────────────────
typedef struct Node { int data; struct Node *next; } Node;
// Insert at head — needs ** to update caller's pointer
void insert_head(Node **head, int val) {
Node *n = (Node*)malloc(sizeof(Node));
if (!n) return;
n->data = val; n->next = *head; *head = n;
}
// ─── BST Insert (recursive) ────────────────────────────────
BST_Node *insert(BST_Node *root, int val) {
if (!root) { /* malloc new node, set key, left=right=NULL */ return n; }
if (val < root->key) root->left = insert(root->left, val);
else root->right = insert(root->right, val);
return root;
}
// ─── DFS Path Finding ──────────────────────────────────────
int DFS(int cur, int dest, int adj[][N], int visited[]) {
visited[cur] = 1;
if (cur == dest) return 1; // base case 1
for (int j = 0; j < N; j++) {
if (adj[cur][j] && !visited[j])
if (DFS(j, dest, adj, visited)) return 1;
}
return 0; // base case 2: no path found
}
// ─── Tail Recursive Sum ────────────────────────────────────
int sum_TR(int *arr, int n, int part) {
if (n == 0) return part + arr[0]; // base case
return sum_TR(arr, n-1, part + arr[n]); // tail call
}
Good To Know
Concepts the prof might ask you to explain or trace through — not always coded from scratch, but worth understanding.
Coding Practice
Write C functions from scratch — AI will check your logic, catch bugs, and explain mistakes
Optimize
Identify the Big-O of slow code — then rewrite it to be efficient. AI grades both steps.
Testing & Find the Bugs
Spot the bug, explain why it's wrong, and learn how to test C code — exactly what exams and assignments require
Visual Practice
Build BSTs, delete nodes, draw graphs — interactive visualizations for exam prep
Click "New Question" to start.
Click "New Graph" to start.
Click "New Question" to start.
G — Goal
Current
Visited
Path found
Wall
Swapping / Pivot
Sorted / In Place
Current range
Unsorted
Click "New Problem" to start tracing pointers.
Click "New Problem" to start tracing.
// Left → Root → Right — produces sorted output void inorder(BST_Node *root) { if (root == NULL) return; inorder(root->left); printf("%d ", root->key); // process BETWEEN children inorder(root->right); } // Output: 20 30 40 50 60 70 80 — always sorted on a BST
Flashcards
Flip through key concepts, definitions, and facts — click a card to reveal the answer
Course Textbook
Official lecture notes by Professor F.P. Estrada — the ground truth for this course
About This Site
Why this exists and who made it
Failed the midterm.
That's what happened on the CSCA48 Winter 2026 midterm. Not great. I sat down afterwards and realized the issue wasn't effort — it was the way I'd been studying. Reading notes passively, not actually testing myself on code, not drilling the exact kind of questions the exam asks.
So I built this. A site that actually forces you to engage — write code in boxes, get AI feedback on it, take timed quizzes, trace through the real midterm questions. Everything I wish had existed before I walked into that exam room.
If you're in CSCA48 and you're staring down an upcoming exam, I hope this helps you more than passive re-reading ever would.
Found a bug? A wrong answer? A topic that needs more depth? Email me. This site is a work in progress and I'll keep improving it as the course goes on.
The textbook content linked in the Textbook tab belongs entirely to Professor F.P. Estrada and is distributed under a CC BY-NC-ND license. This site links to those PDFs but does not reproduce their content.
AI feedback is generated by Claude (Anthropic) using your own API key. It is a study aid, not a guaranteed grade predictor. Always verify understanding against the official course materials.
No liability. This site is provided as-is for personal study purposes only. The site owner accepts no responsibility for any academic outcomes, incorrect information, or any other consequences — positive or negative — arising from use of this site. Model solutions and AI feedback may contain errors. Always verify answers against official course materials and your instructor.