What is a software library?
A reusable archive of shared code (classes, interfaces, exceptions, annotations) that application code calls when needed
What is a software framework?
A predefined flow of logic with “gaps” for app code. The framework controls execution and calls your code (inversion of control)
What principle differentiates frameworks from libraries?
Inversion of control: the framework manages execution flow, and developers “plug in” code
What is dependency injection?
Technique to achieve inversion of control by injecting dependencies rather than hardcoding them
What is the Spring framework?
An application development framework relying on inversion of control via dependency injection
What is a Spring “Bean”?
A class managed by the Spring IoC container, with dependencies configured via metadata
What is Spring Boot?
A Spring-based framework that simplifies setup by providing conventional defaults, eliminating most XML configuration
What is HTTP?
Hypertext Transfer Protocol — stateless, request/response-based, application-layer protocol
What are the main HTTP verbs?
GET (fetch), POST (create), PUT (create/update), DELETE (delete)
Example URL breakdown:
https://vsb.mcgill.ca:8080/vsb/criteria.jsp?term=202509&courses=ECSE-321
Protocol: https
Host: vsb.mcgill.ca
Port: 8080
Path: /vsb/criteria.jsp
Query: term=202509&courses=ECSE-321
HTTP Status Code categories?
1xx Informational
2xx Success (200 OK, 202 Accepted, 204 No Content)
3xx Redirection (301 Moved, 304 Not Modified)
4xx Client errors (400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 409 Conflict)
5xx Server errors (500 Internal Error, 503 Service Unavailable)
What does REST stand for?
Representational State Transfer
What are the characteristics of RESTful services?
Resource-centered
Operate via URIs
Use standard HTTP verbs
Pass data as JSON/XML
What does “idempotent” mean in HTTP methods?
Repeating a request has the same effect as a single request (e.g., PUT is idempotent, POST is not)
Why is JSON commonly used in REST?
Lightweight, text-only, human-readable, and easily maps to objects
How should REST integrate with MVC?
REST aligns best with the Controller (not exposing Model directly), to protect server control and prevent illegal state manipulation
Why not expose Model directly in REST?
Risks include information leaks, unauthorized state changes, and loss of server-side control