Documentation Guide:
- This README: Development setup and contributor guide
- Extension README: User-facing documentation (VS Code Marketplace)
This repository contains the VS Code extension for Artemis: Interactive Learning with Individual Feedback. The extension integrates Artemis—an innovative platform for interactive learning, programming exercises, and AI-powered tutoring—directly into the VS Code IDE, enabling students to access personalized support, exercise materials, and intelligent feedback without leaving their development workspace.
Artemis brings interactive learning to life with instant, individual feedback on programming exercises, quizzes, modeling tasks, and more. Offering customization for instructors and real-time collaboration for students, this platform bridges creativity and education. Embrace a new era of engaging, adaptive learning and artificial intelligence support with Artemis, where innovation meets inclusivity. Find out more on https://artemisapp.github.io
- User experience: Provide an intuitive and engaging interface that enhances the learning experience for both students and instructors
- Scalable infrastructure: Build a robust platform capable of supporting large-scale courses with thousands of participants simultaneously
- Constructive alignment: Align learning goals, activities, and assessments through well-integrated features such as the exam mode
- Learning analytics: Leverage data to provide actionable insights into student performance and engagement
- Programming Exercises: Version control integration, automatic individual feedback based on test cases and static code analysis, support for any programming language
- AI-Powered Support: Integration with Iris, a LLM-based virtual assistant that supports students with questions, pro-active assistance, and personalized guidance
- Instant Feedback: Students receive immediate and individual feedback on submissions with customizable feedback messages
- Interactive Instructions: Task-based and UML diagram integration directly into dynamic problem statements
- Multiple Exercise Types: Programming, quiz, modeling, text, and file upload exercises
- Exam Mode: Create online exams with exercise variants, integrated plagiarism checks, and student reviews
- Learning Analytics: Track competencies, monitor progress, and receive personalized learning paths with Atlas
- AI Assessment: Automated assessment support with Athena for text, modeling, and programming exercises
- Activity Bar Icon: Click the Artemis logo in the activity bar to open the Artemis sidebar
- Secure Login: Authenticate directly with your Artemis Learning Management System from VS Code
- Course Access: Browse your courses, view exercise details, and access learning materials
- Dashboard View: Overview of your current exercises, deadlines, and course activities
- Responsive Design: Adapts seamlessly to VS Code themes (light/dark mode)
- Multiple Themes: Choose from VSCode-native, modern, or synthwave visual themes
The extension integrates Iris, Artemis's intelligent virtual tutor, directly into your coding environment:
- Context-Aware Assistance: Get help with programming exercises based on your current work
- Exercise-Specific Guidance: Receive personalized hints and explanations for your active exercises
- Instant Q&A: Ask questions about lectures, exercises, and your learning performance
- Pro-Active Support: Iris can proactively suggest next steps and motivate continued learning
- Health Status Monitoring: Check Iris availability and rate limits to ensure optimal assistance
- Real-Time Status: Monitor the health and availability of Artemis services
- Rate Limit Information: View your current API usage and remaining quotas
- Service Diagnostics: Check connectivity and troubleshoot integration issues
- VS Code version 1.104.0 or higher
- Access to an Artemis Learning Management System server
- Valid Artemis user credentials (student or instructor account)
- Install the extension from the VS Code Marketplace
- Click the Artemis logo in the activity bar
- Configure your Artemis server URL in settings if different from the default
- Login: Click the Artemis logo in the activity bar and enter your credentials
- Browse Courses: Navigate your enrolled courses from the dashboard
- View Exercises: Select exercises to view details, deadlines, and instructions
- Access Iris: Click the chat icon to open the Iris AI tutor for assistance
- Monitor Services: Use "Artemis: Check Iris Health Status" command to verify service availability
To access commands, open the Command Palette (Ctrl+Shift+P or Cmd+Shift+P) and type "Artemis".
Artemis: Login to Artemis- Opens the Artemis login interfaceArtemis: Check Iris Health Status- Checks if the Iris AI tutoring system is active and shows rate limit information
Configure the extension through VS Code settings:
artemis.serverUrl: The URL of the Artemis server to connect to (default:https://artemis.tum.de)
This extension integrates Iris, an AI-powered virtual tutor from the EduTelligence suite. Iris provides intelligent student assistance, answering questions about exercises, lectures, and learning performance directly within your VS Code environment.
The Artemis platform, which this extension connects to, offers extensive capabilities:
- Programming Exercises: Java, Python, C, Haskell, Kotlin, VHDL, Assembler, Swift, OCaml, and more
- Quiz Exercises: Multiple choice, drag and drop, short answer, and modeling quizzes
- Modeling Exercises: UML diagrams with the Apollon editor and semi-automatic assessment
- Text Exercises: Manual and semi-automatic assessment with NLP support
- File Upload Exercises: Flexible submission format for any file type
- Double-blind grading with structured grading criteria
- Assessment training process with example submissions
- Student rating of assessments and complaint mechanism
- Automated grading and grade key configuration
- Bonus configurations for final exams
- Course announcements and notifications
- Question channels and private chats
- Customizable web and email notifications
- Mobile app support for iOS and Android
- Atlas: Competency-based management system with adaptive learning
- Progress tracking toward learning objectives
- Performance comparison with course averages
- Personalized learning paths based on individual progress
- Lectures: Upload slides, video integration, and competency definitions
- Exam Mode: Online exams with variants, plagiarism checks, and test runs
- Tutorial Groups: Session planning, tutor assignment, and attendance tracking
- Plagiarism Detection: Integrated checks for programming, text, and modeling exercises
- LTI Integration: Connect with Moodle, edX, and other learning management systems
The extension connects to the Artemis application server via REST APIs, providing seamless integration between your local development environment and the Artemis platform. The server architecture includes:
- Application Server: Spring Boot-based backend with REST interfaces
- Version Control System: Git repository management for programming exercises
- Continuous Integration: Automated testing and feedback generation
- Build Agents: Docker-based execution environments for secure code testing
Artemis is actively used by numerous universities worldwide, including:
- Technical University of Munich (TUM)
- LFU Innsbruck, Uni Salzburg, JKU Linz, AAU Klagenfurt, TU Wien
- University of Stuttgart
- Universität Passau
- Karlsruhe Institute of Technology (KIT)
- Hochschule München
- Technische Universität Dresden
- Hochschule Heilbronn
For a complete list and more information, visit https://artemisapp.github.io
- Node.js (v22.x or higher)
- npm
- VS Code (version 1.97.0 or higher)
- (Optional) vsce:
npm install -g @vscode/vsce
Full Build with Validation:
./build-extension.shThis script will:
- Clean previous builds
- Install dependencies
- Run type checking
- Run linting
- Build the production bundle
- Package as .vsix (if vsce is installed)
-
Clone the repository:
git clone https://github.com/ls1intum/artemis-extension.git cd artemis-extension/iris-thaumantias -
Install dependencies:
npm install
-
Compile the extension:
npm run compile
-
Watch for changes during development:
npm run watch
-
Package the extension:
npm run package
To create a .vsix file for distribution:
# Install vsce if not already installed
npm install -g @vscode/vsce
# Package the extension
cd iris-thaumantias
vsce packageartemis-extension/
├── README.md # This file (developer documentation)
├── DOCUMENTATION.md # Documentation strategy guide
└── iris-thaumantias/ # Extension package directory
├── README.md # User documentation (Marketplace)
├── package.json # Extension manifest
├── tsconfig.json # TypeScript configuration
├── esbuild.js # Build configuration
├── eslint.config.mjs # Linting configuration
├── src/
│ ├── extension.ts # Extension entry point & activation
│ ├── api/ # Artemis REST API client
│ │ └── artemisApi.ts # API methods for courses, exercises, etc.
│ ├── auth/ # Authentication handling
│ │ └── auth.ts # Login, token management, secret storage
│ ├── services/ # Core services
│ │ └── artemisWebsocketService.ts # WebSocket for real-time updates
│ ├── views/ # Webview UI layer
│ │ ├── provider/ # Webview provider classes
│ │ │ ├── artemisWebviewProvider.ts # Main Artemis view
│ │ │ └── chatWebviewProvider.ts # Iris chat view
│ │ ├── templates/ # HTML template generators
│ │ │ ├── loginView.ts
│ │ │ ├── dashboardView.ts
│ │ │ ├── courseListView.ts
│ │ │ ├── exerciseDetailView.ts
│ │ │ └── irisChatView.ts
│ │ └── app/ # Application state & routing
│ │ ├── appStateManager.ts # Global state management
│ │ ├── viewRouter.ts # View navigation
│ │ ├── webViewMessageHandler.ts # Message passing
│ │ └── commands/ # Command handlers
│ ├── types/ # TypeScript type definitions
│ │ ├── artemis.ts # Artemis domain types
│ │ └── stomp.d.ts # WebSocket/STOMP types
│ └── utils/ # Utility functions
│ ├── constants.ts
│ ├── plantUmlProcessor.ts
│ └── recommendedExtensions.ts
├── media/
│ ├── artemis-logo.png # Extension icons
│ └── styles/ # CSS stylesheets
│ ├── base.css
│ └── views/ # View-specific styles
└── dist/ # Compiled output (generated)
└── extension.js # Bundled extension
extension.ts: Activates the extension, registers commands, and initializes webview providers
artemisApi.ts: Handles all REST API communication with Artemis server- Supports authentication, course retrieval, exercise management, and Iris interactions
auth.ts: Manages user login, JWT tokens, and secure credential storage- Uses VS Code's Secret Storage API for security
artemisWebsocketService.ts: Maintains WebSocket connection for real-time notifications- Uses STOMP protocol over WebSocket for message handling
- Providers: Create and manage webview panels
- Templates: Generate HTML for different views
- App State: Manages application state and view routing
- Commands: Handle user actions from webviews
- Webviews inherit the active VS Code theme through native color tokens
media/styles/base.cssdefines shared variables mapped to VS Code theme colors
npm run compile- Compile TypeScript and run lintingnpm run watch- Watch mode for developmentnpm run package- Build production bundlenpm run lint- Run ESLintnpm run check-types- Type check without emittingnpm run test- Run tests
- Open the project in VS Code
- Press
F5(or click Run → Start Debugging) - Select "Run Extension" from the dropdown (if prompted)
- A new Extension Development Host window will open with your extension loaded
- Click the Artemis icon in the activity bar to test functionality
The project includes three launch configurations (press F5 and select):
-
Run Extension (Recommended for development)
- Automatically starts watch mode
- Recompiles on file changes
- Best for active development
-
Run Extension (No Watch)
- Runs the extension without watch mode
- Use when you just want to test without auto-recompilation
-
Extension Tests
- Runs the extension test suite
- Automatically compiles tests before running
Option 1: Automatic (Recommended)
# Just press F5 in VS Code
# Watch mode starts automatically
# Make changes → See them reflected automaticallyOption 2: Manual Watch Mode
cd iris-thaumantias
npm run watch
# Then press F5 in VS Code- Set breakpoints: Click in the gutter next to line numbers in TypeScript files
- Debug Console: View and execute code in the debug context
- Variables panel: Inspect variables and their values
- Call Stack: See the execution path
- Output panel: Check "Artemis" or "Extension Host" for logs
- Problems panel: View TypeScript and ESLint errors
- Use
console.log()for quick debugging (appears in Debug Console) - Set conditional breakpoints for specific scenarios
- Use "Restart" (Ctrl+Shift+F5) to reload the extension with changes
- Check the "Extension Host" output panel for extension errors
We welcome contributions from the community!
📖 See CONTRIBUTING.md for detailed contribution guidelines.
- Fork the repository
- Create a feature branch from
main - Make your changes following our coding guidelines
- Ensure all tests pass and code is properly linted
- Submit a pull request with a clear description
- Follow TypeScript best practices
- Use meaningful variable and function names
- Add comments for complex logic
- Maintain existing code style (enforced by ESLint)
- Update documentation when adding new features
- Use conventional commit messages
Please use your real name and an authentic profile picture when contributing. We adhere to GitHub's Open Source Guides and Acceptable Use Policies.
- Artemis Platform: https://artemisapp.github.io
- Documentation: https://docs.artemis.cit.tum.de
- GitHub Repository: https://github.com/ls1intum/Artemis
- Extension Guidelines: VS Code Extension Guidelines
For questions, issues, or feature requests:
- Open an issue on the GitHub repository
- Contact the Artemis development team via the communication channels listed on the main repository
Enjoy enhanced learning with Artemis in VS Code!