Math 224: Mobile Application Development

Course Information

Instructor: Dr. Lauren Williams
Class Days: Monday, Wednesday, Friday
Class Time: 1:00 - 2:05
Class Location: Advanced Lab, Old Main Basement
My Office: Old Main 404 (Tower)
My Office Hours: M 10:30-12, T 12-1, W 2:15-3:30, R 10-12, F 10:30-12

Course Description

In this course, you will learn to design, program, and publish mobile apps for iOS (mobile Apple devices) and Android using the Corona SDK.

Course Objectives

As more people use mobile devices on a regular basis, applications are being developed to fill an increasing number of needs. There are games, social networking apps, productivity tools, and many other categories of applications that you might be interested in working on. Perhaps you already have an idea for a mobile application. If so, this course is your opportunity to get started. Even if you don’t have a goal in mind, you’ll be introduced to all the basic ingredients you’ll need if you ever decide to create your own mobile application. You will be introduced to the process of developing mobile applications using the Corona Software Development Kit. Topics that will be covered during the course include:
  • conceptualizing a mobile application using storyboards
  • programming in Lua, a scripting language used by Corona SDK
  • creating on screen text, graphics, and animations
  • using the Corona physics engine to simulate object interactions on screen
  • working with audio and visual files, including graphic sprites
  • working with data files
  • interacting with the device hardware
  • handling various screen sizes, resolutions, and screen orientation
  • writing efficient programs with regard to memory usage and debugging
  • integrating native widgets such as buttons, controls, and tables
  • distributing mobile applications to the public

Throughout the course, you will be required to demonstrate the ability to:
  • create a user interface that is appropriate for your intended audience
  • design and implement programs in Lua
  • write a program that solves a specific problem in an efficient manner
  • acknowledge the aesthetic aspects of application development

Required Materials

You are not required to have any hardware outside of the computer lab for this course. You may use your own computer to work on projects, but you are not required to. In addition, you are not required to own a mobile device. If you are serious about developing mobile applications, it is highly recommended that you invest in the appropriate hardware. However, the simulator built into Corona is sufficient for our class.

Due to the ever changing nature of mobile technology, textbooks for mobile development quickly become obsolete. No textbook will be required for the course; instead, we will make use of Corona’s online resources which are regularly updated. In addition, I will provide you with course notes as we cover each topic.

You will be required to respond to an invitation to a shared Dropbox folder. This invitation will arrive in your Mercyhurst email account. If you do not already have a Dropbox account associated with this email address, you will need to create one (free of charge). All assignments will be submitted via this shared folder.

Required Software

We will be using Ansca Mobile’s Corona SDK. Corona has several advantages over other SDKs available for mobile development:
  • Corona can build apps for Apple’s iTunes App Store, Google’s Play Store, Amazon’s Kindle App Store, among others, with more platforms added all the time. Rather than being confined to developing for a single platform, you can choose to design an app for a single device, or all of them, without having to port or rewrite your code.
  • Corona is free, except for enterprise users (those with an app that is downloaded a particular number of times per month).
  • Corona can be used on any machine running Windows or a Mac (note: publishing an app in the Apple App Store will require access to a Mac, but building and testing your app can be done on a Windows machine).
  • Corona uses Lua, an easy to learn and flexible scripting language. While not one of the most well-known languages, Lua outperforms many languages in a variety of benchmarks. It is currently the leading scripting language for games, and has been used for other major applications including Adobe Photoshop.
  • Corona is popular and well supported. There are many instructional resources, samples, tutorials, and forums to help you learn.


