Skip to main content

One of the limitations of the current implementation of the StudentDirectory portion of the PackScheduler system is that the students are not stored in a sorted order in the directory. With Lab 03, you will work with a custom list library that will store elements in sorted order as defined for each element type.

You will test a provided library of a sorted list implementation and then integrate that list into your PackScheduler system to replace the unsorted ArrayList that is used in StudentDirectory and StudentRecordIO. For sorted order to work, you will implement the Comparable interface for the Student class. The changes to the PackScheduler library will be evaluated through your own test suite and a teaching staff test suite to demonstrate that your program meets the updated PackScheduler requirements.

Callout Box Icon

Learning Outcomes

  • Update unit tests for Student, StudentRecordIO, and StudentDirectory
  • Achieve at least 80% statement coverage when executing your tests against Student, StudentRecordIO, and StudentDirectory
  • Test and use a third party library
  • Use code coverage tools to identify other paths to test
  • Use static analysis tools to identify potential problems
  • Run black box tests
  • Find and fix any bugs detected during testing

AI Policy

As per the AI policy in the CSC 217 syllabus, you may use AI as a learning assistant, not a homework assistant.

If you use AI, you MUST cite it in your README.md file. You MUST also document if you did NOT use AI!

Lab Overview

For students in asycn lab sections (Sections 601 and 731), watch the Lab 03 Overview Video.

The lab will be completed in the following steps:

Lab Checks

There are several checks that will occur during your build to ensure that you’re following software engineering best practices:

  • Library checks: For Lab 03, you’ll be working with the SortedList class that is part of the CSC216Collections library. All of your references to ArrayList MUST be removed from your project - including the Javadoc. If you receive a red ball and a message in the console output about using ArrayList search your project for the string and regenerate your Javadoc!
  • Coverage checks: You must have 80% coverage for each non-GUI and non-test class in PackScheduler. A tool will check that you have passed the 80% threshold before running any of the teaching tests.

Lab Deadlines & Jenkins Servers

All labs are due 10 minutes before the start of the next lab. Additionally, each lab section has their own dedicated lab Jenkins server. The table below provides the deadline and server URL for each lab section for the current semester.

Section 201 2/23/2026 10:30am https://csc217-201-jenk.csc.ncsu.edu/
Section 202 2/23/2026 12:40pm https://csc217-202-jenk.csc.ncsu.edu/
Section 210 2/24/2026 8:00am https://csc217-210-jenk.csc.ncsu.edu/
Section 211 2/24/2026 10:30am https://csc217-211-jenk.csc.ncsu.edu/
Section 213 2/24/2026 2:50pm https://csc217-213-jenk.csc.ncsu.edu/
Section 221 2/25/2026 10:30am https://csc217-221-jenk.csc.ncsu.edu/
Section 222 2/25/2026 12:40pm https://csc217-222-jenk.csc.ncsu.edu/
Section 731 2/24/2026 11:45pm https://csc217-731-jenk.csc.ncsu.edu/
Section 601 2/24/2026 11:45pm https://csc217-601-jenk.csc.ncsu.edu/

Lab Rubric

You will be evaluated out of 70 points in the Technical Rubric. Synchronous students will also be evaluated on their teaming: a combination of In-Lab Participation and Out-Lab Participation. Collaborating Asynchronous students will also be evaluated on their participation in their pair.

Pair/teams are expected to work together on all aspects of the lab activity. Points may be deducted for not contributing or for not providing a partner the opportunity to contribute. The teaching staff strongly encourages working synchronously and requires that these collaborative sessions are documented in GitHub commit messages for the teaching staff to note the team contribution.

Technical Rubric

Phase Grade Item Points Details
Teaching Staff Unit Tests 15 Pass all of the teaching staff unit tests (no regressions), both provided and hidden.
Student Unit Tests 15 Pass all of your unit tests.
Student Test Coverage 15 80% statement/line coverage on Student, StudentRecordIO, and StudentDirectory
Teaching Staff System Tests 10 Pass all of the teaching staff system tests (note that they will not be provided).
Javadoc Comments 5 All classes, including the tests are commented with meaningful comments.
Javadoc Generation 5 Javadoc tool was used to generate the HTML version of the API, which matches the current version of the in-code Javadoc.
Style 5 Any PMD, CheckStyle, or SpotBugs Scary or Scariest notifications will result in a one point deduction, up to the available points.
  Total Points 70  

Synchronous Collaboration Rubric

Grade Item Points Details
In-Lab Collaboration 10 PTFs will be looking for collaboration with your partner during lab activities. Did you participate in completing the lab assignment? Did you balance your roles of driver and navigator? There will be deductions for observations of non-participation or hogging of one role or the other so a partner cannot participate.
Out-Lab Collaboration 10 Did you make at least one meaningful commit to GitHub for completing the lab (e.g., meaningful means that the commit has to contribute to the solution and isn't superficial)? If you pair programmed, is it noted in the commit message? Did you not allow your partner, who wanted to contribute, to commit?
Tasks 5 Did you add your tasks for the lab to the top of the README file? Did you include owners? Did you include internal deadlines? Are the tasks shown as complete with any other needed updates (e.g., the person who completed or helped with the task changed)
Collaboration Check-in 5 Did you complete the collaboration check-in on time?

Asynchronous Collaboration Rubric

Grade Item Points Details
Collaboration 10 Did you make at least one meaningful commit to GitHub for completing the lab (e.g., meaningful means that the commit has to contribute to the solution and isn't superficial)? If you pair programmed, is it noted in the commit message? Did you not allow your partner, who wanted to contribute, to commit?
Tasks 5 Did you add your tasks for the lab to the top of the README file? Did you include owners? Did you include internal deadlines? Are the tasks shown as complete with any other needed updates (e.g., the person who completed or helped with the task changed)
Collaboration Check-in 5 Did you complete the collaboration check-in on time?

Deductions

Grade Item Points Details
Misnamed file or incorrect project structure -5 Incorrect names of files or incorrect project structure. This can include problems when importing the project to Eclipse for acceptance testing, incorrect location of the system test file, incorrect file extension, etc.
Committed Properties File -20 Starting with Lab 5, there will be a deduction if you commit your secret properties file that has the registrar password.
Missing AI Documentation -10 Any AI usage, or lack of AI usage, must be documented in the repository's README.md file. An empty README.md file will result in a deduction.
Other deductions -5 If the project has to be manually graded due, you will receive a 5 point deduction. Make sure that your project builds on Jenkins!