Virtual laboratories
The laboratory
Every experiment across the curriculum, in one place. Each laboratory opens in a dedicated full-screen workspace on a new tab — so the reading area stays put while you build, configure and observe real systems working.
Semester I
38 experimentsIntroduction to Information Technology
CSC-114 · 5 experiments · 5 available
Soroban: Counting in Place Value
Model the decimal place-value system with a Japanese soroban abacus: one heaven bead worth 5, four earth beads worth 1, and a bar that separates counted beads from free beads.
The Transistor: NPN Structure and Switching
Inspect the three-dimensional anatomy of a bipolar junction transistor, then drive it as a switch through cut-off, active and saturation by sweeping the base supply voltage and reading the base and collector currents.
Inside the Integrated Circuit
Open a dual in-line package (DIP) and trace the signal path from the pins, through the lead frame and bond wires, to the silicon die where millions of transistors form a complete circuit.
Inside the Vacuum Tube
Inspect the anatomy of a triode vacuum tube - filament, cathode, grid and anode - and see how thermionic emission and the control grid let one tube amplify a signal.
Anatomy of a Desktop Computer
Explore every major component of a working desktop computer - CPU, RAM, GPU, motherboard, PSU, storage and cooling - and understand the role each one plays in the fetch-decode-execute cycle.
C Programming
CSC-115 · 11 experiments · 11 available
Hello, World
Compile and run your first C program, and understand the journey from source code to terminal output.
Sum and Average of Numbers
Read input, perform arithmetic with variables, and produce formatted output in C.
Control Flow: Number Classifier
Use if-else branching and arithmetic operators in C to classify an integer as positive, negative or zero, and to test divisibility.
Loops: Multiplication Table
Generate and print a multiplication table using a for loop, and understand loop control variables.
Number Pattern with Nested Loops
Print a right-angled triangle of numbers using nested for loops, and reason about inner vs outer loop counts.
Largest Element in an Array
Store a list of numbers in a one-dimensional array and find the largest value by traversing it.
Factorial with Recursion
Compute the factorial of a number with a recursive function and trace how the calls unwind.
Swap Variables with Pointers
Swap two variables through a function using pointers, and understand why call by value alone cannot do it.
Student Record using Structures
Model a student as a struct, store several records in an array of structures, and search through them.
Copy a File
Open a source file, copy its contents character by character to a destination file, and verify the result.
Count Vowels in a String
Read a string, traverse it with strlen, and count how many characters are vowels (a, e, i, o, u).
Digital Logic
CSC-116 · 9 experiments · 9 available
Build a Half Adder
Construct a half adder from logic gates and confirm that it correctly adds two binary digits, producing a sum and a carry.
Verify Basic Logic Gates
Build each essential logic gate one at a time and confirm its output matches its truth table exactly.
Build a Full Adder
Extend the half adder into a full adder that adds two bits together with a carry-in, producing a two-bit result.
Flip-Flop Explorer
Build SR, D, JK and T flip-flops from logic gates on a blank canvas and verify their characteristic behaviour: set, reset, hold and toggle.
Design a Multiplexer
Build a 4-to-1 multiplexer from gates and verify that the select lines route the chosen data input to the output.
Build a Decoder
Build a 2-to-4 decoder from gates and verify that exactly one output activates for each input combination.
Simplify with K-Maps
Simplify a 4-variable Boolean function with a Karnaugh map, then implement and verify the minimized circuit.
Explore the D Flip-Flop
Build a clocked D flip-flop and verify that it captures the D input exactly at the clock edge and holds it between edges.
Build a Binary Counter
Build a 3-bit synchronous binary counter from T flip-flops and verify that it counts 0 to 7 in binary and wraps around.
Mathematics I
MTH-117 · 4 experiments · 4 available
Limit Explorer: Quotients and Standard Limits
Master the factor-and-cancel technique for 0/0 limits and the standard limit sin(x)/x → 1, by evaluating limits numerically and exactly.
Derivative Machine: Power and Chain Rules
Fluently apply the power rule, sum rule and chain rule to polynomials and exponentials, evaluating derivatives at a point.
Integral Workshop: The Fundamental Theorem
Evaluate definite integrals with the Fundamental Theorem of Calculus, using antiderivatives of polynomials and trigonometric functions.
Series Lab: Geometric Sums and Taylor Polynomials
Sum infinite geometric series when they converge and approximate functions with Taylor polynomials.
Physics
PHY-118 · 9 experiments · 9 available
Projectile Motion Lab
Fire a projectile under adjustable speed, angle and gravity, and connect the shape of its trajectory to range, maximum height and time of flight.
Spring Oscillator (SHM)
Watch a mass on a spring oscillate and connect its frequency, period, amplitude, phase and energy to the parameters you control.
Electric Field Visualizer
Place positive and negative charges and watch their electric fields and potentials take shape across the canvas.
Blackbody Radiation Explorer
Heat a blackbody and watch its emission spectrum shift from infrared to visible, mapping the peak wavelength to its temperature.
Hydrogen Spectrum (Bohr Model)
Excite the electron in a hydrogen atom and observe the exact spectral lines it emits as it cascades down the energy levels.
Particle in a Box
Explore quantized energy states of a particle confined in a box and see how the wave functions and their probabilities depend on the quantum number n.
Energy Bands in Solids
See how overlapping atomic levels spread into energy bands and why the gap between bands decides whether a material is a conductor, insulator or semiconductor.
p-n Junction Explorer
Apply bias to a p-n junction and watch the depletion region shrink or grow while the current-voltage characteristic traces out a diode curve.
Universal Gates Lab
Build any logic function using only NAND (or only NOR) gates, and prove that these two gates are universal.
Semester II
24 experimentsObject Oriented Programming
CSC-166 · 7 experiments · 6 available
Classes and Objects Lab
Define a class with private data, public methods and constructors, and build and use several objects from it.
Operator Overloading Lab
Overload arithmetic operators for a Complex class and verify results against hand computation.
Inheritance Lab
Build a class hierarchy, inherit members and constructors across levels, and verify construction order.
Polymorphism and Virtual Functions Lab
Demonstrate runtime polymorphism with virtual functions and an abstract base class.
Function and Class Templates Lab
Write generic functions and a class template that work with int, double and string types.
Exception Handling Lab
Protect unsafe operations with try, throw and catch, and route errors through the standard exception hierarchy.
File Handling Lab
Write, read and search records in a file, combining text files, binary files and random access.
Microprocessor
CSC-167 · 7 experiments · 7 available
Arithmetic and Logic (ALU) Operations
Write and step through 8085 programs that perform addition, subtraction, AND, OR and XOR, and read the resulting flag states.
Data Transfer with Loops
Use a counted loop to copy a block of data from one memory region to another and verify the result byte by byte.
Memory Block Operations
Write an 8085 program that scans a block of memory and finds the largest value, then verify it on multiple test data sets.
Code Conversion
Write 8085 programs that convert between BCD, hexadecimal and ASCII representations and check the results by hand and by simulation.
Subroutine and Look-up Table
Build a delay subroutine, call it from a main program, and use a look-up table to convert a digit into its seven-segment pattern.
8255 I/O Interfacing
Program a simulated 8255 in mode 0, configure port directions with a control word, and move data through ports A and B.
The 8085 Microprocessor: Inside and Out
Study a fully-labelled internal architecture diagram and a 40-pin DIP pin diagram of the 8085, and map every block and every pin group to its function.
Mathematics II
MTH-168 · 4 experiments · 4 available
Linear Systems Lab: Solving Ax = b
Solve 2×2 systems of linear equations with the elimination and determinant methods, and recognise when a system has a unique solution.
Matrix Algebra Lab: Determinants and Inverses
Compute determinants and inverse matrices for 2×2 matrices, using the adjugate formula A⁻¹ = (1/det)[[d, −b], [−c, a]].
Eigenvalues Lab: Characteristic Equations
Find eigenvalues from the characteristic equation det(A − λI) = 0, and connect them to the behaviour of the matrix.
Transformation Lab: Rotations in Graphics
Apply rotation matrices to points in the plane, the same operation graphics engines use to spin sprites and 3D objects on screen.
Statistics I
STA-169 · 6 experiments · 6 available
Descriptive Statistics Lab
Manipulate a dataset and watch mean, median, mode, range and standard deviation update in real time.
Frequency Distribution and Histogram
Group raw data into class intervals and watch the histogram, frequency polygon and ogive update as class width changes.
Measures of Dispersion Lab
Compare range, variance, standard deviation and IQR across two datasets and see how outliers and sample size affect each measure.
Correlation Coefficient Lab
Drag points on a scatter plot and watch Pearson's r and Spearman's rho respond, exploring outliers, curvature and strength.
Linear Regression Lab
Fit a least-squares line to a scatter plot, inspect residuals, and practice prediction within and beyond the data range.
Probability Distributions Lab
Compare binomial, Poisson and normal distributions by adjusting their parameters and reading probabilities, means and variances live.
Semester III
46 experimentsData Structures and Algorithms
CSC-211 · 23 experiments · 23 available
Array ADT Operations
Learn how an array behaves as an Abstract Data Type by performing insert, delete, search and traversal operations at chosen positions.
Stack: Push, Pop and Peek
Understand the LIFO discipline of a stack by performing push, pop and peek, and watching the top pointer move.
Infix to Postfix Conversion
Convert an infix expression into postfix notation using the shunting-yard algorithm, with the operator stack and output visibly traced.
Postfix Expression Evaluation
Evaluate a postfix expression with a value stack, applying each operator to the two most recent operands.
Circular Queue
See how a circular queue reuses array slots by wrapping the front and rear pointers, avoiding the waste of a linear queue.
Priority Queue
Observe a priority queue where the highest-priority element is always served first, regardless of arrival order.
Recursion: Factorial and Fibonacci
Watch recursive calls unfold as a call tree, and relate the base case, recursive case and the return-value unwind.
Tower of Hanoi
Solve the Tower of Hanoi puzzle recursively and observe the exponential 2ⁿ−1 move count and the recursive structure of each move.
Singly Linked List
Build and manipulate a singly linked list, observing how each node stores a value and a single pointer to the next node.
Doubly Linked List
Manipulate a doubly linked list and use the backward (prev) pointers to traverse in both directions.
Sorting Visualizer
Watch sorting algorithms execute step by step, and compare their behaviour on the same dataset.
Linear and Binary Search
Compare linear search over any list with binary search over a sorted list, counting the comparisons each strategy makes.
Hashing with Linear Probing
Map keys to slots with a hash function, resolve collisions by linear probing, and see why average search stays near O(1).
Binary Tree and Traversals
Build a binary search tree by inserting values and compare inorder, preorder and postorder traversal orders.
AVL Tree Balance Explorer
Study height-balanced trees, observe the balance factor of every node, and see how rotations restore balance after insertions.
Heap Visualizer
Build a max-heap and observe the complete-tree layout and heap-order invariant that powers priority queues.
Graph Traversal: BFS and DFS
Traverse a graph with breadth-first search (queue) and depth-first search (stack/recursion), comparing the visitation order and use of each data structure.
Dijkstra's Shortest Path
Compute single-source shortest paths on a weighted graph and watch tentative distances settle in order of increasing weight.
Minimum Spanning Tree
Find the minimum spanning tree of a weighted graph with Kruskal's algorithm, adding edges in order of weight while avoiding cycles.
Deque Operations
Insert and remove from both ends of a double-ended queue and observe how the front and rear pointers move in both directions.
Quick Sort Visualizer
Watch quick sort partition around a pivot and recursively sort each side, tracking pivot choices, comparisons and swaps.
Hashing with Separate Chaining
Map keys to slots with a hash function and resolve collisions by storing colliding keys in per-slot linked chains.
N-Queens Backtracking
Place N queens on an N×N board using backtracking, watching the search place queens row by row and retreat from dead ends.
Numerical Methods
CSC-212 · 6 experiments · 6 available
Bisection Method
Implement the bisection method in C and use it to find a root of a nonlinear equation within a given tolerance.
Newton-Raphson Method
Implement Newton-Raphson iteration in C and observe its quadratic convergence on a smooth equation.
Gauss Elimination
Implement Gaussian elimination with back substitution in C and solve a small system of linear equations.
Numerical Integration
Implement the composite trapezoidal and Simpson's 1/3 rules in C and compare their accuracy on the same integral.
Lagrange Interpolation
Implement Lagrange interpolation in C and use it to estimate function values between given data points.
Runge-Kutta (RK4) Method
Implement the classical fourth-order Runge-Kutta method in C and solve an initial value problem with high accuracy.
Computer Architecture
CSC-213 · 6 experiments · 6 available
Number System Converter
Convert values between binary, octal, decimal and hexadecimal and verify the result with step-by-step arithmetic.
Two's Complement Arithmetic
Add and subtract signed 8-bit numbers in two's complement, watching the bit patterns, carry and overflow flags update live.
ALU Design Simulator
Drive a 4-bit arithmetic, logic and shift unit with select bits and a carry-in, and verify every operation against its truth table.
Cache Mapping Simulator
Trace a sequence of memory addresses through direct, fully associative and set-associative caches and count the hits and misses.
Pipeline Timing Visualizer
Draw the timing diagram of a 4-stage instruction pipeline, then introduce a data hazard and watch bubbles appear and disappear.
Memory Hierarchy Explorer
Explore the speed, size and cost trade-offs of each memory level and compute the average access time for a chosen hit rate.
Computer Graphics
CSC-214 · 6 experiments · 6 available
DDA Line Drawing
Plot a line between two endpoints with the DDA algorithm and observe how rounding maps continuous coordinates to pixels.
Bresenham Line Drawing
Plot a line using only integer arithmetic and track the decision parameter that chooses each pixel.
Midpoint Circle Drawing
Generate a circle with the midpoint algorithm and watch 8-way symmetry fill all eight octants from one eighth of the arc.
2D Transformations
Apply translation, rotation, scaling and composite transformations to a 2D shape and see the matrices act on every vertex.
Polygon Filling
Fill a polygon using the scan-line algorithm and a seed-fill algorithm, and compare their behaviour.
3D Projections
Project a 3D wireframe object onto a 2D view plane with parallel and perspective projections and compare the results.
Statistics II
STA-215 · 5 experiments · 5 available
Confidence Intervals Lab
Build confidence intervals for a mean and a proportion from live data and see how the interval width responds to sample size and confidence level.
One-sample z-test and t-test Lab
Run a one-sample test for a mean against a claimed value, switching between the z and t procedures, and read the test statistic and p-value live.
Chi-square Goodness of Fit Lab
Test whether observed category counts match a proposed model by computing the chi-square statistic and comparing it with the critical value.
One-way ANOVA Lab
Compare several group means with one-way ANOVA, reading the sums of squares, F statistic and p-value from a live ANOVA table.
F-test for Comparing Variances Lab
Compare the variances of two independent samples with the F-test and use the ratio to judge whether equal-variance assumptions (like the pooled t-test) are safe.
Semester IV
30 experimentsComputer Networks
CSC-263 · 8 experiments · 8 available
Design a Simple Network
Create a working LAN, configure the devices, and verify that data actually travels from one end to the other.
Subnetting Practice
Divide an address block into subnets, compute network and broadcast addresses, and validate your answers instantly.
Packet Movement Simulation
Watch how an application's data is wrapped (encapsulated) into segments, packets and frames on the way out, then unwrapped layer by layer on arrival.
Subnetting Calculator
Given any IPv4 address and prefix length, compute the network, broadcast, first and last usable host addresses, and explain the subnet mask.
TCP Three-Way Handshake Simulation
Simulate the TCP three-way handshake and connection teardown, and explain the meaning of SYN, ACK and FIN flags and sequence numbers.
HTTP Client
Construct raw HTTP requests, send them over a TCP connection, and parse the status line, headers and body of the response.
DNS Resolution
Trace a host name from the root of the DNS hierarchy to its authoritative answer and interpret the returned resource records.
CRC Checksum
Compute the CRC of a message with a given generator polynomial, append it to form a valid codeword, and verify that bit errors are detected.
Operating Systems
CSC-264 · 8 experiments · 8 available
CPU Scheduler Simulator
Simulate CPU scheduling algorithms on the same set of processes and compare average waiting and turnaround times.
Page Replacement Lab
Simulate FIFO, LRU and Optimal page replacement on the same reference string and compare their page-fault behaviour.
Producer-Consumer Synchronization
Synchronize a producer and a consumer sharing a bounded buffer using semaphores, and observe the race condition when synchronization is removed.
Banker's Algorithm
Compute Need, run the safety algorithm, and decide whether resource requests can be granted without risking deadlock.
Memory Allocation Strategies
Apply first-fit, best-fit and worst-fit contiguous allocation to a set of holes and requests, and measure fragmentation.
File System Simulation
Simulate contiguous, linked and indexed file allocation on a block device and compare their space use and access behaviour.
Multithreading
Create multiple threads, observe interleaved execution, and see why shared data needs synchronization.
Linux Command Line
Navigate the Linux file system, manage files and permissions, and inspect processes using core shell commands.
Database Management System
CSC-265 · 8 experiments · 8 available
SQL Playground: Build a Table
Create a database table with the right types and constraints, insert records, and answer questions with SELECT queries.
Normalization Lab
Take a denormalized relation, identify its functional dependencies, and redesign it into 1NF, 2NF and 3NF using the SQL console.
DDL and DML Practice
Build a schema with DDL and maintain data with DML while watching the database enforce constraints on every operation.
Joins and Subqueries
Write INNER, LEFT and self joins plus subqueries to answer multi-table questions, and verify equivalent queries return the same answer.
Views and Indexes
Create views to simplify access and indexes to accelerate queries, then use EXPLAIN to observe how the DBMS changes its execution plan.
Transaction Control
Manage BEGIN, COMMIT and ROLLBACK to control transaction boundaries and observe atomicity and isolation with concurrent sessions.
ER Modeling
Convert a written scenario into an ER diagram with entities, relationships, cardinality and participation constraints, then translate it to relational tables.
Aggregate Functions
Use COUNT, SUM, AVG, MIN and MAX with GROUP BY and HAVING to summarize data, and explain how WHERE differs from HAVING.
Artificial Intelligence
CSC-266 · 6 experiments · 6 available
BFS and DFS Search Simulation
Simulate breadth-first and depth-first search on the same graph and compare expansion order, memory use and the paths each one finds.
A* Search Simulation
Simulate A* search on a weighted graph, watch f = g + h decide the expansion order, and verify the returned path is optimal.
Hill Climbing Search Simulation
Simulate greedy hill climbing on a value landscape and observe how local maxima, plateaus and random restarts affect the best solution found.
Minimax Game Playing Simulation
Simulate minimax with alpha-beta pruning on a game tree and verify the optimal move and the value guarantee for MAX.
Expert System Knowledge Base Builder
Design a small rule-based knowledge base for a diagnostic expert system and test it against a set of patient cases.
Inference Engine Simulation
Simulate forward and backward chaining on a small rule base and compare how each strategy reaches a goal.
Semester V
37 experimentsDesign and Analysis of Algorithms
CSC-325 · 6 experiments · 6 available
Merge Sort and Divide and Conquer
Watch merge sort split an array in half, sort each half recursively, and merge the sorted halves back together.
Quick Sort versus Merge Sort
Compare quicksort's in-place partitioning with mergesort's divide-and-conquer merging on identical inputs.
Greedy Fractional Knapsack
Explore the fractional knapsack problem and verify that the value-per-weight greedy choice is optimal.
Longest Common Subsequence by Dynamic Programming
Build the DP table for the longest common subsequence of two strings and trace the optimal solution back.
Dijkstra's Shortest Path
Run Dijkstra's algorithm on a weighted graph and observe how the frontier of settled vertices grows.
N-Queens Backtracking
Watch backtracking place N queens on an N x N board, retreating whenever a placement conflicts with earlier queens.
System Analysis and Design
CSC-326 · 5 experiments · 5 available
Context Diagram (DFD Level 0)
Model the boundary of a system with a context diagram that shows the single process, its external entities and the data flows between them.
Data Flow Diagram (Level 1 Decomposition)
Decompose the context diagram into its main processes, data stores and internal data flows.
Use Case Modeling
Capture functional requirements as use cases, actors and relationships in a use case diagram.
ERD for a Library System
Design an entity-relationship diagram for a library covering entities, attributes, keys and relationships.
Data Dictionary Builder
Document the data flows and stores of a system with a data dictionary of names, types, meanings and constraints.
Cryptography
CSC-327 · 8 experiments · 8 available
Caesar Cipher
Implement and test the Caesar cipher, the classic monoalphabetic shift cipher, in C.
The Enigma Rotor Machine
Inspect a working Enigma rotor machine - keyboard, plugboard, rotor stack, reflector and lampboard - and see how rotating substitution wheels encipher each letter.
The Turing-Welchman Bombe
Inspect the Bombe - nine stepping drums in three bays, the commutator menu panels and the test register - and see how it tested Enigma rotor settings at machine speed.
Vigenere Cipher
Implement the Vigenere cipher, a polyalphabetic cipher that uses a keyword to vary the shift for each letter.
Hash Functions and CRC
Build a simple hash function and a CRC-style checksum and test how they detect changes to input data.
RSA Encryption
Implement the key generation, encryption and decryption steps of RSA with small numbers.
Diffie-Hellman Key Exchange
Simulate the Diffie-Hellman key exchange and verify that two parties arrive at the same shared secret.
Digital Signature with RSA
Sign a message with the private key and verify it with the public key using modular exponentiation.
Simulation and Modeling
CSC-328 · 6 experiments · 6 available
LCG Random Number Generation and Testing
Implement a linear congruential generator and test the quality of the produced pseudo-random sequence.
Random Variate Generation by Inverse Transform
Generate samples from an exponential distribution using the inverse transform method on uniform random numbers.
Monte Carlo Integration
Estimate the value of a definite integral by averaging random samples inside and outside the function.
Discrete-Event Simulation of a Single-Server Queue
Simulate an M/M/1 queue with a discrete-event clock and measure utilization, queue length and waiting time.
Inventory System Simulation
Simulate an inventory system with random demand and periodic review, and compare reorder policies by total cost.
Model Verification and Validation
Apply verification and validation techniques to a simulation model and report its accuracy against known results.
Web Technology
CSC-329 · 6 experiments · 6 available
HTML and CSS Page Layout
Structure a page with semantic HTML and lay it out with CSS using the box model, Flexbox and Grid.
JavaScript DOM and Events
Select and modify DOM elements from JavaScript and respond to user events with event listeners.
PHP Forms and Sessions
Process HTML form data in PHP with GET and POST, and persist state across requests using sessions.
MySQL with PHP
Connect PHP to a MySQL database, run SQL queries with prepared statements, and display the results.
AJAX with XMLHttpRequest
Fetch data from a server asynchronously with XMLHttpRequest and update the page without a full reload.
Responsive Design with Media Queries
Make a layout adapt to any screen size using fluid units, flexible grids and CSS media queries.
Image Processing
CSC-332 · 6 experiments · 6 available
Contrast Stretching and Histogram Equalization
Improve a low-contrast image with point operations: adjust brightness and contrast, then apply histogram equalization and watch the intensity histogram flatten.
Spatial Filtering: Smoothing and Sharpening
Convolve the source image with 3x3 smoothing and sharpening kernels and compare how each kernel changes edges, noise and texture.
Image Transformation: DFT and FFT
Transform the image into the frequency domain with the 2D FFT, inspect the magnitude spectrum, and filter the image with circular lowpass and highpass masks.
Edge Detection: Sobel and Canny
Compute gradient magnitude with Sobel, Prewitt and Roberts operators, threshold it, and relate the threshold to the number and thickness of detected edges.
Morphological Operations: Dilation and Erosion
Binarize the image with manual or Otsu thresholding, then apply dilation, erosion, opening and closing with a structuring element and observe the geometric changes.
Image Segmentation: Thresholding
Separate foreground from background by global thresholding: choose the threshold manually or let Otsu's method find the value that maximizes between-class variance.
Semester VI
12 experimentsCompiler Design and Construction
CSC-376 · 6 experiments · 6 available
Lexical Analyzer
Build a tokenizer that reads source text and classifies each lexeme as identifier, keyword, number, operator or symbol.
Symbol Table Implementation
Build a symbol table that stores identifier attributes such as name, type and scope, with insert and lookup operations.
Recursive Descent Parser
Write a recursive descent parser for arithmetic expressions and verify it follows a context-free grammar.
Operator Precedence Parsing
Use an operator precedence table to parse expressions, giving each operator its binding power.
NFA to DFA Conversion
Convert a nondeterministic finite automaton to an equivalent deterministic one using the subset construction.
Intermediate Code Generation
Translate expressions into three-address intermediate code using temporary variables.
.NET Centric Computing
CSC-378 · 6 experiments · 6 available
C# Basics: Hello, .NET
Write, compile and run your first C# program in the .NET environment and get comfortable with Console I/O.
OOP in C#: Bank Account Class
Model a bank account as a class with private fields, public properties, constructors and methods.
LINQ Queries over Collections
Query in-memory collections with LINQ using filtering, projection, ordering and aggregation.
Windows Forms Application
Build a Windows Forms interface with controls, layouts and event handlers that react to user actions.
ADO.NET Database Access
Connect to a database with ADO.NET, run a parameterized query and read the results into a collection.
ASP.NET MVC Controller and Routing
Build an ASP.NET MVC controller, understand routing, and return views and JSON from action methods.
How laboratories work here
Each lab opens in its own full-screen workspace on a new tab. The lab brief — objective, theory, instructions and tasks — stays docked beside the live interactive canvas, and the reading area remains exactly where you left it. Close the tab or use the exit button to return to the curriculum.