DPS913 APD601 Assignment Specifications for My ICT

This document has more information on the “My ICT” app.


Premise / app definition statement

My ICT provides information and content for a member of Seneca’s School of ICT.

This app will provide a set of tools to complement your daily experience in the School of Information and Communications Technology (ICT). The app will be useful for all members of the School community, including students, faculty, and staff.


Apps that are similar and currently available

There are many. Here are two examples, which you should install on your iOS device:

iUsask – University of Saskatchewan

iUsask puts the University of Saskatchewan into your pocket. List your classes, find out your grades, get the latest campus news from the Huskies and USSU, find your way around campus with the map, search the library catalogue for books, and much more … using your iPhone and iPod Touch!

iStanford – Stanford University

iStanford helps you stay connected to Stanford University from wherever you are. Find people in the public directory, get in touch instantly, find places on the campus map, see real-time bus locations, take virtual tours, stay informed with the latest campus news, keep tabs on Cardinal sports, watch videos, check grades, access course content, browse the course catalog, and even listen to podcasts of popular lectures in iTunes U. It’s Stanford in the palm of your hand!


Design overview

As stated above, the app would provide a set of tools to complement your daily experience in the School of Computer Studies (SCS). Each tool – or module – is designed to do a specific task.

A “front page” or “launch page” would appear when the app launches. Then, the user will select a tool/module, and interact with it. The following is a list of modules that the app could have (and there may be other good ideas that you have):

  • Directory
  • Maps
  • Class cancellations
  • News and announcements
  • Programs and courses
  • My personal settings and preferences
  • My courses
  • My due dates and school events
  • My workgroups
  • Document exchange


The paragraphs below describe the modules that the app could have.

If you choose this idea for your iOS programming assignment, it is expected that you would identify a selection of modules that you intend to implement. It is not necessary to do them all. Your professor hopes that all the modules would get some attention if enough students worked on the app. With the proper design and coding techniques, the modules could share some common interfaces and interoperability.


Data source and storage for the app

For this app, as a programming assignment for the Winter 2012 semester Apple App Dev course, you can design your work to use a mix of on-device and web service data storage. The app’s client/sponsor has plans to create a full-featured web service in the future, which will enable apps on other mobile platforms (like Blackberry, Windows Phone, and Android) to be created, while using the same data store.

Note: Your professor has created a web service which delivers some of the data. It is described later in this document.



This module lists the ICT faculty and staff. May use a table view, in alpha order by last name. It also enables you to search for ICT faculty and staff. It may also have the ability to search for any Seneca faculty or staff member.

Tapping a row in the table view would navigate or tab to one or more details pages, showing office number, location (map), telephone number, email address, a photo, and a web site link.

The email address would be selectable, and would use a modal view controller. The web site link may offer a choice to open it in-app or in Safari.

There may be an option to add the ICT faculty or staff member to the device’s Address Book.

The data is on the ICT web site. We may need a web service API created.



This module shows maps. Building, floor/area, and maybe York campus maps would be presented.

Ideally, it would be searchable. A room number, department, office number, facilities/service name, etc., would be in the maps module’s location database.

Ideally, it would also use the device’s location services. This would require access to cellular service, and/or GPS satellites, and/or proper configuration of WiFi access points.

Map data, with locations, would have to be acquired or originally created. We do have high-resolution images of the SEQ and TEL buildings. However, the images need to be adapted for use in this app.


Class cancellations

This module shows the Class Cancellations information that’s typically available on the ICT web site. Usually, this information is updated by 7:00am.

There is an existing RSS feed.


News / announcements

This module shows the News/Announcements information that’s typically available on the ICT web site.

There is an existing RSS feed.


Programs and courses

This module shows detailed information on the ICT programs and courses. It is a navigation-based module, and offers functionality similar to the examples we work through in class in DPS913/APD601.

The data already exists on the ICT web site. Your professor has created a web service API with a number of resources. It isn’t complete, but there’s a good base.


My personal settings

This module enables the user to configure their settings and status in the ICT community. Students can configure their program and courses, and faculty can configure their teaching schedule.

Other settings or preferences may be captured in this module.

Data configured by this module may be used in other parts of the application.


My courses

This module simply presents a student’s (or professor’s) courses. It uses info from the My Personal Settings and Programs and Courses module.

A weekly grid-like view would ideally be available to intuitively show timetable and related information.
Initially, this information can be presented in a list format. Ideally, a grid-like display should be available.


My due dates and school events

Keeping track of due dates is the goal of this module. Graded work should be presented in a list format, with sort options for due date, course, and type of work (assignment, test, etc.).

Ideally, a grid-like calendar display should be available. It would be nice if the user could filter the visible data, showing all, or just a selection of courses (Outlook’s calendar and Google Calendar come to mind).

If the device offered an interface, the due dates should show up as Calendar appointments, with full “reminder” capability.

Data could be hand-entered, or obtained from an API that’s maintained by the course professor.


My workgroups

Students often work with other students in work groups. The idea of this module is to enable the creation and maintenance of work groups, so that you have easy access to contact and timetable information.

