All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Calendar Versioning of the following form: YYYY.0M.0D.
- Disabled an aspect of the coderunner extension
- Fixed broken links
- Disabled AI features globally
- Added JUnit test file
GameInventory1LTestcovering the constructor, every kernel method, iterator semantics (including that the wrappedremove()throwsUnsupportedOperationException), and every Standard method - Added JUnit test file
GameInventoryTestcovering every secondary method as well as theequals,hashCode, andtoStringoverrides, including tie handling inmostAbundantItemand order-independent hash consistency - Added use case
InventoryTradingDemo— a scripted RPG scene that loots a chest, trades with a shopkeeper, and merges a quest reward - Added use case
CraftingStation— a component that holds aGameInventoryin its own representation to model recipes and consume ingredients from a player's inventory - Added polished project
README.mddocumenting the hierarchy, API, project layout, convention and correspondence, and how to run the tests and demos - Added reflection responses covering growth, knowledge gaps, skills gained, and next steps
- No changes were made to the kernel or enhanced interfaces; all additions in this release are tests, sample clients, and documentation
- Designed kernel implementation
GameInventory1Lfor the GameInventory component, layered on top ofjava.util.HashMap<String, Integer> - Documented convention (representation invariant) and correspondence
(abstraction function) at the top of
GameInventory1L - Implemented all kernel methods (
addItem,removeItem,getQuantity,size) according to the convention and correspondence - Implemented the
Iterable<String>iterator, wrapped so thatremove()throwsUnsupportedOperationExceptionto prevent clients from bypassing the kernel - Implemented all Standard methods (
newInstance,clear,transferFrom), including acreateNewRep()helper and an O(1) reference swap intransferFrom - Added a no-argument constructor that initializes the inventory to empty
- Designed abstract class
GameInventorySecondaryfor the GameInventory component - Implemented all secondary methods (
hasItem,totalItems,mostAbundantItem,transferItem,mergeFrom) using only kernel methods and iteration - Implemented
toString(),equals(Object), andhashCode()using only kernel methods, so concrete kernel implementations do not need to override them - Added precondition assertions to every secondary method to match the contracts on the enhanced interface
- No changes were made to the kernel or enhanced interfaces; all secondary-method and kernel-method signatures were implemented as previously specified
- Designed kernel and enhanced interfaces for GameInventory component
- Added hierarchy diagram for GameInventory component
- Changed design to include
size()kernel method to support secondary method implementations - Changed design to include
Iterable<String>in kernel to allow iteration in secondary methods - Changed design to include
mostAbundantItem()andmergeFrom()as secondary methods
- Designed a proof of concept for GameInventory component
- Changed design to include
transferItem()between two inventories - Changed design to include
displayInventory()for printing inventory contents
- Designed a ReadingTracker component
- Designed a GameInventory component
- Designed a EventPopularityAnalyzer component
- Added table-based rubrics to all 6 parts of the project
- Updated gitignore to exclude more files
- Fixed image markdown in the interfaces document
- Added
/binto.gitignore, so binaries are no longer committed - Added the TODO tree extensions to
extensions.json - Added the
todo-tree.general.showActivityBarBadgesetting tosettings.json - Added the
todo-tree.tree.showCountsInTreesetting tosettings.json - Added the VSCode PDF extension to
extensions.json - Added
java.debug.settings.vmArgssetting to enable assertions (i.e.,-ea) - Added information about making branches to all parts of the project
- Added information about how to update the CHANGELOG to every part of the project
- Added information about how to make a pull request to every part of the project
- Updated
settings.jsonto format document on save usingeditor.formatOnSavesetting - Updated
settings.jsonto exclude certain files from markdown to PDF generation usingmarkdown-pdf.convertOnSaveExcludesetting - Updated
settings.jsonto use latestjava.cleanup.actionssetting - Updated
settings.jsonto automatically choose line endings usingfiles.eolsetting - Updated
settings.jsonto organize imports automatically on save using theeditor.codeActionsOnSaveandsource.organizeImportssettings - Changed the component brainstorming assignment to ask a few clarifying questions
- Changed the component brainstorming example from
Point3DtoNaturalNumberto avoid the getter/setter trend - Updated assignment feedback sections to include a link to a survey that I'll actually review
- Updated README to include step about using template repo
- Updated part 3 rubric to include a hierarchy diagram
- Updated part 6 rubric to account for overall polish
- Fixed issue where checkstyle paths would not work on MacOS
- Removed
java.saveActions.organizeImportssetting fromsettings.json - Removed references to
Point3Dcompletely
- Added a list of extensions to capture the ideal student experience
- Added PDFs to the
.gitignore - Added the OSU checkstyle config file
- Added the OSU formatter config file
- Added a
settings.jsonfile to customize the student experience - Created a README at the root to explain how to use the template repo
- Created initial drafts of the six portfolio assessments
- Added READMEs to key folders like
testandlibto explain their purpose