Teaching Announcements
For the final practical assignment you are asked to write a Navigation-based application using the iPhone API. The application loads data about modules and degree programmes offered by the University of Liverpool’s Computer Science Department, and then presents this in a similar, but not identical way to the Dashcode-based Assignment 1. You should base your solution on the application produced in Lab 7 and Lab 8; which involves producing a Windows-based application for the iPhone. Examples of the final version are given below.
Your solution should utilise a NavigationController to manage movement from view to view, including animation and the decoration of the Navigation Bar and buttons at the top of the display. in addition, your solution should implement two TabelViewControllers to allow the listing of degress and modules listed in the two JSON data files. Finally, three further UIViewControllers (and associated xib files) should provide a welcome screen, and detail views of some selected degree program or module.
The following two data sources are provided, both serve JSON data.
Note that these are slightly different to the files provided for Assignment 1.
Programmes.json
This source provides a list of the different Degree Programmes offered by the Department of Computer Science at the University of Liverpool, and lists, under each year, the mandatory modules required by the programme.
Modules.json
This source provides a list of all the different Modules on offer within the Department of Computer Science at the University of Liverpool, and gives details of each of the modules.
Detailed Requirements
The full requirements are given (below):
1.The application should start up with a welcome title, and offer two buttons that allow the user to browse either degree programs or modules. Any artwork could be used; however, ensure you include the logo of the University of Liverpool (which can be downloaded from the image below).
2.A list of modules should be presented (including the code and the module title) when the “View Modules” button is pressed. When one of these module entries is pressed, this should then display the detail of that module in a view controller. The movement between each view should be animated (i.e. they should slide from right to left when exploring data, or left to right when going back).
3.The module detail should include the module title, academic member in charge of that module, their email, and the module description. If the description requires more space than is available, then you should allow the user to scroll down the text, without the title scrolling off the page. The Module Code should appear in the navigation bar.
4.A list of degree programmes should be presented (including the code and the program title) when the “View Degrees” button is pressed. When one of these degree entries is pressed, this should then display the detail of that program in a view controller. Again, the movement between each view should be animated.
5.The degree programme detail should include the degree title, the programme description and the university logo. If the description requires more space than is available, then you should allow the user to scroll down the text, without the title scrolling off the page. The Degree Programme Code should appear in the navigation bar.
6.The JSON files should be parsed using the JSON parser, which can be downloaded and expanded (if it is not expanded automatically, before dragging the JSON directory to your “Other Sources” directory within XCode.
The purpose of this assignment is to demonstrate that you know how to develop native iPhone app using UINavigationControllers and UITabelViewControllers, in addition to using UIViewControllers. You do not need to hand in any design documentation but your code MUST be well commented so that it explains what is happening in the code. The following marking scheme will be used to assess each submission.
Hints
•Not all views require xib files. Create these when you create view controllers, but generate the table view controllers dynamically.
•Utilise the JSON parser by downloading and expanding the JSON zip file (if it is not expanded automatically) and dragging the JSON directory to your “Other Sources” directory within XCode. Use the sample code in Lab 7 to understand how you can utilise this parser.
•Both files generate NSDictionary objects top level objects, which in turn contain either NSArray or NSDictionary objects. Make good use of NSLog to look at these objects to help you extract the data.
•To display multiple strings in the table cells, use the style UITableViewCellStyleSubtitle when creating the cells in cellForRowAtIndexPath. In addition to using the main textLabel, you can also set the text of the detailTextLabel to provide a subtitle for each table cell.
•The data in Programmes.json includes additional details regarding mandatory modules that have to be studied. However, this information can be ignored.
•The data in Modules.json includes an array of module codes, and then a dictionary of module data. Build the table view from the module codes, but then extract details from the dictionary using the module code as a key.
•Use a UITableView to display the text for the module and degree details, but just use UILabels for the other content. remember that you can specify that a UILabel can span multiple lines in the Inspector - this is useful for the Module and Degree Titles.
•Try to use the “lazy” approach to resource usage; avoid loading the JSON data unless absolutely necessary, and once loaded, try to avoid loading it again multiple times.
Marking Scheme
•Drawing the initial view, including the navigation view controller (20 marks)
•Loading in JSON data and extracting the data for the different views (30 marks)
•Listing the Modules and Degrees in two different table views (20 marks)
•Displaying the details of a selected Module or Degree in a view drawn using two xib files (20 marks).
•Layout and Design (10 marks)
This assignment contributes 15% to your overall mark for COMP327.
The code should compile without warning or errors. In addition, memory should be managed appropriately.
SUBMISSION INSTRUCTIONS
Firstly, check that you have adhered to the following list:
1.Your project should be self contained within a single zip file containing all of the files in the XCode project. The file's name MUST be 'Solution3.zip' (capital S; lower-case everything else).
2.Your project is developed within XCode, not some other language or environment.
3.Your program compiles and runs on a machine within the computer science department’s Mac Lab, under Xcode 3.2.5, using the iOS SDK 4.2 (recently released). If you have developed your code elsewhere (e.g. your own mac), ensure that it also works on our system before submission. It is your responsibility to check that you can log onto the department’s system well in advance of the submission deadline.
4.Your program does not bear undue resemblance to anybody else's! Electronic checks for code similarity will be performed on all submissions and instances of plagiarism will be severely dealt with. The rules on plagiarism and collusion are explicit: do not copy anything from anyone else’s code, do not let anyone else copy from your code and do not hand in 'jointly developed' solutions.
To submit your solution you must SUBMIT IT ELECTRONICALLY, and adhere to the following instructions:
Electronic submission:
•Your code must be submitted to the departmental electronic submission system at: http://cgi.csc.liv.ac.uk/cgi-bin/submit.pl?module=comp327
•You need to login in to the above system and select ‘Native Browser’ from the drop-down menu. You then locate the file containing your program that you wish to submit, check the box stating that you have read and understood the university’s policy on plagiarism and collusion, then click the ‘Upload File’ button.
Work will be accepted only if it is submitted electronically following the above instructions.
Finally, please remember that it is always better to hand in an incomplete piece of work, which will result in some marks being awarded, as opposed to handing in nothing, which will guarantee a mark of 0 being awarded. Demonstrators will be on hand during the COMP327 practical sessions to provide assistance, should you need it.
COMP327 - Practical Assignment 3 2010
09/12/2010
Deadline:
3pm, Friday 17th Dec ’10
Example Output