Foothill CollegeApproved Course Outlines

Physical Sciences, Mathematics & Engineering Division
C S 64AWRITING APPS FOR THE ANDROID IN JAVAWinter 2014
4 hours lecture, 3 hours laboratory.5 Units

Total Quarter Learning Hours: 84 (Total of All Lecture, Lecture/Lab, and Lab hours X 12)
 
 Lecture Hours: 4 Lab Hours: 3 Lecture/Lab:
 Note: If Lab hours are specified, see item 10. Lab Content below.

Repeatability -
Statement: Not Repeatable.

Status -
 Course Status: ActiveGrading: Letter Grade with P/NP option
 Degree Status: ApplicableCredit Status: Credit
 Degree or Certificate Requirement: AS Degree
 GE Status: Non-GE

Articulation Office Information -
 Transferability: CSUValidation: 11/13/12

1. Description -
Introduction to mobile apps programming in Java for the Android. Coding topics include the Android SDK for Eclipse, the ADT Plugin, XML fundamentals and a survey of API methods and objects used to control the Android user interface. Concept topics include layouts, activity lifecycles, runtime binding, intents, location awareness, audio, video, OpenGL ES, and monetizing apps.
Prerequisite: None
Co-requisite: None
Advisory: C S 1B or 2B.

2. Course Objectives -
The student will be able to:
  1. Use the basic tools used by an Android programmer.
  2. Configure an Android emulator and a hardware connection to an Android device.
  3. Describe the Android development lifecycle.
  4. Define XML and give examples of how it is used to express data.
  5. Write interactive programs on the Android.
  6. Demonstrate the use of activity lifecycles to control an app.
  7. Analyze a design's ability to support multiple screen resolutions and natural languages.
  8. Design dynamic UIs using fragments and the Android support library.
  9. Analyze a design's ability to interact with other apps on the device.
  10. Produce location-aware apps.
  11. Incorporate network and/or cloud operations into an app.
  12. Use layout hierarchies to produce reusable layouts .
  13. Explain how audio is used in Android apps.
  14. Use photo and video in an Android app.
  15. Design 2-D and 3-D graphics into apps using the mathematics of linear and affine transformations through the OpenGL application programmer interface (API).
  16. Sign and publish apps.
  17. Describe the basics of app monetization and the incorporation of TV, accessibility and web searching into apps.
3. Special Facilities and/or Equipment -
  1. access to a computer laboratory with Java compilers, Android SDK and ADT Plugins, Android devices and USB connectivity.
  2. a website or course management system with an assignment posting component (through which all lab assignments are to be submitted) and a forum component (where students can discuss course material and receive help from the instructor). This applies to all sections, including on-campus (i.e., face-to-face) offerings.
  3. When taught via Foothill Global Access on the Internet, the college will provide a fully functional and maintained course management system through which the instructor and students can interact.
  4. When taught via Foothill Global Access on the Internet, students must have currently existing e-mail accounts and ongoing access to computers with internet capabilities.

4. Course Content (Body of knowledge) -
  1. Android Development Tools
    1. Eclipse integrated development environment (IDE)
    2. Android software development kit (SDK)
    3. Application development tools (ADT) plugin
  2. Emulators and Devices
    1. Android virtual devices (AVDs)
    2. Connecting Androids to the development platform
    3. USB drivers for Android development
  3. Android Development Lifecycle
    1. "Hello World!"
    2. Running on the emulator
    3. Running on a device
  4. XML Fundamentals
    1. Trees
    2. Elements
    3. Attributes
    4. Examples
  5. Simple Interactive programs
    1. View and ViewGroup objects
    2. Layouts using XML and graphics layout editors
    3. Text fields
    4. String resources
    5. Buttons
    6. Activities and manifests
    7. Runtime binding
    8. Intents
  6. Activity Lifecycles
    1. Callbacks and activity pyramids
    2. Launcher activity
    3. Instantiation
    4. Destroying activities
    5. Pausing, resuming, starting and stopping activities
    6. Saving and restoring activities
  7. Maximizing the Audience
    1. Multi-(natural) language support
    2. Multi-resolution support
    3. Multi-version support
  8. Dynamic UIs
    1. Fragments
    2. Android support library
    3. Flexible UIs
    4. Fragment communication
  9. Interaction with Other Apps
    1. Sending users to apps
    2. Getting results from apps
    3. Allowing apps to start our activity
  10. Location-Aware Apps
    1. Location manager
    2. Obtaining current location
    3. Displaying addresses
  11. Network and Cloud Operations
    1. Connecting to networks
    2. Managing network usage
    3. Backup API
    4. Cloud messaging
    5. Issuing email
  12. Layout Hierarchies
    1. ListView
    2. Linear
    3. Relative
    4. Lint
    5. Re-usable layouts
    6. Includes and merges
    7. ViewStub layout
  13. Audio
    1. Volume and playback
    2. Audio focus
  14. Photos and Video
    1. Capturing photos
    2. Simple video record and playback
    3. Controlling the camera
  15. Graphics
    1. OpenGL and OpenGL ES
    2. Views
    3. Renderers
    4. 2D and 3D shapes
    5. Projection transformations
    6. Motion transformations
    7. Touch events
  16. Signing and Publishing
    1. Testing for distribution
    2. Icons and labels
    3. Versioning
    4. Obtaining and signing a certificate
    5. Signing up as a developer
    6. User Authentication
  17. Overview of Advanced Topics
    1. Bitmaps
    2. TV
    3. Monetizing apps
    4. Accessibility
    5. Connecting devices
    6. Searching the Web
    7. Saving user data
