- EG6026 Transport Infrastructure Engineering Assignment 1 Individual Coursework | UOEL
- TEFL Assignment: Analyzing Tenses, Punctuation Usage, and Effective Teacher-Student Communication
- EEE8089 Assignment: Raspberry Pi Network Architecture and Remote Access Configuration
- ILM Unit-409: focused on understanding the impact of development on workplace performance: Managing Personal Development, Coursework, UOS, UK
- ILM Unit-409: focused on implementing and evaluating planned development activities and apply learning in the workplace: Managing Personal Development, Coursework, UOS, UK
- ILM Unit-409: focused on identifying and prioritising work-related development requirements: Managing Personal Development, CourseWork, UOS, UK
- 7PS032: Identify type of study design needed, including within or between groups where relevant: Research Methods Course Work, UOW, UK
- 7PS032: What do the means, range and standard deviations show?: Research Methods Course Work, UOW, UK
- 7PS032: You need to write a research proposal. It must be a quantitative research proposal: Research Methods Course Work, UOW, UK
- MN0493: Report the major points of your discussions with the client. This should include the construction of the portfolios: Investments and Risk Management Course Work, NUN, UK
- DAT7303: In portfolio 3, students must complete 4 tasks related to analysing a dataset using CRISP- DM methodology: Data Mining Course Work, UK
- BUSI 1475: Your task is to identify and select an article from the BBC News website (news.bbc.co.uk): Management in a Critical Context Course Work, UOG, UK
- COMP6029: Computer Science and Electronic Engineering related subjects generally use the IEEE referencing style: Network Systems Course Work, UOS, UK
- UMACTF-15-M: You have recently been appointed as a Financial Analyst for a leading investment bank in London: Corporate Financial Strategy Course Work, UWE, UK
- BAM5010: choose an organisation and make some recommendations for the delivery: Work Based Project Course Work, UOB, UK
- You are required to calculate ratios for Fresh Farms Ltd: financial Course Work, UK
- Understand the legal, ethical and theoretical context for health, safety and risk management: leadership and Management Course Work, UK
- P3 Describe the types of training and development used by a selected business: BTEC Business Extended Diploma Pearson Course Work, UK
- Describe how a selected business identifies training needs: BTEC Business Extended Diploma Pearson Course Work, UK
- Discuss your chosen business, background information and why you have chosen that business: BTEC Business Extended Diploma Pearson Course Work, UK
CS126 Design of Information Structures Coursework Specification 2026 | UOW
| University | University of Warwick (UOW) |
| Subject | CS126 Design of Information Structures |
CS126 Coursework Specification
1 Introduction
A developer of a new Java application has asked for your help in storing a large amount of film data efficiently. The application, called Warwick+, is used to present data and fun facts about films, the cast and crew who worked on them, and some ratings the developer has gathered in there free time. However, because the developer hasn’t taken the module, they don’t want to design how the data is stored.
Therefore, this coursework and the task the developer has left to you, is to design one or more data structures that can efficiently store and search through the data. The data consists of 3 separate files:
- Movie Metadata: the data about the films, including there ID number, title, length, overview etc.
- Credits: the data about who stared in and produced the films.
- Rthaetiunsgesr: rtahteeddtahtea fialbmo.ut what different users thought about the films (rated out of 5 stars), and when
To help out, the developer of Warwick+ has provided classes for each of these. Each class has been populated with functions with JavaDoc preambles that need to be filled in by you. As well as this, the developer has also tried to implement the MyArrayList data structure into a 4th dataset (called Keywords), to show you where to store your data structures and how they can be incorporated into the pre-made classes. Finally, the developer has left instructions for you, which include how to build, run and test you code; and the file structure of the application (see Section 4).
Therefore, your task is to implement the functions within the Movies, Credits and Ratings classes though the use of your own data structures.
2 Submission Details
You should submit the following in a singular ZIP file by Tuesday 5th May 2026 @ 12 noon:
- Tsuhbemdisisrieocntoarfyteorfzitphpeinagppulpictahteiocnodinec,ltuodienngsuAreLaLll ficoledsealroecpatreedsenwt.ithin it. Make sure you check your
- Asho1u5l0d0iwncolruddreepdoetratidlsisocnustshinegdtehceisdioantsa ystoruucmtuardee(,s)inycoluudhinavgewimhyplyemouenptiecdkefdorththeed3atcalasstsreus.ctTuhree(sr)epaonrdt how you implemented it/them. The report can be structured however you see fit, but should be saved as a PDF document. References, captions, tables, figures and code listings do not count towards the word limit.
The ZIP file should be uploaded to Tabula by the deadline specified. Instructions for combining all your files together into a ZIP file on the DCS system can be found by running the command man zip in the terminal of any DCS machine.
All marking will be done in accordance with the Universities marking scheme (more details can be found at https://warwick.ac.uk/fac/sci/dcs/teaching/handbook/assessment/). The work you submit should be your own work, and thus should abide by the Universities rules on plagiarism. All late submissions and cases of plagiarism will be handled in accordance with the Universities regulations (Reg. 36.3 and 11 respectively). Any and all code will be evaluated on the Department of Computer Science machines. Therefore, you should test and validate your code works on these machines before and after submitting your work to Tabula.
When developing the code, you should not use the data structures, searching algorithms or sorting algorithms implemented within the Java itself. This includes the data structures found within the Java utils package. However, you are allowed to use any Java data structure interfaces. These should be clearly communicated in both your code and in the report.
It should also be noted that submitting a solution that utilises the MyArrayList will score low marks, as an example of this solution has been provided for you. You should implement your own data structures within the Movies, Ratings and Credits classes.
3 Guidance
Have a read through the documentation provided in Section 4. This explains how to build and run the application. This can be done without writing anything, so make sure you can do that first.
I would then have a look at the comments and functions found in the Movies, Credits and Ratings classes. The location of these is described in Section 4.5.2. Each of the functions you need to implement has a comment above it, describing what it should do. It also lists each of the parameters for the function (lines starting with @param), and what the function should return (lines starting with @return).
When you are ready to start coding, I would recommend starting off with the Movies class first. This is because whist it is a rather long file, it is also one of the simplest. When you have completed a function, you can test it using the test suit described in Section 4.4. More details about where the code for the tests are can be found in Section 4.5.3.
If you have any issues, don’t hesitate to contact the Module Organisers or the lab tutors!
Details for them can be found on the module webpage.
4 Warwick+
Warwick+ is a Java application that pulls in data from a collection of Comma Separated Value (csv) files. It is designed to have a lightweight UI, so that users can inspect and query the data. The application also has a testing suit connected to it, to ensure all the functions work as expected. The functions called in the Warwick+ UI are the same as those called in the testing, so if the tests work, the UI will also work.
4.1 Required Software
For the Warwick+ to compile and run, Java 21 is required. If you are running Warwick+ on the DCS system, then you don’t need to worry about this as it has already been installed for you. However, if you are planning on working on Warwick+ on your own machine, then you will need to make sure you download this specific version of Java. Whilst a newer version of Java can be utilised, other parts of the application will also have to be updated and this has not been tested. As such, it is highly recommended you download and use Java 21.
4.2 Building Warwick+
To compile the code, simply run the command shown in the table below in the head directory (the one with src directory in it).
| Linux/DCS System | MacOS | Windows |
| ./gradlew build | ./gradlew build | ./gradlew.bat build |
4.3 Running the Warwick+ Application
To run the application, simply run the command shown in the table below in the head directory (the one with src directory in it).
| Linux/DCS System | MacOS | Windows |
| ./gradlew run | ./gradlew run | ./gradlew.bat run |
This command will also compile the code, in case any files have been changed. When this is done, a window will appear with the UI for the application. The terminal will not be able to be used at this time. Instead it will print anything required from the program. To stop the application, simply close the window or press CTRL and C at the same time in the terminal.
4.4 Running the Warwick+ Test Suite
| Linux/DCS System | MacOS | Windows |
| ./gradlew test | ./gradlew test | ./gradlew.bat test |
This command will also compile the code, in case any files have been changed. When ran, this will produce the output from each test function. It will also produce a webpage of the results, which can be found in build/reports/test/test/index.html
4.5 Warwick+ File Structure
Every effort has been made to keep the file structure simple and clean, whilst maintaining good coding practices. In the following subsections, a brief description of each of the key directories is given, along with its contents and what you need to worry about in them.
4.5.1 data/
This directory stores all the data files that are pulled into the application. There are 4 .csv files in this directory, 1 for each of the datasets described in Section 1. Each line in these files is a different entry, with values being separated by commas (hence the name Comma Separated Values). You do not need to add, edit or remove anything from this directory for your coursework. More details on how these files are structured can be found in Section 4.6.
4.5.2 src/main/
This directory stores all the Java code for the application. As such, there are a number of directories and files in this directory, each of which are required for the application and/or the UI to function. To make things simpler, there are 3 key directories that will be useful for you:
- janavyath/iinngtefrrofmactehsi/s:dSirteocrteosryth, ebuinttietrfmacaeycblaessuesseffuolrttoheredaadtathsreotus.ghY.ou do not need to add, edit or remove
- jfraovma/Ssetcotrioens/1: Satroerleosctahteedc,latshseeslfaotrtetrhe3doaftawsheitcsh. aTrheisthisewchlaesrseesthyeoKueynweoedrdtso, Mcoovmipelse,teC.reTdhietrse,fRoraet,iynogus should only need to edit the following files, but it might be worth reading the others:
- java: Stores and queries all the data about the films. The code in this file relies on the Company and Genre classes which can be found in the Company.java and Genre.java files.
- java: Stores and queries all the data about who stared in and worked on the films. The code in this file relies on the CastCredit, CrewCredit and Person classes which can be found in the CastCredit.java, CrewCredit.java and Person.java files respectively.
- java: Stores and queries all the data about the ratings given to films
In Movies, Credits and Ratings, you will see that the constructor requires a singular argument, a variable called stores of type Stores and uses this to store an variable called stores. This class contains a reference to all the data stores, including itself. As such, if you need to access data from other stores, you can use this class to attain the data through the appropriate get functions. For example, if you need to call a function from the Movies store, you can use the function stores.getMovies() to get the instance of the Movies store currently being used by the application.
- j1ahvaas/sbtereunctpurorveisd/e:dSitnortehserteh.e Aclnayssecslafsosersyyoouur daadtdaisntrhuecrteurceasn. bAesaacnceesxsaedmpblye,thMyeAcrlraassyeLsiisnttfhroemstoLraebs directory (assuming the classes you add are public). You may add any files you wish to this directory, but java and IList.java should not be altered or removed, as these are relied on for Keywords.
4.5.3 src/test/
This directory stores all the code that related solely to the JUnit tests. As such, there is a Java file for each of the stores you need to implement, and one that manages the tests. You do not need to add, edit or remove anything from this directory for your coursework.
4.6 Data used for Warwick+
All of the data used by the Warwick+ application can be found in the data directory, as described in Section 4.5.1. Each file in this directory contains a large collection of values, separated by commas (hence the CSV file type). Therefore, each of these can be opened by your favourite spreadsheet program. Most of these values are integers or floating point values, but some are strings. In the cases of strings, double quotation marks (“) are used at the beginning and end of the value. Where multiple elements could exist in that value, a JSON object has been used. You do not need to parse these files, Warwick+ will do that for you in the LoadData class. The data generated by the LoadData class is passed to the corresponding data store class (Movies, Credits, Ratings and Keywords) using the add function. The only exception to this is the Movies class, more details for this can be found in Section 4.7.1.
To make development easier, we have provided only 1000 films present in the data. This means that there are 1000 entries in the credits data set, and 1000 entries in the keywords data set. However, some films may not have any cast and/or crew (that information may not have been released yet, or it is not known), some films don’t have keywords and some films may not have ratings. In these cases, an empty list of the required classes will be provided the add function.
When we are testing the application, we will be using a larger film data set. Therefore, the data structures you develop should be both memory efficient and time efficient. Every effort has been made to ensure the data we have given you is a fair representation of the larger data set.
The dataset used in Warwick+ is a little dated. As such, some films will have release dates and other information missing when it is readily available online. You are not expected to update the data provided, only to process the data passed to the stores. The data passed to the stores is valid, and should be handled appropriately. If data is missing, an appropriate value has been provided where necessary.
4.7 Key Information and Stats About the Data
Table 1 shows all the stats about the dataset provided with the application. This can be used as a reference when checking to see whether data is being stored correctly.
| Films | 1000 | |
| Credits | Film Entries Unique Cast | 1000
10756 |
| Unique Crew | 8650 | |
| Ratings | 16960 | |
| Keywords | Film Entries
Unique Keywords |
1000
2136 |
Table 1: Stats generated for the dataset provided with the application
4.7.1 Movies Metadata
The following is a list all of the data stored about a film using the given name from the CSV file, in the same order they are in the CSV file. Blue fields are ones that are added through the add function in the Movies class. • adult: A boolean representing whether the film is an adult film.
- bTehliosnigssa_dtdoe_dcotloltehcetifiolmn: uAsiJnSgOthNeoabdjdeTctoCtohlaltescttoireosnaflulntchteiodnetianiltshaebMoouvtitehsctIifonthae fifillmmiissppaarrttooff. a collection, the collection will contain a collection ID, a collection name, a poster URL related to the collection and a backdrop URL related to the collection.
- bthuedgbeutd:gAetliosnsgetinttoeg0e.rTthhaetresftoorree,stthhise wbuildl gaelwt aoyfsthbeefiglrmeaitnerUtShaDnoollraresq.uIafltthoe0b.udget is not known, then
- gkeeyn-rveaslu: eApaJiSr,OwNhelirsettthheatkecyonistarienpraelsletnhteedgeansraens tIhDe nfiulmmbseirs, paanrdt tohfe. vEaaluceh igsernerpereissernetpedresaesnatedstraisnga.
For ease, Warwick+ passes this as an array of Genre objects.
- hthoimsesptargineg: iAs lsetfrtinegmpretpy.resenting a URL of the homepage of the film. If the film has no homepage, then
- tinmdobt_hierd:dAatna isnettesg.er representing the ID of the film. This is used to link this film to other pieces of data
- ithmedbs_eitdI:MDABsfturnincgtiornepirnestehnetiMnogvithees e part of the IMDb URL for a given film. This is added using
- oprroidguinceadl_ilna.nguage: A 2-character string representing the ISO 639 language that the film was originally
- ofirelidg,ibnuatl_istintoltea:lwAasytsritnhgerceapsree.senting the original title of the film. This may be the same as the title
- overview: A string representing the an overview of the film.
- pgroepautlearrtihtayn: oAr fleoqautailntgop0o.inTthviasludeattahaits raedpdreedsebnytstthheesreeltaPtoivpeulpaorpiutlayeTMhoivsiveaslucelaisssa.lways
- ppoosstteerra_vpaaitlahb:leA. Isntritnhgesreepcareseses,ntainngemthpetyunstiqriunegpisargtivoefna. URL for the film poster. Not all films have a
- pJrSoOdNucltisitohn_acsoampkeayniveaslu: eApaJiSrO, wNhleirset tthheatkesytoirsesthteheIDproofdtuhceticoonmcpoaunnyt,riaensdfotrheavfiallmue. iEsatchhe ennatmrye ionf tthhee company. For ease, Warwick+ parses each list element into a Company This object is the added using the addProductionCompany in the Movies class.
- pJrSoOdNucltisitonh_acsoaunkteryievsa:luAe pJaSiOr,Nwlhisetreththate skteoyreiss tthheepIrSoOdu3c1t6io6n2c-cohuanrtarcietserfosrtrainfigl,ma.ndEatchhe evnatlruye iins tthhee country name. For ease, Warwick+ parses only handles the key, and uses a function to match this to the country name. This string is added using the addProductionCountry in the Movies
- rwealseraesleea_sdeadt.e:FAorleoansge,inWteagrewrircekp+repseanstsiensgththise innutombaeJraovfasCecaolnenddsafrroombj1escttJ(amnouraeryde1t9a7i0lswcahnenbtehfeofiulnmd
here: https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html).
- rofevtheneufiel:mAislonnogt iknntoegwenr,rtehpernestehnetirnegvethnueeamisosuentttoof0m. oTnheeyremfoardee, tbhyisthweilfillamlwianyUs SbeDgorlelaartse.r Itfhtahneorreveeqnuuael to 0.
- risunntoitmken:oAw,fltohaetnintgheporiunnttvimaleueisrseeptretsoen0t.inTghtehreefonruem, btheirsowfimllianluwtaeyssthbeefiglrmeattaerketshtaonpolraye.quIfatlhteor0u.ntime
- saspoakelinst_loafnkgeuya-gvealsu:eApaJiSrsO,Nwhliesrtetthhaet ksteoyreiss tahllet2h-echlaanragcutaegreIsStOha6t3t9hceofidlem, ainsdavtahielavbaleluien.isTthhiesliasnsgtuoaregde name. For ease, Warwick+ parses these as an array of keys stored as strings.
- status: A string representing the current state of the film.
- tInagtlhiensee:caAsesst,rianngermepprteysesnttriinngg tisheprpeossetnetredta.gline of the film. A film is not guaranteed to have a tagline.
- title: A string representing the English title of the film.
- video: A boolean representing whether the film is a “direct-to-video” film.
- vtiomtee_tahveerdaagtae:wAasflocoaltliencgtepdo.inAtsvasluuceh,reiptriessennottinugsaedn ainvetrhaegeRsecvoireewasdagtiavseent.byTahethsocsoereonwIilMl aDlwbaaytstbhee between 0 and 10. This data is added using the setVote function in the Movies
- vtootcea_lccuoluantte:thAenscinotreegfeorrrveoptrees_eanvteinrgagteeAnsumsubcehr, oitf ivsonteost ounseIdMinDbthaetRtheveietwimdeatthaesedt.atTahwisaswcilollalelcwtaeyds, be greater than or equal to 0. This data is added using the setVote function in the Movies class.
4.7.2 Credits
The following is a list all of the data stored about the cast and crew of a film using the given name from the CSV file, in the same order they are in the CSV file. All these fields are used by Warwick+:
- chaasstd:etAaiJlsStOhNatlrisetlattheattoctohnetraeinrsolaellinthtehecafistlmfoarnadptahretmicsuellavresfi.lmF.orIneatshe,eWJSaOrwNiclkis+t,peaascshescathstisminetmobaenr array of Cast objects, with as many fields populated as possible.
- chraeswd:eAtaiJlsSOthNatlirsetlattheattocotnhteareinrsoalellitnhethcerefiwlmfoarnadptahretmicsuellavresfi.lmF.orIneatshee, WJSaOrwNicliks+t, peaacshsescrtehwisminetmobaenr array of Crew objects, with as many fields populated as possible.
- tmmodvbi_esidd:aAtansientte(sgeeer Sreepctrieosnen4t.i7n.g1)t.he film ID. The values for this directly correlates to the id field in the
4.7.3 Ratings
The following is a list all of the data stored about the ratings for a film using the given name from the CSV file, in the same order they are in the CSV file. Blue fields are ones that are actually used by Warwick+:
- userId: An integer representing the user ID. The value of this is greater than 0.
- mdoisvrieegLarednesdI.d: An integer representing the MovieLens ID. This is not used in this application, so can be
- tmmodvbiIesd:dAatna isnetteg(seererSepecretisoennt4in.7g.1t)h.e film ID. The values for this directly correlates to the id field in the
- rating: A floating point value representing the rating between 0 and 5 inclusive.
- twiamsemstaadmep.:FAorleoansge,inWteagrewricrke+prepsaesnsteisngthtisheinntoumabJearvaofCsaelceonnddasrforbomjec1ts(tmJoarneudareyta1il9s7c0anwhbeenfotuhnedrahteirneg:
https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html).
4.7.4 Keywords
The following is a list all of the data stored about the keywords for a film using the given name from the CSV file, in the same order they are in the CSV file. All these fields are used by Warwick+:
- tmmodvbi_esidd:aAtansientte(sgeeer Sreepctrieosnen4t.i7n.g1)t.he film ID. The values for this directly correlates to the id field in the
- kaseyawkoeryd-sv:alAueJpSaOirN, wlishtetrheatthceoknetyaiinssraepllrtehseenkteeydwaosrdasnrIeDlantiunmgbtoera, gainvdenthfielmva.luEeacishrkeepyrwesoerndteisdraespraessternitnegd.
For ease, Warwick+ passes this into an array of Keyword objects.
Finish your CS126 coursework on time with trusted expert support
Are you also facing difficulty in completing your CS126 Design of Information Structures coursework? This problem is not only with you, many students face it because they don’t have enough time or don’t understand how to implement data structures and optimise search efficiently in Java. So now you can also choose Diploma Assignment Help for your coursework, as our experts provide computer science assignment help according to your course requirements. For trust, you can also check our University of Warwick assignment examples to see the quality of our work. Explore our service do my assignment for me and get a custom solution for your CS126 coursework written only for you.


