KotlinCS 124 LogoJava

MP2: API Server

Let’s continue our work on the machine project! We’ll begin our next project checkpoint, MP2, by delving in to how our API server works. We’ll install the test suites and begin work on our first few test cases.

Getting Started
Getting Started

For MP2 we’ll be continuing on with the project that you started working on for MP0. You’ll need the environment that you set up during that checkpoint to proceed, and you’ll need to have completed MP1.

Note that, as we continue with the MP, these walkthroughs will get shorter, and we’ll expect you to do more work on your own. Don’t be worried! You can do it. Use the code we’ve provided as a guide, and get support when you need it.

Before you can get to work on MP2 we need to install the MP2 test suites. Before we continue, please commit your work. You should make sure to commit both immediately before and immediately after we install the MP2 test suites. (If there are no changes to commit beforehand, that’s fine.)

You’ll receive the MP2 Kotlin test suites via email. Move the file to the app/src/test/kotlin/edu/illinois/cs/cs124/ay2023/mp/test/ directory in your machine project. You’ll also want to reconfigure grade.yaml in the root directory of your project to request that we grade Checkpoint 2. Just like MP1, there’ll also be a few compilation errors to fix as well. Let’s look at how to do these things together:

Course Class
Course Class

Your first task is to create a Course class. It should store the same information about each course that the existing Summary class does, but should also include the description as a String property named description. You can accomplish this in one line using inheritance!

When you have completed this task, you will pass test0_CourseClassDesign.

Server GET /course/ Route
Server GET /course/ Route

Our next challenge is to add support in our API server for returning complete details about a course. Currently we only receive a list of summaries, which do not include the course description. We’ll add a new route on our server to return details about a single course. Along the way, we’ll delve into the role of the server in our app.

When you have completed this task, you will pass test1_ServerCourseRoute.

There is one approach here that uses a Summary as a key to a map. This is not the only way to do this, and it may not even be the better way. But please note that, to use any class as a map key, it needs to implement both equals and hashCode. Android Studio can help you add these methods to your Summary class if needed.

Your Goal Today
Your Goal Today

As a reminder, on lessons where we focus on the machine project we will not assign a homework problem! However, the lesson will usually focus on helping you complete a particular part of the MP test suite, and so we encourage you to spend time on that in lieu of a homework problem.

Right now your goal should be to

  1. install the MP2 test suites and make the changes required for them to compile
  2. load full course information from the JSON provided, and
  3. complete the server GET /course/ route as described above
  4. at that point you’ll be passing test0_CourseClassDesign and test1_ServerCourseRoute

If you get stuck, find us for help on the tutoring site or forum. If you have extra time after today’s lesson, you may want to move on and begin work on the next lesson, which also covers MP2.

MP2 Scores
MP2 Scores