lzilioli / apeecs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AP EECS

Mike Varano & Luke Zilioli
EECS 499 - Dr. David Chesney

#Directory Structure

  1. AP EECS/ - Files for the XCode Project
  • AP EECS.xcodeproj - Xcode project for this app
  • Courses/ - Sample courses to be on a server that the app can point to (more on this in technical details)
  • Creating a Course.pdf - Instructions on how a course should be formatted for the app to recognize.
  • Image Files/ - Files used to make the app icon and other app resources. Acorn is an image editor available on the Mac App Store.

#Technical Details On the About screen, there is a field for the user to specify a URL. This URL should point to a directory that has a full course implementation that is compatible with this application (see the “Creating a Course” document, for information on what this entails). There are two sample courses in the Courses directory.

Based on this URL, henceforth referred to as <base_url>, the application downloads an XML file for the course. This XML file is what contains topics and questions for the course, and is located at <base_url>/input.xml

Once this XML file has been loaded, we populate the table of topics for the user to choose between. When one is selected, the question asking begins. Each question in the XML file has an attribute that tells the application the type of the question. These types must be known by the application, because they are used to ask the question. The most common qtype is ‘xchoice’, which is multiple choice. Question type specification will be more useful when we have implemented various types of questions, such as fill in the blank, etc.

The QuestionAsker, which is the application’s primary view is in charge of presenting the user with the correct questions at the correct time. It is a custom implementation of a UIPageViewController. Once a topic has been selected, the QuestionAsker is informed of the topic’s index. With the index, the QuestionAsker reads the xml file for the first question of that topic. Based on the question type, the QuestionAsker instantiates an instance of a question. Each instance inherits from a base class called MyUIViewController. Any new question type inherits from this view, and there are various methods that can be overridden to ensure proper behavior with the QuestionAsker. Data is stored persistently for each course within the application. This data is stored using iOS property lists as a triple hash map, setup as follows: “course url” > “topic number” > “question number”.  #Future Features

Currently, since everything is loaded from an XML file on the internet, an internet connection is required to use the application. It would be relatively easy, and worthwhile to implement a downloading/caching feature, where upon entering a course, the entire thing is downloaded locally to a directory within the application. Taking this concept a step further, it would make sense to add a list of courses that the user has previously participated in, and let them manage which ones are bookmarked, and which ones are stored locally on their device.

Currently, when a multiple choice question is asked, and the question contains an image, the image is loaded in the UI thread before presenting the user with the question. This causes a lag between the time the user swipes to the next question, and the next question showing up. This should be moved into a background thread, a tutorial for which can be found [here](http://ios- made-easy.blogspot.com/2011/05/loading-image-for-uiimageview-in.html).

Additionally, this app could be made universal with fairly little effort, and that’s always a good thing.

Lastly, we thought this app might not be too far away from being able to act as a replacement for iClickers, students could just use their iPad or iPhone instead.

About


Languages

Language:Objective-C 100.0%