5. Repeatability - Moved to header area.
 
6. Methods of Evaluation -
  1. Tests and quizzes
  2. Written laboratory assignments which include source code, sample runs and documentation.
  3. Project suitable for portfolio
  4. Final examination
7. Representative Text(s) -
Zigurd Mednieks, et. al., Programming Android, O'Reilly, 2011.
Rick Rogers, et. al., Android Application Development: Programming with the Google SDK, O'Reilly, 2009.

8. Disciplines -
Computer Science
 
9. Method of Instruction -
  1. Lectures which include motivation for syntax and use of the Android SDK using Eclipse for Java Developers.
  2. On-line labs (for all sections, including those meeting face-to-face/on campus) consisting of
    1. A programming assignment web-page located on a college-hosted course management system or other department-approved Internet environment. Here, the students will review the specification of each programming assignment and submit their completed lab work.
    2. A discussion web-page located on a college hosted course management system or other department-approved Internet environment. Here, students can request assistance from the instructor and interact publically with other class members.
  3. Detailed review of programming assignments which includes model solutions and specific comments on the student submissions.
  4. In person or on-line discussion which engages students and instructor in an ongoing dialog pertaining to all aspects of designing, implementing and analyzing programs.
  5. When course is taught fully on-line:
    1. Instructor-authored lecture materials, handouts, syllabus, assignments, tests, and other relevant course material will be delivered through a college hosted course management system or other department-approved Internet environment.
    2. Additional instructional guidelines for this course are listed in the attached addendum of CS department on-line practices.

 
10. Lab Content -
  1. Familiarization with the Android Development Platform
    1. Configure the settings of the Eclipse Integrated Development Environment (IDE) for Android development.
    2. Use the IDE to create an Android programming project.
    3. Write a short introductory program.
    4. Connect to an Android device and run the program on the device.
  2. Writing Android Programs
    1. Use the IDE to create an app project that has buttons, string resources, View and ViewGroup objects.
    2. Experiment with XML, activities, manifests and intents in this project.
    3. Use the emulator to test the app
    4. Load the app onto an Android device and test it on actual hardware.
  3. Expanding the App Capabilities with Lifecycles and more UI options
    1. Use the IDE to create an app that has an activity lifecycle including some of the following: pause, resume, start, stop, destroy and restore.
    2. Experiment with UI fragments, and flexible UIs in this project.
    3. Use the emulator to test the app
    4. Load the app onto an Android device and test it on actual hardware.
  4. Demonstrating Inter-App Interaction
    1. Use the IDE to create an app that has inter-application interaction.
    2. Experiment with sending and getting messages to other apps in this project.
    3. Use the emulator to test the app
    4. Load the app onto an Android device and test it on actual hardware.
  5. Demonstrating Location Awareness
    1. Use the IDE to create an app that is location-aware.
    2. Experiment with the location manager in this project.
    3. Use the emulator to test the app
    4. Load the app onto an Android device and test it on actual hardware.
  6. Building a program that demonstrates layout hierarchies
    1. Use the IDE to create an app that has multiple layout hierarchies.
    2. Experiment with ListView, Lint, and ViewStubs in this project.
    3. Use the emulator to test the app
    4. Load the app onto an Android device and test it on actual hardware.
  7. Building a program that demonstrates network operations
    1. Use the IDE to create an app that has network awareness.
    2. Experiment network and cloud messaging in this project.
    3. Use the emulator to test the app
    4. Load the app onto an Android device and test it on actual hardware
  8. Incorporating audio and/or video into app projects
    1. Use the IDE to create an app that has either audio or video (or both) incorporated into its design.
    2. Experiment with volume, playback, photo-capture and/or video control in this project.
    3. Use the emulator to test the app
    4. Load the app onto an Android device and test it on actual hardware.
  9. Building a program around 2-D or 3-D graphics
    1. Use the IDE to create an app that uses OpenGL ES with 2-D and/or 3-D graphics.
    2. Experiment with projections, shapes, motion transformations and renderers in this project.
    3. Use the emulator to test the app
    4. Load the app onto an Android device and test it on actual hardware.

 
11. Honors Description - No longer used. Integrated into main description section.
 
12. Types and/or Examples of Required Reading, Writing and Outside of Class Assignments -
  1. Reading
    1. Textbook assigned reading averaging 30 pages per week.
    2. Reading the supplied handouts and modules averaging 10 pages per week.
    3. Reading on-line resources as directed by instructor though links pertinent to programming.
    4. Reading library and reference material directed by instructor through course handouts.
  2. Writing
    1. Writing technical prose documentation that supports and describes the programs that are submitted for grades.
13. Need/Justification -
This course is a restricted support course for the AS degree in Computer Science.


Course status: Active
Last updated: 2014-03-11 14:31:47


Foothill CollegeApproved Course Outlines