CSC-2310 Mobile App Development
||Congdon Hall 150
||MWF 7:50-9:00AM CSC-2710
||MW 12:05-1:45PM CSC-3410
||TTH 9:45-11:25AM CSC-4310
||T 1:30-3:20PM CSC-2942
||Web site: linus.highpoint.edu/~rshore
An introduction to the fundamentals of application development on mobile devices such as the cell phone or tablet. Students will work in an integrated development environment to write native apps for the selected platform. Current platforms include Eclipse/Android SDK or Xcode/iOS SDK. Emphasis will be placed on the user interface and the syntax and semantics of the language to write correct, efficient, and easily modifiable mobile applications.
- Christian Keur and Aaron Hillegrass, iOS Programming: The Big Nerd Ranch Guide (6th Edition), Pearson Technology Group ISBN-13: 978-0134682334
- Matthew Mathias and John Gallgher, Swift Programming: The Big Nerd Ranch Guide (2nd Edition) Peasron Technology Group ISBN-13: 978-0134610610
- The Swift Programming Language (3.01) - A free resource provided by Apple Inc.
- Other resources: The department will provide all software necessary to complete the course. This will require the student to have an account on the departmental server. This account will give them access to the software and space to store solutions to assignments. Access to the server will be provided through a workstation in the departmental lab as well as from any remote location on and off campus.
Rationale: As we all know, there has been a shift in how individuals use technology. Cell phones and tablets are replacing laptop and desktop computers. The implementation of a mobile application on the mobile device is considerably different compared to a desktop application. The intent of this course is to expose students to the necessary tools and programming paradigms for mobile application development. This course would count as an elective course in the major or minor in computer science.
Class Preparation:It is assumed that you will read the assigned chapters. Although the material may be summarized, lectures will be used mainly to further demonstrate other approaches to problem solving and to answer specific questions.
Programming Projects:: In addition to the major tests and exam, students will participate in a series of programming projects to further develop their mobile app development skills. Each project will require the student to design and implement an application demonstrating an increasing mastery of each learning objective.
- Describe the unique aspects of mobile application design and implementation.
- Demonstrate a competency of advanced object-oriented design techniques.
- Demonstrate a proficiency with the Event-Driven programming paradigm.
- Evaluate the pros and cons of existing mobile applications.
- Design and implement a human interface with gestures and multi-touch features.
- Effectively apply threads to an application.
- Include proper documentation with each project.
Tentative Schedule of Topic Coverage based on iOS development
- Attendance: Attendance will be taken daily at the beginning of class. You are expected to be present in every class meeting. If absent from class, you are responsible for all lectures, in-class exercises, assignments, and handouts. Caution: Being absent from class does not change the due date of assignments.
- Grades: Your final grade will be determined as follows:
Aprox. 8 Project Assignments
2 Major Tests
Cumulative Final Exam
You must score at least the minimum of a category to be given the associated grade, i.e. an average of 80 is a B- not a C+.
|| 0-60 |
|| F |
- Make-Up test will not be given. Unless prior arrangements have been made with excusable reasons, NO make-up test will be given. If you miss a test your final grade will be used in place of the missed grade. This means the percentage of the final exam will increase. If you miss the final exam, you will receive an F for the course.
- Assignments: Assignments, quizzes, and class work sheets will assist you in the understanding of the material presented during class. These will appear in almost every class meeting during the semester. Items completed during class cannot be made up therefore the lowest two grades will be dropped to allow for an occasional absence. Programming assignments will have gracious due dates. You must turn in the assignment by the due date for full credit.
- Classroom etiquette:
- Cell phone usage during class is prohibited. Turn off cell phones (or place on vibrate). Please do not interrupt any aspect of the class due to your cell phone. This includes text messaging, picture messaging, etc.
- Do not listen to your ipod, cd player, etc. during class (even if we are in the computer lab).
- Profanity will not be tolerated. This includes lewd remarks printed on your clothing.
- Hats are not to be worn during class.
- Laptops are allowed in the class and can only be used for class related stuff. Since I cannot see you screen, you will be called out if I suspect otherwise.
- Lab etiquette:
- The lab was created with student input. Please help respect and maintain the lab.
- Do not eat while sitting at a workstation. If you must eat while in the lab, sit a the larger table where no equipment may be damaged except your own. Clean up the area after you finish eating.
- Clean up your area before you leave the lab. Unless you are planning to return in a few minutes, please take all books, paper, etc with you.
- DO NOT lock your workstation when you leave!
- Honor Code All students are expected to follow the University Honor Code, full details can be found in the Student Handbook. All academic work should be completed with the highest level of honesty and integrity.
- Students with Disabilities: Students who require classroom accommodations due to a diagnosed disability must submit the appropriate documentation to Disability Support in the Office of Academic Development, 4th Floor Smith Library. Student’s need for accommodations must be made at the beginning of a course. Accommodations are not retroactive.
NOTE: in reality some topics appear repeatedly through out the semester while some topics appear on an as need basis.
Week 1-2: The setup - Development tools and Framework
Week 3: Understanding the environment - Mobile application issues
- Apple iOS toolchain: Swift/Objective-C, Xcode IDE, Interface Builder, Device Simulator
- Objective-C and Foundation Frameworks
- Memory management issues (reference counting, Automatic Reference Counting (ARC))
- Objected Oriented Programming (OOP) techniques: (inheritance, dynamic dispatch, delegation)
- Key-Value Observing (KVO)
- Cocoa Touch, UIKit
- Other frameworks for mobile apps
- Core Graphics, Core Animation
- Core Location and Maps
- Visual tools for interface layout (Interface Builder)
- Source code hooks for visual tools (Outlets and Actions)
Week 4: Sensors (camera, compass, accelerometer, GPS) and basic interaction with device
- characteristics of the best mobile applications and user interface
- limited resources (memory, display, network, filesystem)
- input / output (multi-touch and gestures without keyboard or mouse).
Major Test #1 – Learning objectives 1, 3, 4 and 7
- Outlets and Actions
- Controls (textfields, sliders, buttons, labels, switches)
- Multi-touch, virtual keyboard, gestures (swipe, pinch, shake)
- Autorotation and autosizing
Week 5-10: The following topics cover core concepts that are necessary to develop a mobile app. These topics are introduced as needed and will be used throughout the course.
Major Test #2 - Learning objectives 2, 3, 5, 6 and 7
- Event Driven Programming
- UI event loop.
- Threading for background tasks.
- Outlets, actions, delegates, and data sources in Cocoa Touch Framework
- Model View Controller (MVC) pattern in User Interface Design.
- Views, Controls, and Controllers in Cocoa Touch.
- Common UI's for mobile devices
- Navigation Controllers, Tab Bars, Table Views , etc
- Modal views
Week 11-14: Data Persistence, Remote Data-Storage and Communication
Week 15: Developers and App Store License Agreements
- Maintaining state between application invocations
- File system, Property Lists, SQLite, Core Data
- "Back End" / server side of application
- HTTP get, post, put, delete
Cumulative Final Exam – All learning objectives
- Establishing the developer account.
- Publishing the App.