CS453 | mobile programming
  • outline
  • projects
  • syllabus
  • links
Outline

A proposed schedule is given below. This may be subject to change. Topics may be added or removed or eliminated from coverage. SOME modules cover mul

NOTE: All materials and reading are required expect for that in any reference books.


 



Week

Module

Materials

1 1 Introduction to Class

Class Lecture,

    • Welcome from Instructor
    • Course Overveiw
1 2 Java
 

Class Lecture,  

    • Features of Java 
    • Java versus C++ 
    • LECTURES:
      • Java Overview/Intro Lecture
      • Inner Classes
      • Java IO lecture, (revisit later parts of this --I/O different on apps)


    • "Java- files" 
    • "Commenting and Writing Style" 

    • Web pages:
      • "Java- basics" 
      • "Java- objects" 
      • "Java- arrays" 
      • "Java- Flow of Control"
      • "Java- packages" 
      • Collections
      • Java- methods
      • Methods-Part 2 
      • Java IO basics   (again this focuses on applications not apps, we will see later how I/O is different on apps)


    • RESOURCE:
      see http://algebra.sci.csueastbay.edu/~grewe/CS3340/outline.htm for more on Java...but, remember we will focus on Android applications with Java.
    • Exercise MEETUP (due by Feb. 13 start of class) : you are to become a member of Meetup.com and join one meetup organization and attend a meeting and report back on (1) what was discussed at the meeting (2) who presented (3) who did you meet (4) what did you think about it
1,2 3Android

Android, Android Book: The necessary Tools chapter AND Chapter 1

Beginning Android and How to create an Android Project
  • LECTURE: Intro
    • asPowerPoint alone,    as MP4 Video OR as YouTube

  • LECTURE: START Programming: (HOW to Create a Project in Android Studio)
    • as Powerpoint, , as MP4 Video OR as YouTube


  • intro, components, start programming
  • Android specific Project Properties

  • Decomposition of an Android Manifest File

  • STRINGS: Android Strings and Demo on Translations Editor (MP4 YouTube)

  • LOGGING: Logging and System.out.println

Demo - overview of using Android Studio: MP4 Video OR as YouTube

Emulator and AVD Manager and Running on a Real Device

  • Android Emulator, AVD Manager and how to creat an AVD
    • AVD Sample Configs (give me your favorite to add)
    • can take a long time to launch emulator ---snapshots?
  • How to Debug/Run on a Physical (real) Device
    • Install APK on Physical Device video demo (from previous student --mpg --download and play on machine)

SDK Manager

  • Android SDK manager

Loading Existing APK, Pushing/Pulling Files

  • Loading Existing Android Project (what you need and how to do it)
  • Loading Existing APK (application)
  • Pulling/Pusing File from/to Device in Emulator

 