We will spend the first half of the semester learning to program in Lua and learning to create simple apps. To do so, we'll work through several examples in class. During this time, you'll be given assignments that reinforce the material we're covering in class.
  • You should expect to spend several hours (minimum) working on these assignments. Do not wait until the night they are due to get started or ask questions.
  • All assignments are due by midnight of the due date provided. Your assignment code, along with all required files (such as images or sounds) must be included. Your assignments must be uploaded to an appropriately titled folder within our shared Dropbox folder. It is your responsibility to make sure that all files have been uploaded to the correct folder, and that all files are included.
  • You are not permitted to work together on these assignments. All code should be your own - it's important that you understand the code you have submitted. Work submitted that is not your own will receive a grade of 0. Providing your work to other students is not permitted, and will result in a grade of 0 for both the provider and the beneficiary. The only way to learn the material is by doing your own work.
  • Each of these assignments will be scored out of 20 points. A rubric will be provided for each assignment.
  • There is a grace period on the due date for all assignments, with a penalty. Work submitted within 24 hours of the due date/time will receive a maximum of 16 out of 20 points. Work submitted within 48 hours of the due date/time will receive a maximum of 12 out of 20 points. Work received after 48 hours past the due date/time will not be accepted.

Final Project

After learning the basics of Lua and Corona through the smaller weekly assignments, you'll start to work on your own larger project. Unlike assignments, you'll be able to work in small groups (of up to four people) on this project, though you are free to work on your own as well.
  • You will be permitted (though not required) to work in small groups of up to four people on this project. Everyone in the group will receive the same grade. Larger groups will be expected to submit a more polished and feature-filled app than those submitted by single coders. In addition, it is required that everyone in the group fully understands all aspects of the project they have submitted; expect to answer questions about any project with your name on it.
  • An abstract for the project will be due the week after the mid-semester break. This will give you enough time to form groups (if you choose to), and to appreciate the work that goes into app development. The abstract will allow me to decide if your project has an appropriate level of difficulty.
  • You will be given some time to work on your projects in class, but you'll need to spend a significant amount of time working outside of class as well. Groups might benefit from using Dropbox if they are unable to meet.
  • There will be weekly progress checks on your assignment. These checks count towards your final project grade, and will help ensure that you are not procrastinating too much (a final project cannot be completed in one night). Your project should be close to completed by the final check - the last week should be used to polish and perfect your app, not begin work on it. Guidelines for exactly what I'll be looking for in each check will be provided.
  • All work submitted for your final project must be your own. There are many examples and tutorials available online - do NOT simply submit someone else's work as your own. This is plagiarism, and doing so will result in a grade of 0 on the entire project. In many cases, using or adjusting snippets of code for your project is perfectly fine, and is how most programming is done. If you are unsure whether "borrowing" or modifying code you have found constitutes plagiarism, see me.
  • You'll be given a chance to present your app to the class at the end of the semester. This is an opportunity to show off your hard work!


We will have a midterm exam and a final exam. The midterm will be a written exam (mostly multiple choice) that checks your knowledge of Lua and Corona, as well as some important facts about mobile devices and mobile development in general.


Your final grade will be calculated as follows:
  • Assignments: 30%
  • Final Project: 25%
  • Midterm Exam: 20%
  • Final Exam: 25%
Your letter grade will be determined according to the department grading scale:

Other Course Information

  • Attendance is not required, but regular attendance is necessary to keep up with material. Let me know if you'll be missing class for an extended period.
  • I will attempt to return emails as thoroughly and promptly as possible. However, it is generally better to ask complicated questions during class or in office hours. If you run into a problem with an assignment, please put your current work in our shared Dropbox folder where I'll be able to see your code.
  • Class notes (which I will attempt to keep updated as Corona evolves) will be maintained on the course website. The notes will be broken into sections.

Learning Differences

In keeping with college policy, any student with a disability who needs academic accommodations must call Learning Differences Program secretary at 824-3017, to arrange a confidential appointment with the director of the Learning Differences Program during the first week of classes.

Support of the Mercy Mission

This course supports the mission of Mercyhurst University by creating students who are intellectually creative. Students will foster this creativity by: applying critical thinking and qualitative reasoning techniques to new disciplines; developing, analyzing, and synthesizing scientific ideas; and engaging in innovative problem solving strategies.

Course Calendar

DateTopicAssignment Due