Ideally, the module would use the device’s Address Book.

Workgroup-specific information (e.g. purpose, lifetime, leader, etc.) is maintained in the app.

The module should be able to display (list or grid) the timetable availability of the workgroup members.

Additionally, we should look at the possibility of using the device’s location services to report on whether workgroup members are nearby.


Document exchange

This design of this module isn’t set, but it should offer the student the ability to share and/or exchange documents with other users of this app. Currently (in the App Store), there are many similar apps, that enable two connected users to swipe documents back and forth among each other.

For ICT students, the kinds of document sharing/exchanging activities need to be defined and implemented. It is obvious that the device’s document store would need to be homed on, and synchronized to, a more conventional computer, like a desktop or a server.

Document formats that are supported by the device include Microsoft Office documents, iWork documents, PDFs, and images.


Links to, and integration with, other apps on the device

There are many useful apps on the base device, and thousands more on the App Store. Links to other apps are sometimes useful, so you would be free to investigate those. Some ideas include linking to the photos stored in the Photos app, notes stored in the Notes app, and recordings stored in the Voice Memos app. Or for Evernote users, some linking may be useful.

Think about it. You may create a good idea.


*New* web service

Your professor has created a web service to deliver some of the data and functionality.


Web service address

Here is the web service’s address:



Web service viewer

This page can be used to view and interact with the web service, right from your browser. (This makes it easy to test URIs and functionality, without writing code.)



Resource URIs

The following table shows and explains the web service’s resource URIs:

GET urls
programs All programs, sorted by name
program/id/{id} Specific program, by its ID
program/code/{code} Specific program, by its program code (e.g. CPA)
subjects All subjects, sorted by subject code (by semester, then alpha)
subject/id/{id} Specific subject, by its ID
subject/code/{code} Specific subject, by its subject code (e.g. BTI420)
program/id/{id}/subjects Subjects in a specific program (by its ID)
program/code/{code}/subjects Subjects in a specific program (by its program code)
employees All employees, sorted by last name, then first name
employee/{id} Specific employee, by its ID
employees/{jobtitle} All employees for a specific job title, sorted by last name, then first name
employees/professors All employees who are professors, sorted by last name, then first name
employees/professors/list All employees, “lastname, firstname”, sorted by last name, then first
name, to be used in a list control
employees/named/{name} All employees, sorted by last name, then first name, matching all or part of “name”
semesters All semesters, sorted by year, then by semester
semester/id/{id} Specific semester, by its ID
students All students, sorted by last name, then first name
student/{id} Specific student, by its ID
students/named/{name} All students, sorted by last name, then first name, matching all or part of “name”
program/id/{id}/students All students, sorted by last name, then first name, in a specific program by ID
program/code/{code}/students All students, sorted by last name, then first name, in a specific program by its
course/{id}/students All students, sorted by last name, then first name, in a specific course by ID
course/{id}/student/{id}/add Add a student to a course (idempotent)
courses/raw All courses, raw data only (i.e. IDs for related objects)
course/{id} Specific course, by its ID, raw data only
course/{id}/info Specific course, by its ID, user-friendly readable data
student/{id}/courses All courses, user-friendly readable data, for a specific student ID
announcements All announcements, sorted by date active
announcements/{audience} All announcements, sorted by date active, for a specific audience
announcements/active All active announcements, sorted by date active
announcements/expired All expired announcements, sorted by date active
announcement/{id} Specific announcement by ID
events All events, sorted by date of event
event/{id} Specific event by ID
course/{id}/events All events, sorted by date of event, for a specific course ID
lt/audience Lookup table – values for audiences
lt/credential Lookup table – values for credentials
lt/day Lookup table – values for days
lt/jobtitle Lookup table – values for jobtitles
POST urls
course/{id}/events Add a new event to an existing course
announcements Add a new announcement
courses Add a new course
PUT urls
employee/{id} Update a specific employee, by its ID
subject/{id} Update a specific subject, by its ID


Note: You will need to learn the following about date formatting…

When you create a date (in a POST or PUT request), you will have to use the format described here.

Your date must be formatted as a string. Its format must be:

\/Date( number )\/

The number value is the number of milliseconds since time began in the UNIX world (aka UNIX epoch).

Then, you append your current time offset to the end of the number value. For Eastern Time, you append “-0500”.


The web service has two resources that you can use (for testing) to generate date strings, which you can use to make sure that you’re coding correctly:



Replace the curly-brace values with integers. For example, February 3 2012, at 6:00am, looks like this:


The method returns the JSON string:

The following example shows how to calculate this value in an iOS app:

NSTimeInterval s = [[NSDate date] timeIntervalSince1970] * 1000;

In your code, you would replace [NSDate date] with your desired date and time.


Entity model

The following is the entity model (click the image to see it full-size in a new tab/window):


Some of the entities returned by the web service do not include all of the properties.


Data browser web app (view only)

Your professor has created a data browser web app (using the ASP.NET Dynamic Data web site scaffolder):


You can use this web app to complement the web service viewer from above.





  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: