Academic Catalog

C S 64A: WRITING APPS FOR THE ANDROID IN JAVA

Foothill College Course Outline of Record

Foothill College Course Outline of Record
Heading Value
Effective Term: Summer 2021
Units: 4.5
Hours: 4 lecture, 2 laboratory per week (72 total per quarter)
Advisory: C S 1B or 2B.
Degree & Credit Status: Degree-Applicable Credit Course
Foothill GE: Non-GE
Transferable: CSU
Grade Type: Letter Grade (Request for Pass/No Pass)
Repeatability: Not Repeatable

Student Learning Outcomes

  • A successful student will be able to write many different types of Android apps, making use of diverse aspects such as user interface layout, XML, the Android support library, location-awareness, 2-D and 3-D graphics, and app signing and publishing.
  • A successful student will be able to configure an Android SDK emulator and use it to write and debug basic apps that can be uploaded and tested on an actual Android device.

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.

Course Objectives

The student will be able to:
A. Use the basic tools used by an Android programmer.
B. Configure an Android emulator and a hardware connection to an Android device.
C. Describe the Android development lifecycle.
D. Define XML and give examples of how it is used to express data.
E. Write interactive programs on the Android.
F. Demonstrate the use of activity lifecycles to control an app.
G. Analyze a design's ability to support multiple screen resolutions and natural languages.
H. Design dynamic UIs using fragments and the Android support library.
I. Analyze a design's ability to interact with other apps on the device.
J. Produce location-aware apps.
K. Incorporate network and/or cloud operations into an app.
L. Use layout hierarchies to produce reusable layouts.
M. Explain how audio is used in Android apps.
N. Use photo and video in an Android app.
O. Design 2-D and 3-D graphics into apps using the mathematics of linear and affine transformations through the OpenGL application programmer interface (API).
P. Sign and publish apps.
Q. Describe the basics of app monetization and the incorporation of TV, accessibility and web searching into apps.

Course Content

A. Android Development Tools
1. Eclipse integrated development environment (IDE)
2. Android software development kit (SDK)
3. Application development tools (ADT) plugin
B. Emulators and Devices
1. Android virtual devices (AVDs)
2. Connecting Androids to the development platform
3. USB drivers for Android development
C. Android Development Lifecycle
1. "Hello World!"
2. Running on the emulator
3. Running on a device
D. XML Fundamentals
1. Trees
2. Elements
3. Attributes
4. Examples
E. 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
F. 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
G. Maximizing the Audience
1. Multi-(natural) language support
2. Multi-resolution support
3. Multi-version support
H. Dynamic UIs
1. Fragments
2. Android support library
3. Flexible UIs
4. Fragment communication
I. Interaction with Other Apps
1. Sending users to apps
2. Getting results from apps
3. Allowing apps to start our activity
J. Location-Aware Apps
1. Location manager
2. Obtaining current location
3. Displaying addresses
K. Network and Cloud Operations
1. Connecting to networks
2. Managing network usage
3. Backup API
4. Cloud messaging
5. Issuing email
L. Layout Hierarchies
1. ListView
2. Linear
3. Relative
4. Lint
5. Re-usable layouts
6. Includes and merges
7. ViewStub layout
M. Audio
1. Volume and playback
2. Audio focus
N. Photos and Video
1. Capturing photos
2. Simple video record and playback
3. Controlling the camera
O. Graphics
1. OpenGL and OpenGL ES
2. Views
3. Renderers
4. 2-D and 3-D shapes
5. Projection transformations
6. Motion transformations
7. Touch events
P. 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
Q. Overview of Advanced Topics
1. Bitmaps
2. TV
3. Monetizing apps
4. Accessibility
5. Connecting devices
6. Searching the web
7. Saving user data

Lab Content

A. 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
B. 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
C. 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
D. 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
E. 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
F. 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
G. 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
H. 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
I. 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

Special Facilities and/or Equipment

A. Access to a computer laboratory with Java compilers, Android SDK and ADT plugins, Android devices and USB connectivity.
B. 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.
C. 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.
D. When taught via Foothill Global Access on the Internet, students must have currently existing email accounts and ongoing access to computers with internet capabilities.

Method(s) of Evaluation

Methods of Evaluation may include but are not limited to the following:

Tests and quizzes
Written laboratory assignments which include source code, sample runs and documentation
Project suitable for portfolio
Final examination

Method(s) of Instruction

Methods of Instruction may include but are not limited to the following:

Lectures which include motivation for syntax and use of the Android SDK using Eclipse for Java developers
Online labs (for all sections, including those meeting face-to-face/on campus), consisting of:
1. A programming assignment webpage 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 webpage located on a college-hosted course management system or other department-approved internet environment. Here, students can request assistance from the instructor and interact publicly with other class members
Detailed review of programming assignments which includes model solutions and specific comments on the student submissions
In-person or online discussion which engages students and instructor in an ongoing dialog pertaining to all aspects of designing, implementing and analyzing programs
When course is taught fully online:
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 online practices

Representative Text(s) and Other Materials

Mednieks, Zigurd, et al.. Programming Android. 2011.

Rogers, Rick, et al.. Android Application Development: Programming with the Google SDK. 2009.

Philips, Bill. Android Programming: The Big Nerd Ranch Guide, 3rd ed.. 2017.

Types and/or Examples of Required Reading, Writing, and Outside of Class Assignments

A. Reading
1. Textbook assigned reading averaging 30 pages per week.
2. Reading the supplied handouts and modules averaging 10 pages per week.
3. Reading online resources as directed by instructor though links pertinent to programming.
4. Reading library and reference material directed by instructor through course handouts.
B. Writing
1. Writing technical prose documentation that supports and describes the programs that are submitted for grades.

Discipline(s)

Computer Science