eugine.me

ECCU STEM technology field guide

Learn the tool. Know why it belongs.

A ranked map of the code, AI, data and delivery tools students can reuse across projects. Nisa is the anchor build; the engineering habits travel much further.

Choose your depth

Start simple. Open more detail when it helps.

1

New to coding

Start

Run Python, change a function, understand the data and make one test pass.

2

Ready to contribute

Build

Own a small product outcome, work on a branch and prove it in the integrated app.

3

Ready for a challenge

Go deeper

Improve architecture, retrieval, evaluation, accessibility or failure handling.

4

Curious about professional systems

Look ahead

See how APIs, databases, deployment and governance grow from the same foundations.

Use now

The student stack is deliberately small

Python, uv, VS Code, Git, GitHub, Streamlit, Pydantic, JSON or YAML, pytest and Ruff are enough to build a real, safe first assistant. Codespaces is the recovery path when local setup gets in the way.

PythonuvVS CodeGit BashGitGitHubGitHub CodespacesStreamlitJSON and YAMLPydanticpytestRuffpython-dotenv

Full capability map

Open the six technology ranks

Optional detail for planning where the system can grow. A rank is earned through working evidence, not installed packages.

1Start here

Foundations

Write, run, explain and improve a small Python program.

  • A program runs from one documented command
  • Inputs are checked and errors are understandable
  • The student can explain every function

Python · uv · VS Code · Git · GitHub

2Current build

Deterministic assistant

Build a useful assistant whose answers come from reviewed rules.

  • A Streamlit chat interface works
  • Knowledge is separated from application logic
  • Answers show sources and safe boundaries

Streamlit · Pydantic · JSON/YAML · tests

3Next

Generative assistant

Use one language model without giving it control of the product.

  • Provider calls pass through one gateway
  • A fake model keeps tests deterministic
  • Unsafe or uncertain requests fall back safely

Model gateway · HTTPX · structured outputs

4Advanced camp work

Grounded, tool-using assistant

Retrieve approved evidence and call small, typed tools safely.

  • Claims link to retrieved evidence
  • Tool arguments are validated
  • Write actions require approval

Embeddings · retrieval · citations · typed tools

5Post-camp pathway

Production service

Turn the prototype into a service people can operate and trust.

  • Conversations persist
  • Authentication and permissions are enforced
  • Failures, costs and model behaviour are observable

FastAPI · PostgreSQL · pgvector · deployment

6Only when justified

Institutional platform

Scale governance, workflows and channels around measured needs.

  • The simpler architecture has a documented limit
  • The new component has an owner and operating budget
  • Recovery, audit and degraded operation are tested

Durable workflows · policy · multi-channel operations

Tool explorer

Find what you need

Showing 32 of 32 tools and tool groups.

Use nowRank 1 · Code

Python

The language used for Nisa’s behaviour, data work and tests.

Why it belongs
It keeps the first product in one language students can understand completely.
Use it when
Writing functions, validation, retrieval logic and integrations.
Official guide
Use nowRank 1 · Code

uv

Creates the Python environment and installs locked dependencies.

Why it belongs
One tool handles project setup, packages and reproducible installs.
Use it when
Starting the project or adding a Python dependency.
Official guide
Use nowRank 1 · Code

VS Code

The editor used to read, write, run and debug code.

Why it belongs
Its Python, terminal, Git and testing support live in one workspace.
Use it when
Working locally or inside GitHub Codespaces.
Official guide
Use nowRank 1 · Code

Git Bash

Provides a consistent command-line environment on student laptops.

Why it belongs
Students can use the same project commands across Windows machines.
Use it when
Running uv, Git and project commands on Windows.
Official guide
Use nowRank 1 · Quality

Git

Records changes to the project as a reviewable history.

Why it belongs
Small commits make experiments recoverable and teamwork understandable.
Use it when
Completing a coherent change that can be described clearly.
Official guide
Use nowRank 1 · Quality

GitHub

Hosts the repository, issues, pull requests and team evidence.

Why it belongs
The project plan and the code change can be reviewed together.
Use it when
Claiming an issue, opening a pull request or reviewing a teammate.
Official guide
Use nowRank 1 · Delivery

