CSC 3560
Mobile Application Development / Android
Spring 2017 -- 3 credit hours


Meeting in Edgerly 203
  CSC3560
Tuesday, Thursday 9:30AM-10:45
Jan 17 -- May 11


Contact Information

Instructor:Stephen Taylor
Office: Edgerly 312A
Office hours: Wed 11AM-2PM
Web page: http://computersystemsartists.net/
Emails: staylor@fitchburgstate.edu; StephenEugeneTaylor@gmail.com;
Office phone: 978-665-3704
Home phone: 508-867-9288

Catalog description

This course is aimed to provide students with the tools and knowledge necessary to create applications that can run on mobile devices. Topics include mobile operating systems and development environments, memory management, user interfaces for mobile devices, wireless mobile networking, event handling, and animation using 2-D/3 D graphics, audio and video application programming interfaces, and data storage. Students planning to enroll in this course should have background in computer science and be familiar with computer programming.

Course goals

Students will learn concepts of object oriented programming with Java and practice their programming skills; they will become familiar with the execution models used in mobile devices.

Course Objectives

Upon successful completion of this course, a student will have demonstrated knowledge of:
  1. Application development environment for Android phones and tablets.
  2. Graphics concepts for rendering and animation
  3. Using the network and the internet from within an application
This is a project-oriented course, and during the term we will write a number of small programs, 50-500 lines of code and commments, at roughly the rate of one every two weeks.

Attendance policy

This is partly a lab course, even though there is no separate lab. Although you may not need it every day, I hope that you will be able to bring a laptop to class with you. We do have computers here in the lab which you may use if you prefer, but at the very least you should bring a USB drive so that you can carry your work away with you. Edgerly 203 is in use many hours a week.

One of the good things about dealing with rapidly evolving technology is that since all of us are racing to learn many details which have recently changed you have the opportunity to know more about some things than anyone in the class, including me.

With this achievement comes the responsibility to share your knowledge. I hope you will be able often to help me and your fellow students, both during lectures and outside of class. During the first several meetings of the course, I call the roll. Once I learn names and faces I stop calling the roll, but I continue to be interested in your presence.

Textbook

This term I intend to take most of the course material from the web, especially Google's Android tutorials, http://developer.android.com/training/index.html

Some years I used:

Zigurd Mednieks and Laird Donin and G Blake Meike and Maumi Nakamura: Programming Android second edition, O'Reilly 2012
which is part of the O'Reilly Safari database available in the library, and is also downloadable from various spots on the web. But after listening to what previous students had to say, I decided that Programming Android is more interesting after you've written a half-dozen small apps -- by which time the course is over. So I still think it's a good book, and more thoughtful and informative than almost everything else I've seen, but I'm mentioning it as a resource, and not as a required text.

If you happen to pick up a "developing Android Apps" book, of which there are probably a hundred or more, you'll find that almost all of them have a lot of screenshots of Eclipse (no longer supported by Google) or Android Studio (constantly changing; earlier versions have gradually added new features and changed old ones.) It's pretty frustrating to work your way through a step-by-step procedure when none of the steps match the software you are using.

Just to make the problem worse, we'll be doing what Google calls Command Line development, because (1) it is less resource-intensive than Android Studio (Google recommends you have 8GB of RAM to run Android Studio) and (2) I think that typing in all those commands gives you a better understanding of what is going on, so that if you do later start to use Android Studio, you'll recognize what it is doing, and have a clue how to handle its failures (which are still amazingly common.)

If Android stops evolving, the books will probably get more thoughtful, but if that happens, you may not be very interested in Android anymore, either.

Course resources

Here are some useful links:

I intend to place some programs that we discuss in class on the web .

Projects

This is a project-oriented course, and it is absolutely essential for you to work on each project. The point of the course is to practice programming, and of course to improve with practice. Learning to program is like learning a human language in that it involves a number of different skills, and you must practice each in order to master it. These skills include: writing code of course, but also reading code, writing specifications, writing documentation, debugging.

Final Exam

There is a final exam, a mid-term exam, and two practice exams, all of which are in very similar formats. Because the time available for an exam is short, I usually test code reading skills, rather than writing skills, on exams.

Topics

Lecture topics

Grading policy

Class Participation, quizzes: 30%
Mid-term exam: 20%
Final exam: 20%
Programming Project reports: 30%

Late work

Assignments are due at midnight on the designated day, but I'm already asleep at midnight, so I'll count anything turned in at the Blackboard dropbox by the time I get up on the following morning as on time.

I may give credit or partial credit for late work, but you should talk to me as soon as you know it will be late. I will always give at least partial credit for partial work, so turning in something incomplete but on time is a sensible strategy.

Peculiar procedures

There are non-programming activities which are included in each project. Sometimes I will ask you to interpret your results, or provide charts or graphs.

For every assignment, I expect you to turn in a Development diary. The development diary will be at least two pages long, and I actually like longer ones better. It will be neatly word-processed and beautifully formated. Since Android apps are so visual, I expect you will include pictures of your apps various screens. The diary will explain what you did, and it will tell me about your successes and frustrations in coding up the program, which blind alleys you went up, how you figured out where you went wrong, etc. If you never make any mistakes at all, you can tell me how how avoid them, because I'd sure like to know! Part of your grade for the project will be based on this development diary.

Each student is responsible for completing all course requirements and for keeping up with all activities of the course (whether a student is present or not).

Academic Honesty

I expect you to be so interested in your projects and homeworks that you discuss them with everyone, including your mom, your little brother, and other members of the class (who will at least know what they're being sympathetic about.) So I won't be too surprised if several people come up with the same idea, or even the same programming trick. But I want you to do each homework yourself, and I don't want you to share typing, even if you both worked on the problem together, and you can't really tell anymore who came up with what. (Except of course for group projects, for which the group will be designated in advance.) To keep from confusing me, you should mention everyone you talked to and every web site you looked at in your development diary. You can skip mentioning your little brother, if you think he wasn't any help at all...

I consider it plagiarism to share typing or fail to give credit to other peoples' ideas.

Accommodation

If you require course adaptations or accommodation because of a disability or acute medical condition or if you require assistance in the event of an emergency evacuation of the classroom, please see the instructor as soon as possible. Students with disabilities are encouraged to register with the Office of Disability Services on the 3rd floor of the Hammond Building.