Assignments
This course includes four progressive assignments, each contributing 10% to your final grade. Together, the assignments guide you through the incremental development of a Paper Management System — a realistic full-stack web application for managing academic paper records.
The assignments are designed to give you focused, hands-on practice with the major components of a full-stack application before you apply them more independently in the course project. Each assignment builds on earlier work while introducing a new layer of the application, allowing you to see how backend services, databases, frontend interfaces, and full-stack frameworks fit together over time.
Where appropriate, the assignments will provide starter code, configuration, tests, or setup instructions so that you can focus on the concepts and technical tasks being assessed rather than spending unnecessary time on boilerplate or project scaffolding. You will be expected to understand, implement, test, and verify the work you submit.
At a Glance
What you will build:
- A full-stack Paper Management System developed incrementally
- Backend APIs for managing paper metadata
- Persistent data storage using relational databases
- A frontend interface for creating, viewing, and updating records
- A progressively integrated full-stack application
How it is structured:
-
Each assignment extends the same system with a new focus:
- Assignment 1: Backend API + SQLite
- Assignment 2: Migrate to PostgreSQL + Prisma (data modeling and queries)
- Assignment 3: Add a React frontend that communicates with your API
- Assignment 4: Migrate to Next.js and introduce modern styling
-
Later assignments reuse and extend earlier work rather than starting from scratch.
What you will practice:
- Designing and implementing backend APIs
- Modeling and managing relational data
- Building interactive frontend interfaces with React
- Understanding client–server interaction and application state
- Integrating frontend, backend, and data layers into a coherent application
- Incrementally developing, testing, debugging, and verifying a full-stack system
The Paper Management System: Background
In academic peer review, editors often select reviewers based on their previous publications. Reviewers may therefore be asked to maintain and provide lists of representative papers as part of the review process.
Traditionally, this information may be managed through spreadsheets, documents, or repeated form submissions. These approaches can be time-consuming, error-prone, and difficult to keep consistent over time.
The Paper Management System provides a realistic application context for addressing this problem. It allows users to store, view, update, and manage paper records in a structured and reusable way.
You do not need any prior knowledge of academic publishing to complete these assignments. The domain is simply a practical setting for learning full-stack development. The assignments focus on the technical design and implementation of the application, rather than on academic publishing itself.
Assignment Timeline
Each assignment builds upon the previous one, so make sure to start early and maintain steady progress throughout the course.
| Assignment | Topic | Release Date | Due Date |
|---|---|---|---|
| 1 | Basic Backend Development | September 20 | October 4 |
| 2 | PostgreSQL with Prisma ORM | October 4 | October 18 |
| 3 | React Frontend | October 18 | November 1 |
| 4 | Next.js + Modern Styling | November 8 | November 22 |
- All assignments are due at 11:59 PM Toronto time on the due date.
- Each assignment contributes 10% to your final grade.
- Assignments must be submitted through Quercus.
- Start early to allow time for questions, testing, and debugging.
Assignment Structure
Assignment 1: Basic Backend Development
Build the foundational backend API for paper metadata management using Express.js and SQLite.
Key Features:
- RESTful API implementation with Express
- CRUD operations for paper metadata (title, authors, year, etc.)
- Database operations with SQLite
- Input validation
- Error handling
Technologies:
- Express.js
- SQLite
- REST API principles
Assignment 2: PostgreSQL with Prisma ORM
Migrate the backend to PostgreSQL with Prisma ORM and enhance data modeling.
Key Features:
- Database migration to PostgreSQL with Prisma ORM
- Query operations with Prisma
- Data validation
Technologies:
- PostgreSQL
- Prisma ORM
- Express.js
- TypeScript
Assignment 3: React Frontend
Develop a React frontend for managing papers and authors and interacting with the backend.
Key Features:
- React components for paper management
- Form handling with validation
- API integration with
fetch() - Frontend-backend integration
- Client-side routing with React Router
Technologies:
- React
- React Router
fetch()API
Assignment 4: Full-Stack Next.js Application
Upgrade to Next.js with modern styling.
Key Features:
- Migration from React (Vite) to Next.js
- Modern UI with Tailwind CSS and shadcn/ui
Technologies:
- Next.js
- Tailwind CSS
- shadcn/ui
AI Usage for Assignments
AI tools are permitted in this course, but assignments are designed for hands-on skill development.
For assignments, students are expected to:
- Write most of the code themselves
- Understand the task, form their own approach, and make a genuine attempt before seeking implementation-specific AI assistance
- Use AI primarily for clarification, debugging, or small, isolated examples or snippets
- Understand, verify, and be able to explain all submitted work
Using AI to generate large portions of an assignment solution, substantial starter code, or end-to-end implementations is not appropriate, because it bypasses too much of the technical practice the assignment is designed to provide.
Each assignment requires a short reasoning.md file to document your initial thinking and, where applicable, meaningful AI assistance. See AI Use in Assignments for the assignment-specific expectations, and AI Examples & Checklists for examples and practical guidance.
Submission Guidelines
- All assignments must be submitted through Quercus.
- Each assignment has specific submission requirements detailed in its handout.
- A short
reasoning.mdfile is required for each assignment to document your thinking and AI usage. - Auto-grading will be used to evaluate submissions.
Questions and Support
- Check assignment specifications carefully before starting.
- Use Piazza for assignment-related questions.
- Attend office hours for additional support.