GitHub Codespaces

Provides a browser-based recovery workspace when a laptop setup fails.

Why it belongs
A setup problem should not cost a student an entire build session.
Use it when
Local installation is blocked or a clean environment is needed.
Official guide
Use nowRank 2 · Interface

Streamlit

Turns Python functions into a visible chat application.

Why it belongs
Students get a useful interface without first learning React and browser state.
Use it when
Building the Nisa prototype and internal demonstrations.
Hold back when
A product needs a highly custom public interface or many independent frontend flows.
Official guide
Use nowRank 2 · Data

JSON and YAML

Store reviewed FAQs, configuration and small structured datasets.

Why it belongs
They make the difference between program logic and product content visible.
Use it when
The data is small, reviewable and does not need concurrent updates.
Hold back when
Many users need to edit related records safely at the same time.
Official guide
Use nowRank 2 · Quality

Pydantic

Defines and validates the shapes of requests, records and model output.

Why it belongs
Bad data is rejected at a clear boundary instead of failing later.
Use it when
Data crosses a file, API, model or tool boundary.
Official guide
Use nowRank 2 · Quality

pytest

Checks expected behaviour automatically.

Why it belongs
Tests make refactoring safer and turn requirements into executable evidence.
Use it when
Adding a behaviour, repairing a bug or guarding a safety rule.
Official guide
Use nowRank 2 · Quality

Ruff

Finds common Python mistakes and formats code consistently.

Why it belongs
The team spends less time debating style and more time reading behaviour.
Use it when
Before every pull request and in continuous integration.
Official guide
Use nowRank 2 · Delivery

python-dotenv

Loads local environment settings without putting secrets in code.

Why it belongs
Configuration changes by environment; credentials must never enter Git.
Use it when
A local app needs a development-only setting or API key.
Official guide
Learn nextRank 3 · Interface

HTTPX

Makes typed, timeout-controlled HTTP requests from Python.

Why it belongs
External model and data providers are network dependencies that can fail.
Use it when
Calling the selected model provider or a reviewed public API.
Official guide
Learn nextRank 3 · AI

One model gateway

Keeps provider-specific code behind a small application interface.

Why it belongs
Nisa can change providers later without spreading vendor code everywhere.
Use it when
The deterministic assistant and its safety tests are already reliable.
Hold back when
Students cannot yet explain the non-AI version of the same feature.
Official guide
Learn nextRank 3 · AI

Fake model

Returns predictable responses during tests without network calls or cost.

Why it belongs
Most tests should verify our code, not gamble on a changing model response.
Use it when
Testing prompts, fallbacks, usage records and failure handling.
Official guide
Optional labRank 4 · AI

Pydantic AI

Defines typed agent dependencies, outputs and tool calls.

Why it belongs
It becomes useful after students understand direct model calls and ordinary functions.
Use it when
Nisa needs multiple validated tools or structured model results.
Hold back when
A direct provider call and two ordinary functions remain easier to explain.
Official guide
Optional labRank 4 · AI

RapidFuzz or BM25

Retrieves relevant text with understandable keyword-based methods.

Why it belongs
A simple search baseline reveals whether embeddings actually improve results.
Use it when
Building the first retrieval evaluation set.
Official guide
Optional labRank 4 · Data

pypdf / pdfplumber

Extracts text and page provenance from approved PDF documents.

Why it belongs
Reliable citations require preserving the document and page that support a claim.
Use it when
The approved knowledge base includes text-based PDFs.
Hold back when
Scanned pages require OCR or complex layouts require a stronger parser.
Official guide
Optional labRank 4 · AI

sentence-transformers

Turns text into vectors for meaning-based retrieval experiments.

Why it belongs
Local embeddings can support a controlled comparison with keyword search.
Use it when
A labelled evaluation set shows keyword retrieval misses semantic matches.
Official guide
Optional labRank 4 · Data

Chroma

Stores vectors for a small learning experiment.

