About+the+Course

The course is held at the Department of Information Engineering, University of Padova, Italy. Instructor: Carlo Fantozzi. Tutors: Sebastian Daberdaku, Francesco Peruch.

=Syllabus= INTRODUCTION. The software platforms: Android, iOS, Windows Phone. Hardware available in the lab: Android tablets and smartphones, Apple iPods and iPads. PROGRAMMING LANGUAGES. Concepts shared by major object-oriented languages. The Java, C++ and Objective-C languages. Design patterns: Model-View-Controller, Delegation, Target-Action. SOFTWARE DEVELOPMENT KITS (SDKs). Android SDK and Eclipse; Android NDK. Apple Developer Tools and Xcode. Windows Phone SDK (essentials). EMBEDDED SYSTEMS: USER INTERFACE. Design of user interfaces in embedded systems. Common user interface elements. Programmatic description. Declarative description. Advanced concepts; gestures. EMBEDDED SYSTEMS: MULTITASKING/MULTITHREADING. Tasks. Threads. States and state transitions in the life of an application. Responding to events. EMBEDDED SYSTEMS: STORING DATA. Reading and writing files. The SQLite database management system. Brief explanation of platform-specific solutions: Android’s Content Providers, Apple's Core Data. EMBEDDED SYSTEMS: ACCESSING HARDWARE. Battery status, camera, accelerometer.

=General information= Lectures are in Italian, but all the material for the course (slides, textbooks, etc.) is in English. The maximum number of students allowed to take the course is 60 (sixty). Priority is given to DM270 students. Grades for the course are a weighted average of scores in the group project (weight: 60%) and in the one-to-one oral exam (weight: 40%). The programming project must be performed in groups of three students. Each group must hold a project presentation during the weeks allotted for final exams. Further administrative information about the course is available from the course catalogue.

=Grading of Projects= Be aware that **quality will be rewarded more than quantity**. For instance, an application that provides only basic functionalities but is "rock solid" will get higher grades than an application that offers a lot of optional functions but does not respect the UI guidelines for the chosen platform, does not properly handle error conditions, stops recording data when it is moved to the background, and so forth. **The quality of the source code will be also considered in the grading process**. For instance, source code that is properly commented and highly modular will be favored over code that lacks comments, uses cut-and-paste instead of inheritance, and so forth.

=Textbooks= Students are also advised to take their own notes.
 * Class slides.
 * Selected web sources linked from this website.

=Suggested Books=
 * Ken Arnold, James Gosling, David Holmes, "The Java Programming Language", Fourth Edition. Prentice Hall, 2005. ISBN-10: 0321349806 DEI Library].
 * Herbert Schildt, "C++: The Complete Reference", Fourth Edition. McGraw-Hill, 2002. ISBN-10: 0072226803. DEI Library Kindle]
 * Robert Clair, "Learning Objective-C 2.0: A Hands-On Guide to Objective-C for Mac and iOS Developers", First Edition. Addison-Wesley, 2010. ISBN-10: 0321711386. DEI Library Kindle NOOK]
 * Ed Burnette, "Hello, Android: Introducing Google's Mobile Development Platform", Third Edition. Pragmatic Bookshelf, 2010. ISBN-10: 1934356565. DEI Library]
 * David Mark, Jeff LaMarche, Jack Nutting, "Beginning iOS 6 Development: Exploring the iOS SDK". Apress, 2013. ISBN-10: 1430245123. Kindle NOOK] A new edition covering iOS 7 has been published in April 2014 Kindle NOOK].