Project Handout
In the course project, your task is to create a small project from the start to the end with the help of large language models. The project is open-ended and designed to give you hands-on experience with large language models, helping you understand how to use them in an end-to-end task of your choice.
Choosing a project topic
There are no restrictions on the topic, but it should be related to the course. In essence, use a large language model to do something useful, or not so useful, but fun. The project could be, for example, a game or a tool, or even a web application, depending on your background. The project can also be limited to the conceptualization of how a large language model could be used to solve a problem.
When choosing a project topic, pick one that is small enough so that you can complete it in a couple of working days. At the same time, the project should be large enough to be interesting (to you). Ideally, the topic would be such that it can be worked on incrementally, where completing only parts of it would already lead to a minimum viable product.
Note! Do not pick a project that requires using binary format data such as pictures or similar. This is mostly a requirement from perspective of submitting the project and eventually coming with ways to — potentially — automatically grade the projects. So far, we cannot easily grade projects that require binary data.
Here are a handful of potential project ideas to get you started:
-
Conceptualization of how large language models could be used to aid in solving a specific problem, including discussion on the possible limitations and issues of the approach.
-
A game built with the help of a large language model. The game could be similar to the example on Landing on the Moon with Large Language Models in a way that it would have a graphical user interface and an AI that plays the game, but it could as well be — for example — a text-based adventure game where the player interacts with the game world through text commands.
-
A data formatting or analysis system that could use large language models to format data from one form to another, or that could use a program written with the help of large language models to format or analyze the data. Such a system could, for example, convert log data to summary format, or analyze text data to provide descriptions of the data.
-
A tutoring system that uses a large language model to generate questions about a specific topic and to provide feedback on the answers to the questions. The tutoring system could, for example, focus on elementary school mathematics.
-
A question & answer system that uses retrieval-augmented generation and a large language model to answer questions about a specific topic. The retrieval-augmented generation system could be provided with earlier questions and responses on the topic.
-
A tool that uses a large language model to generate text for a specific purpose, such as a tool that generates text for a specific type of document such as a blog post, or a tool that generates text for a specific type of advertisement.
-
Code and examples for fine-tuning a large language model for specific task, such as text generation, text classification, or text summarization. Such a project should also include a reflection on how the fine-tuning process went, and what could be improved.
Do remember though that you can pick any topic you like, as long as it is related to the course. You can also use a large language model to come up with a project topic.
Defining requirements
After you have chosen a topic, create a brief software requirements specification (SRS) document (or similar) for the project. The document should contain at least the following sections:
- Introduction (with purpose and scope)
- Overall description (with product perspective, product functions, and user characteristics)
- Specific requirements
The SRS document should be written in Markdown format. Include at least two user stories to the requirements document.
Implementation and optional testing
To implement the project, if it features a software component, you can use any programming language you like, or use Python that we have used in the course so far. You can also use any libraries or frameworks you like. Test the application manually and make sure that it works as expected — at least for the happy path.
You can also optionally try creating automated tests for the application, but they are not a mandatory requirement.
If the project does not feature a software component, you can implement a prototype of the application, or just describe how the application would work.
Project deliverables
The project should be returned as a single zip-file that contains the requirements of the project, a brief project report, and any associated source code. The contents of the zip-file should be as follows:
project_idea.md
project_requirements.md
project_report.md
src/
...
The document project_idea.md
should contain the key idea of the project summarized in a few sentences. The document project_requirements.md
should contain the software requirements specification (or similar, as outlined above). Finally, the project_report.md
should contain (1) main obstacles in realizing the project, (2) a summary of the main results of the project, (3) a description of how you used large language models to realize the project, and, optionally, (4) the next steps for the project.
Finally, the src
folder in the zip should contain any associated source codes for the project. If your project has dependencies, include also a requirements.txt
file that lists the dependencies (or similar, depending on the language you use), but do not explicitly include the libraries or frameworks that the project depends on.
All documentation should be written in Markdown format. Any source code should be included.
Submission and review
The zip file is submitted on the next page. Once you’ve submitted the project, you get to briefly review it and a few projects from others in the course. The review is anonymous and you will not know who reviewed your project.