Other: tips, code, links, and more

  • Example Extended Hello World code
  • Emulator Tips & Emulator Keyboard Commands
  • Android Developer Site
    • Install (you want to instal Android Studio)
    • Tutorial
    • SourceTree and BitBucket
    • Problem with Linux? (one student's experience and solution)


  • Android Studio use of Gradle build tool (video)
  • Android Stuido Overview (video)
  • TIPS: Known Problems and Solutions in AndroidStudio
  • TIP:  sometimes when you are compiling your code you can have problems with the R.java file (which you DON’T edit) –what is going on?  Somehow the R.java is out of sync with the project resources…..WHAT TO DO – do a "Build->Clean Project" and it will regnerate R.java for you

Exercise

  • Exercise3.1: (due 8am Jan 11th)Setup your Android Studio Environment & create app "GeoQuiz" in Chapter 1 of your book. NOTE: if you can not complete you must come to my in-person office hours
2 4Android the Interface -Activity, beginning GUI and event handling (Intent)

Android, Android Book: Chapter 2-4

  • LECTURE: more ideas and review of Android Activity
    • as Powerpoint alone, as MP4, as YouTube

  • More on Android Activity
    • More on Android Activity
    • Temporary Text with Toast and Notifications



  • LECTURE: Android Interface
    • as Power point, as MP4 , as YouTube


  • More On Interfaces:
    • Read about AndroidStudio current Layout Manager tool
    • Android GUI XML Attributes
    • Drawing Images
      • Displaying an Image and Android ImageView
    • Android and Styles
  • Exercises:
    • Exercise 4.1: (due start of class Jan 16) Continue implementing features in GeoQuiz app (including loging)
    • On Your Own (not turned in): Chapter 4 -practice debugging,
3 5Android and event handling and intents

Android, chapter 5-6

  • LECTURE:
    • as PPT, as MP4, as YouTube


  • Example Event Handling of Two Buttons
  • Intents -linking activities (see Intro Lecture also)
    • see exercises below
  • Examples -
    • see book
    • see camera module below
    • see chapter 5 display of pictures and menus example.
    • Example Android Event Handling Example


  • Exercises: Basic Intent : (see Intents web page for explanation and book!!)
    • Exercise 5.1: (due start of class Jan 23) Continue implementing features in GeoQuiz app from Chapter 3 and implement the code in Chapter 5 (all pages) which features using Intents to launch a second Activity and passing data and gettting results.
    • On Your Own: Do work in Chapter 6
3 6Android Fragments (the mini UI)

Android, chapter 7

  • LECTURE: Android Fragments
    • as Powerpoint, as MP4, as YouTube

    • Example: ListFragment and Fragment classes
    • Modifying previous to Run 2 Fragments in Horizontal mode, 1 in vertical mode
    • Example Fragment with NO UI
    • Fragments - adding or replacing in Activity dynamically
    • Scalability
  • Examples -
    • see book
    • see camera module below
    • see chapter 5 display of pictures and menus example.
    • Example Android Event Handling Example


  • Exercises: Basic Fragments
    • Exercise 6.1: (due 8am Jan 25) Create the "CrimialIntent" app of Chapter 7.
4 7Android - more GUI

Android, Andriod Book: Chapter 8-13

  • Views and View Groups
    • trick: do not display keyboard with EditText focus
  • Display Orientation
    • Android - Determining Device Orientation Example
  • Activities -Preserving State
  • Action Bar
  • User Interfaces Progromatically
  • More on using Views to create Interfaces
    • ProgressBar Example
    • AutoCompleteTextView Example
    • TimePicker and DatePicker View Example
    • ListActivity (built-in ListView) Example
      • Cutomizing ListView in ListActivity Example
    • Spinner View -see Books/Android/Source Code/BasicViews6
    • ListFragment --see exercise below
    • DialogFragment ---see exercise below
    • Preference Activity and PreferenceFragment --see exercise below

  • Adapters and AdapterViews -- a concept in Android

  • More on Images: Gallery
  • GridView - see API, similar to Gallery but a 2 dimensional scrolling grid


  • Menus
  • WebView
  • Scrollable and Keyboard Tip
  • Overlay Service
  • Exercises:
    • Exercise 7.1: (due start of class Jan 30) Create the "CrimialIntent" app of Chapter 8-10.
    • Exercise 7.2: (due start of class Jan 30 ) Create the "CrimialIntent" app of Chapter 11-13.
4

8Android and Unit Testing

Android

  • LECTURE: Android Unit Testing lecture
    • as Powerpoint, as MP4, as YouTube

  • GENERAL (non android) Demonstration from CS3340
  • HOW TO SETUP your project for JUnit testing: https://developer.android.com/training/testing/unit-testing/local-unit-tests.html
  • HOW TO SETUP your project for Instrumentation testing:
    https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html
  • Web pages:
    • Espresso testing api
  • Exercise: none
Jan 30 Review of App Project Proposals

Review of Android App Proposals

  • You must turn in your Project 1 proposal and do a review of the apps assigned for you to review (see blackboard for reviews assigned to you)
5 9Android - data (on device, see backend below for serverside)

Android, chapter 14

  • Intro to Data possibilities
  • SharedPreferences, File Storage

  • LECTURE: Database
    • as Powerpoint, as MP4, as YouTube

  • Database Example

  • More:
    • Internal versus External File Storage: people hacking to move to bigger External storage
    • Data across Network: then a web app where you use java.net.* and android.net.*
    • Database across Network: then a web app communicating with remote database. (you need to take web development courses for this)


  • How to get Data into Database or Use Pre-created one
    • Tool you can use to view or create an SQL database:
      • SQLiteBrowser
      • SQLite Manager plugin for Firefox

    • How to use a Pre-created SQLite Database   


  • Advanced Topic (not covered): Syncronizing device data to server data:
    • one idea: SyncAdapters in Android   and  a tutorial on SyncAdapter
    • create your own solution: an example

  • Exercise:
    • Exercise 8.1: (due start of class Feb. 6) Create the "CrimialIntent" app of Chapter 14
5 9Android and Content Provider

Android , Chapter 15

  • LECTURE: Android content provider lecture, as mp4, as YouTube
  • creating your own content provider (on your own/advanced, as needed, see reading in book)
  • Web pages:
  • Exercise: On your Own- do CiminalIntent App of Chapter 15
6 12 Android and JSON and URLConnect

Android, Chapter 22, 23

  • LECTURE: AsyncTask - Doing it Asynchronously (requred for network communications) Going over Code Example
    • Developer Sample:AsyncTask Asynchronous HttpUrlConnect - must be on separate thread
    • Example Code (zip) Android URLConnect with newer AsyncTask class (separate thread)


  • Android and JSON and URLConnect (THIS IS ABOUT JSON--use above Asynchoronous method to do the request and response data)


  • BACKEND SYSTEMS
  • BACKEND OPTIONS

    How to download & setup sample Android app code

    videos I found useful (search for your own):


    • AWS Lambda code

  • AWS:
    • developer website
    • console https://console.aws.amazon.com
    • Direct To DynamoDB Student Example
  • Firebase:
    • developer website: https://firebase.google.com/
    • my web page or writing
    • good udacity mini lecture

  • Exercise: (Due. 11pm Feb. 19 AND present Feb 20 in class ===GROUPs allowed, 100 points!!!): Backend Exercise
6

14 Android - payment and advertising and more

(on your own--see project)

Android,

  • Google AdMob for advertising
    • NOTE: go to Google AdMob site for any changes and current setup proceedures.
    • Firebase Console https://console.firebase.google.com/


  • Google Payment Options
    • Google Play In-App Billing for digital goods
    • Google Wallet for Physical Goods & Services
    • this developer guide is useful (you must register and currently pay $25 to be a google play developer)

  • Android Pinpoint: push notification campaigns ("marketing")

  • Exercise: (Due. 11pm Feb. 19 AND present Feb 20 in class ====GROUPs allowed, 50 points!!!): Advertising Exercise
7 10 Android and using GPS

Android, Chapter 31-32

  • LECTURE: Android Map and GPS lecture,

  • DO Example on developer site (gives directions on how to get a Map API key using your debug key installed in .android directory on your development system)
  • Geocoding -- see book p.g. 371
  • VERSION 1 of Android Google Map ONLY: Using Emulator to simulate GPS
  • Web pages:
    • How to Setup Project to Use Google Maps
    • step by step v2 tutorial
    • HACK for v2 to work on emulator
    • See: Emulator Tips for how to alter lat and long
    • Google Geocoding:
      • geocoding api (address->lat,long)
      • reverse geocoding (lat,long -> address)
      • reverse geocoding interactive tool
    • yet another tutorial on google maps (v2)
  • Example Code:
    • First read this to make sure your environment setup with Google Play Services
    • Project with simple Map Activity as Main Interface - NOTE you will have to get a key and edit the google_maps_api.xml file --IT will not run unless you do this.
    • Project with simple Location Services
  • Exercise:
    • Exercise 10.1: NOT ASSIGNED THIS QUARTER--ON YOUR OWN Create the Lacatr app from book chapters 33&34
7 11 Android and the Camera

Android, Chapter 16

  • LECTURE: Android using the Camera lecture, as MP4, as YouTube

  • Camera Issues and Fake Image
  • Camera api 2
  • READ latest on developer
    • Basics Overview
    • Building Your Own Camera App
    • Newer android.hardware.camera2 (only added API 21) and tutorial on camera2 api
  • Web pages:
  • Example Using Camera (android 4.0 or greater)
  • Example Using Camera -built into App
  • Example Using Camera 2 api (api 21 or greater)
  • Exercise:
    • On your own, do CrimialIntent app of Chapter 16
7 11 Android and Gestures

Android, Chapter 29 (not much)

  • LECTURE: Android Gestures Lecture
    • Android and Gestures
  • Web pages:
  • Exercise:
    • On Your Own: ExG.1: Re-implement the code to recognize your own gestures you save using the Gesture Builder app as described in "Android and Gestures"
7 13 Android - using other Apps

Android, Chapter 15

  • Using Other Android Apps (e.g. uses Barcode scanner-camera app)
  • Code: codebase (courtesey Cs6825)
    • Example Integration of ZXING barcode scanner app (video demo)
    • Video Demo of the App running on phone that integrates ZXING barcode scanner app
Advanced/
Optional/
As needed
15 Android - Messaging

Android,

  • Messaging - email and SMS texts
    • email tutorial
    • text tutorial
  • Exercise:
Advanced/
Optional /
As needed
16 Android - networking

Android,

  • sockets programming and using other JSON services
  • Exercise:
Advanced/
Optional/
As needed
17 Android - Creating your own web
service

Android, chapter 26

  • BAAS Creating your own serice - using something like Google Cloud or Amazon
  • Exercise:
Advanced/
Optional/
As needed
18 Android - Other Sensors

Android, Chapter 18,19

  • Accelerometer:
    • tutorial 2011
  • Multiple examples
  • Get List of Available Sensors
  • Audio- chapter 18, 19
  • Exercise: on your own as a function of your apps needs.
Advanced/
Optional/
As needed
19 Android - Creating your own
service

Android, chapter 26

  • Creating your own serice.
  • Exercise:
Advanced/
not covered
20 Android - Material Design - new visual language for style

Android, Chapter 33.

8 21 Swift

Swift,

  • Intro to Swift
    • Introduction to Swift
    • a few repeat notes
  • Playgrounds
    • Sift Playground-- like interactive console iPad App
    • alternatives for android and web: SoloLearn, SwiftBites
  • More: see developer.apple.com

8 22 iOS Envirnonment

Apple, iOS book -Chapter 1

  • See developer.apple.com for the latest information or changes
  • install XCode
  • Emulator Tips
  • XCode and Overview
  • XCode Overview -not mine
  • Mac OS tips
  • iOS Development on a Windows Machine
  • Interface Builder Tips
8 23 iOS - Intro

iPhone/iPad, Chapter 1,3

  • Begining iOS Swift "Hello Word" App with Event Handling
    • OVERVIEW: Intro App Development Overview Lecture (feature iPhone and older Objective-C)

  • Intro to iOS webpages
  • Getting Started
  • Development needs
  • Framework
  • Project Structure
  • developer.app: App Architecture
  • App Launch Interface
  • Alligning Widgets

 

  • App Icons and Launch Image
  • Work arounds for PC development?
    • DragonFireSDK?
  • Memory Managment with ARC (very brief --go to apple for more)
  • Creating a Hello World App (without storyboard)
  • Testing on HW (must be paid regeistered developer or iOS U program)
  • Application Lifecycle
  • Simple App with Event Handling (concept same, code in objective-c)
    • iOS ViewController Programming: showing another View Controller
    • SAME in Swift

 

  • Ex 18.1-Exercise: Create a simple "Hello World Application", see book and above
  • Ex 18.2-Exercise: Do Quiz App of chapter 1 of book --starts p.g.1

 

9 24 iOS -GUI development,event handling and more

iPhone/iPad, iOS book - Chapter 1

  • MVC the concept
  • revisit gui development and eventhandling in: Begining iOS Swift App with Event Handling (repeated from mod. on swift)



    OLDER Objective-C examples
  • Moving from iOS MVC concept to iOS App Creation (simple without storyboards)
    • Delegate class
  • Connections Inspector (see example in event handling code)

 

  • Storyboard tutorials to go over:
    • see begining swift app development
    • http://www.raywenderlich.com/81879/storyboards-tutorial-swift-part-1
    • https://www.youtube.com/watch?v=Vms2hZwg0Zk
    • Multiple Storyboards OR Univesal Storyboard


  • Deployment to a device -- see book p.g. 22 and online documentation (must be $$ registered developer or complication of University Program)
9 25 iOS -GPS, Maps, Text Input

iPhone/iPad, iOS book - Chapter 4, 5

  • Location (Core Location Framework) - chapter 4
  • Delegation concept in Location - chapter 4
  • Maps - chapter 5
  • TextInput - chapter 5
9 Review of App Project

Android App Project

  • You must turn in your app Project and do a review of the apps assigned to you
    (see blackboard for reviews assigned to you)
10 26 iOS -more UI and Motion events

iPhone/iPad - iOS book- chapter 6, 7, 9

  • UIView Lecture and UIViewController Lecture
  • An Example of a UIView class- UIToolBar Lecture
  • UIView and UIScrollBarView -chapter 6
    • panning/paging, zooming
    • hide status bar
  • Motion Events- chapter 6
  • UIViewController - chapter 7
    • initializing - p.g. 161
    • loading -p.g. 162
    • unloading - p.g. 164
    • appearing / disapperaing views - p.g. 167
  • UITabBarController - chapter 7 ( through tabs changing "screens")

  • UITableView - chapter 9
  • UINavigationController
  • Web Services and UIWebView (chapter 25)

  • UINavigationController - chapter 11 (another way to change "screens")

 

 

Exercise:Twitter App with Storyboarding (objectives - master-detail app, storyboarding, external web)

10 27 iOS -Notifications and Orientation/rotation

iPhone/iPad, iOS book - Chapter 8

  • Notificaton Center (NSNotificationCenter) - p.g. 173
  • Orientation and autorotation - p.g. 176
Advanced/
Optional /
As needed
28 iOS-Camera

iPhone/iPad, iOS book - Chapter 12

  • Example Camera code
10 29 iOS-FileSystem and Data Storage and Application states

iPhone/iPad, ios-Chapter14, (optional read chapters 28,29), Chapter16

  • Read/Write Filesystem
  • application states
  • Core Data (SQLlite database file) - chapter 16 -- saving small ammount of stored objects -- in a single file (like Android)
  • On Your Own - Chapter 18 NSUserDefaults -- storing user preferences on iOS app.
10 30 iOS-Touch Events and UIGestureRecognizer

iPhone/iPad, ios-Chapter19, 20

  • Touch Evennts using UIResponder - chapter 19
  • UIGestureRecognizer, UIMenuController, UILongPressGestureRecognizer, UIPanGestureRecognizer- chapter 20
10 31 Storyboarding

iPhone/iPad, ios-Chapter24

  • StoryBoard (UIStoryboard) -- way of instantiate and layout all of your view controllers in one XIB file
As Scehduled Exam

In person exam. Covering material as announced (see blackboard)

Advanced/
Optional /
As needed
32 Web Servies and UIWebView

iPhone/iPad, ios-Chapter25

  • (iOS8+ offers new WKWebView -- better performance)
  • Web Services (mashups) and UIWebView (rendering web conent inside app).
Advanced/
Optional /
As needed
33UISplitViewController

iPhone/iPad, ios-Chapter26

  • UISplitViewController -- like fragments in Android, used for splitting up screen into multiple views with controllers --- used on iPad where more real estate.
Advanced/
Optional /
As needed
34 Animation

iPhone/iPad, ios-Chapter22

  • Animation - chapter 22, 23
  • OpenGL ES references for iOS
    • http://iphonedevelopment.blogspot.com/2009/05/openglfromgrounduptable.html
    • Cocos2D iOS Game Engine
      http:://www.cocos2diphone.org
Advanced/
Optional /
As needed
35 iCloud

iPhone/iPad, ios-Chapter30

  • iCloud- for iOS5+, user must have account, store user specific files generated by apps on iCloud (tied to user, so multiple devices owned by same user can shared these files)
    • using UIDocument, NSFileCoordinator, NSMedadataQuery, NSFilePresenter
  • iCloud allows for both file (document) storage and key-value storage
    • using NSUbiquitousKeyValueStore
  • does not work on emulator
Advanced/
Optional /
As needed
36 AddressBook

iPhone/iPad,

  • AddressBook Framework Lecture
Resource iOS Swift reinvention

Swift iOS

  • Swift Official Guide (from Apple iTunes, free)
  • General Tutorials:
    • Beginning with Swift
  • Core Data Tutorial
    • Data Migrations Tutorial
  • Swift Optionals Tutorial
  • Camera and Swift
Resource e-Business

Class Lecture,

    • e-Business Models
    • examples & types
    • Customer Relationship Management
    • Online Monetary Transactions
    • Some Advertising/Monetization Metrics/Terms
Resource Services, Analytics, and more
    • YQL Lecture, intro (console)
      some YQL examples
      YQL Open Tables Lists (already existing YQL access to web services)
    • Google Maps Lecture
      • Google Maps Source and Explained
      • Example Stylized Maps
    • Google Analytics Lecture
      • Why Google analytics
      • Google's demos
      • Get Google Analytics
      • Demo- how to add web profile to Google Analytics
    • Google Checkout
    • Apple Pay (mobile iOS)
    • Others Topics to search on: Twitter, Yelp, Amazon, Yahoo! Pipes, and more, Yahoo! YUI
Resource JSON

Lecture

    • JSON: a data interchange "language"
Resource XML

Class Lecture, Chapter 7, (Reference book optional reading J- Chapter 9,14)

  • intro to XML

Examples:

  • first
  • DTD example
  • with CSS
  • DataBinding
  • XSL simple
  • XSL simple 2
  • XSL to HTML
  • XSL to VRML, SVG &HTML
  • XSL documentation
  • XSLT (transfer xml to other xml documents, part of XSL)

Commerce XML

Multimedia XML

Exercise: Ex18

NOT
Covered
Social Network Programming

Class Lecture

    • See also course wiki's on blackboard

OPENSOCIAL

    • OpenSocial.org
    • OpenSocial wiki
    • JS API reference
    • Templates
    • OSML Tags (markup language...check for support on containers)

    Getting Started

    • OpenSocial App Basics - the request flow
    • OpenSocial Getting Started
    • Tutorial - a beginning app

    Google Gadget

    • Google Gadget tutorial
    • Getting started
    • Gadget API documentation

OpenSocial Views

  • views



FACEBOOK

  • Facebook App Creation (Java-based): part 1, part 2
  • Facebook SDKs
  • Facebook Authentication, What you Authenticate For?, When User Denies App Access, Basic User Data
    • with PHP
    • with Java
  • Facebook After Authentication - Getting Social Data
  • Facebook anatomy of an app
  • Facebook app lifecycle
NOT
Covered
 

Facebook - Secure App

  • Secure Canvas URL
  • SSL Certificate
OLD Objective -C

Objective -C,

in Objective-C book: Chapters 1,2 (environment), Chapters 3-11 (REVIEW of C), Chapters 12-19 (to page 117), 21-23

in IOS book: Chapter 2.

  • Introduction to Objective C
  • More on classes
    • with XCode 4 switched from GCC to LLVM and no longer need to declare class variables and then redeclare as @property type variable ---- now only need the @property line and do not need to additionally declare as class variable --this is automaticly done for you with LLVM.
  • Objective-C keywords +
  • Exercise 16.1: (NOT TURNED IN) Do "Beginning RandomPossessions" code on page 33-36 of your iOS Programming book.
 

cs453:mobile programming

  • home
  • outline
  • projects
  • syllabus
  • links