Why it belongs
It offers a quick laboratory before adopting production database infrastructure.
Use it when
Students are comparing retrieval approaches on a small approved corpus.
Hold back when
The product already needs durable relational data, permissions and operations.
Official guide
Learn nextRank 5 · Interface

FastAPI

Exposes the Python application through validated HTTP endpoints.

Why it belongs
It separates the user interface from the backend when the prototype grows.
Use it when
Another interface, integration or client needs to call Nisa.
Hold back when
The Streamlit prototype is still the only client and teaches the requirement clearly.
Official guide
Learn nextRank 5 · Data

SQLite and SQL

Teach durable, queryable conversation and feedback storage.

Why it belongs
Students should understand SQL before an object-relational mapper hides it.
Use it when
Conversations must survive an application restart.
Official guide
Add on evidenceRank 5 · Data

PostgreSQL + pgvector

Stores application records and embeddings in one production database.

Why it belongs
Transactions, joins, permissions and vector search can share one operational system.
Use it when
The deployed service needs multiple users, durable retrieval and backups.
Hold back when
A classroom prototype is still well served by files or SQLite.
Official guide
Add on evidenceRank 5 · Data

SQLAlchemy + Alembic

Maps application records and versions database schema changes.

Why it belongs
Production data structures need deliberate, repeatable migrations.
Use it when
PostgreSQL becomes part of a maintained service.
Official guide
Add on evidenceRank 5 · Interface

Next.js + TypeScript

Builds a fully custom web interface around the Python service.

Why it belongs
It provides control over routing, browser state and interaction design.
Use it when
A tested user need cannot be served well by Streamlit.
Hold back when
It would make beginners learn two languages before the product works.
Official guide
Add on evidenceRank 5 · Delivery

Docker Compose

Runs a small multi-service development environment consistently.

Why it belongs
It becomes valuable when the API, database and supporting services must start together.
Use it when
The system has several services with reproducible local setup needs.
Hold back when
Students only need Python and Streamlit to run the current product.
Official guide
Learn nextRank 5 · Delivery

GitHub Actions

Runs quality checks automatically for every shared change.

Why it belongs
The repository can enforce the same Ruff and pytest checks for everyone.
Use it when
The team is merging pull requests into a shared branch.
Official guide
Add on evidenceRank 5 · Delivery

Structured logs, Sentry and Langfuse

Makes application failures and AI behaviour observable.

Why it belongs
Operators need to trace errors, retrieval, tool calls, latency and cost.
Use it when
Real users depend on the deployed service.
Hold back when
The team lacks the capacity to review and act on the collected signals.
Official guide
Add on evidenceRank 6 · Delivery

Redis + Celery

Runs retriable background work outside the web request.

Why it belongs
Long document processing should survive API restarts and scale independently.
Use it when
Measured jobs are slow, concurrent, retriable or must survive restarts.
Hold back when
FastAPI background tasks or synchronous processing remain reliable enough.
Official guide
Not yetRank 6 · AI

LangGraph or Temporal

Coordinates branching or durable long-running workflows.

Why it belongs
These solve real workflow problems, but also create a new operating subsystem.
Use it when
A measured workflow requires checkpoints, human pauses or durable recovery.
Hold back when
One agent with controlled tools can complete the task.
Official guide
Not yetRank 6 · Delivery

Kubernetes, Kafka and multi-agent platforms

Operate large distributed systems with specialised scaling needs.

Why it belongs
They belong after product demand demonstrates the problems they solve.
Use it when
Multiple independently scaled services have dedicated operators and budgets.
Hold back when
A modular monolith and one database can still serve the product.
Official guide

Safety is part of the stack

  • Authority comes before retrieval, model output or tool use.
  • Use only reviewed public NIS information in the student build.
  • Never collect or expose a person’s account, entitlement or identifying data.
  • Every supported factual answer should show its source.
  • When evidence is missing, say so and direct the user to an official channel.
  • The model proposes; ordinary code validates; the user approves consequential actions.
  • Secrets stay out of source code, browser code, screenshots and chat messages.
  • Most automated tests use fakes instead of paid or changing model responses.

Turn knowledge into evidence

Pick a lesson, claim an issue and build one understandable change.