IEMS 5722 Mobile Network Programming and Distributed Server Architecture

Similar documents
Real-Time Embedded Systems

Embedded Systems Programming - PA8001

University of Maryland at College Park Department of Geographical Sciences GEOG 477/ GEOG777: Mobile GIS Development

ANDROID SYLLABUS. Advanced Android

Android App Development

Android Programming in Bluetooth Cochlea Group

Introduction To Android

Android App Development

Syllabus Class schedule Section 1: Tuesdays 9:00 11:50 Section 2: Tuesdays 1:00 3:50

Android Programmierung leichtgemacht. Lars Vogel

IEMS 5722 Mobile Network Programming and Distributed Server Architecture

Android Programming (5 Days)

Our First Android Application

Lecture 1 Introduction to Android. App Development for Mobile Devices. App Development for Mobile Devices. Announcement.

Minds-on: Android. Session 1

Assignment 2 Team Project: Distributed System and Application

IERG 4080 Building Scalable Internet-based Services

Android Application Development

ORACLE UNIVERSITY AUTHORISED EDUCATION PARTNER (WDP)

CS 3270 Mobile Development for Android Syllabus

Android. Lesson 1. Introduction. Android Developer Fundamentals. Android Developer Fundamentals. to Android 1

Web II CE 2413C 01 CE 2414N 01 Spring 2013

Android App Development for Beginners

Mobile Programming Lecture 1. Getting Started

Syslog Technologies Innovative Thoughts

IEMS 5722 Mobile Network Programming and Distributed Server Architecture

CS 4518 Mobile and Ubiquitous Computing Lecture 4: Data-Driven Views, Android Components & Android Activity Lifecycle Emmanuel Agu

Mobile Application Development - Android

Contextual Android Education

COS 333: Advanced Programming Techniques

Android App Development. Ahmad Tayeb

MC Android Programming

CS 235AM, Mobile Application Development: Android Spring 2016

Android UI Development

Software Development & Education Center ANDROID. Application Development

Lecture 1. Course Mechanics. Administrative Items. Grading. Programming Assignments. Homework Assignments

CS 528 Mobile and Ubiquitous Computing Lecture 1b: Introduction to Android. Emmanuel Agu

UNIT:2 Introduction to Android

Wireless Vehicle Bus Adapter (WVA) Android Library Tutorial

CMSC 628: Introduction to Mobile Computing

Project Covered During Training: Real Time Project Training

BCA 6. Question Bank

ANDROID APPLICATION DEVELOPMENT COURSE Training Program

Lecture 2: January 24

Students will make use of Adobe Dreamweaver as their primary HTML editor; however, the focus of the

Web Design I. CE Spring 2013 Continuing Education [Pick the date][type the sender company name]

Web Programming Spring 2010

Solving an Android Threading Problem

CS 4518 Mobile and Ubiquitous Computing Lecture 2: Introduction to Android. Emmanuel Agu

CSCU9YH Development with Android

Distributed Systems Project 4 Assigned: Friday March 20 Due: Friday April 3, 11:59pm

Applied Cognitive Computing Fall 2016 Android Application + IBM Bluemix (Cloudant NoSQL DB)

CSC 634: Networks Programming

Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna

ios vs Android By: Group 2

Upon completion of the second part of the lab the students will have:

INTRODUCTION TO ANDROID

Android. Mobile operating system developed by Google A complete stack. Based on the Linux kernel Open source under the Apache 2 license

Android Apps Development for Mobile and Tablet Device (Level I) Lesson 2

Android Developer Nanodegree Syllabus

IML 300: Reading and Writing the Web

SD Module-1 Android Dvelopment

SD Module- Android Programming

Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna

Another difference is that the kernel includes only the suspend to memory mechanism, and not the suspend to hard disk, which is used on PCs.

EECE.2160: ECE Application Programming Spring 2019

COSC 3P97 Mobile Computing

Agenda. Overview of Xamarin and Xamarin.Android Xamarin.Android fundamentals Creating a detail screen

Lecture 8: February 19

Wal-Mart Canada: Adobe Connect User Guide

1 Getting Familiar with Datagrams (2 Points)

Android Online Training

Introduction to Android Development

Digital Check-in User Guide for Students

Android App Development. Muhammad Sharjeel COMSATS Institute of Information Technology, Lahore

User Interfaces for Web Sites and Mobile Devices. System and Networks

Introduction to the Application Layer. Computer Networks Term B14

EMBEDDED SYSTEMS PROGRAMMING UI Specification: Approaches

2019 DIGITAL ARTISTIC REVIEW GUIDELINES

Course Learning Outcomes (CLO): Student Outcomes (SO):

Data Communication & Computer Networks MCQ S

ArcGIS Runtime SDK for Android: Building Apps. Shelly Gill

CSE 5236 Project Description

EMBEDDED SYSTEMS PROGRAMMING Application Basics

IJRDTM Kailash ISBN No Vol.17 Issue

Getting Started with the Smartphone and Tablet ArcGIS Runtime SDKs. David Martinez, Kris Bezdecny, Andy Gup, David Cardella

Web II CE 2413C 01 CE 2414N 01 Spring 2012

ANDROID DEVELOPMENT. Course Details

Produced by. Mobile Application Development. David Drohan Department of Computing & Mathematics Waterford Institute of Technology

Android development. Outline. Android Studio. Setting up Android Studio. 1. Set up Android Studio. Tiberiu Vilcu. 2.

Faculty of Information School of Graduate Studies University of Toronto St. George Semester: Winter 2017 INF2191H User Interface Design

Android Development Crash Course

The paper shows how to realize write-once-run-anywhere for such apps, and what are important lessons learned from our experience.

Android App Development. Mr. Michaud ICE Programs Georgia Institute of Technology

CSC 4900 Computer Networks: Introduction

MP 1: HTTP Client + Server Due: Friday, Feb 9th, 11:59pm

Web II CE 2413C 01 CE 2414N 01 Fall 2013

Syllabus Revised 01/03/2018

Juan M. Parada Juan has over 15 years of web design and development experience and is a professor at the University of the Arts.

P2P Multimedia File Sharing Application using Socket Programming

Transcription:

Department of Information Engineering, CUHK MScIE 2 nd Semester, 2016/17 IEMS 5722 Mobile Network Programming and Distributed Server Architecture Lecture 1 Course Introduction Lecturer: Albert C. M. Au Yeung 12 th January, 2017

Overview of This Lecture Course Administration Course details Course schedule Assessment Schemes Policies and Rules Course Content Overview Computer networking Mobile network programming Distributed server architecture Introduction to Android programming 2

Course Instructors Albert Au Yeung Lecturer Email: cmauyeung@ie.cuhk.edu.hk For lecture content, materials, details of assignments, project arrangements, reference materials, etc. Marco Leung Teaching Assistant Email: mtleung@cuhk.edu.hk Contact Marco if you need specific help when working on your assignments and project Note: Both of us do NOT have regular office hours on campus, email us first whenever you need help. 3

Course Details Venue & Time YIA LT9 7:00pm 9:30pm 12 Lectures + 1 Project Presentation Session (28 th April, 2016) Jan 2015 Feb 2015 Mar 2015 Apr 2015 S M T W T F S S M T W T F S S M T W T F S S M T W T F S 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4 1 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 2 3 4 5 6 7 8 15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 9 10 11 12 13 14 15 22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 16 17 18 19 20 21 22 29 30 31 26 27 28 26 27 28 29 30 31 23 24 25 26 27 28 29 30 4

Course Schedule Our 12 Lectures will following (roughly) the schedule below: Lecture Date Content Assignments 1 12 / 01 Course Introduction Assignment 0 2 19 / 01 Android Programming 3 26 / 01 Data Communications & Client-Server Architecture Assignment 1 4 02 / 02 Multi-threading & HTTP Networking in Android 5 09 / 02 Web and Application Servers Assignment 2 6 16 / 02 Database and Caching 7 23 / 02 Instant Messaging & Google Cloud Messaging Assignment 3 8 02 / 03 Peer-to-Peer Networking in Android 9 09 / 03 Asynchronous Tasks & Message Queues Assignment 4 10 16 / 03 Cloud Computing & APIs 11 23 / 03 Socket.io 12 30 / 03 Advanced Android Programming Project Plan 13 27 / 04 Project Demonstration 5

Assessment Scheme 10% - Attendance (From Lecture 2 to Lecture 12) 50% - Programming Assignment (Android and server applications development) 40% - Course Project (On top of the app developed in the assignments, develop new features and functions that requires data communication over the network) 6

Assessment Scheme 50% - Programming Assignment Assignments involve Android and Python programming Using the Android Studio environment is recommended You are required to submit the source code for marking We will cover some Android programming and network programming You can re-use your assignment codes in your project A total of 5 assignments (4%, 10%, 10%, 12%, 14%) 7

Assessment Scheme 40% - Group Project You are going to build on top of the app developed in your assignment Form a group with 2-3 students You will give a presentation of your project (in PPT and/or as a demo) in the last lecture A brief report should be handed in after the presentation (in PPT format) 8

Assignments & Project In the assignments, you will: Learn how to develop an Android app Learn how to develop a server application in Python that supports the app Learn how to build an instant messaging app using various components and services In the project, you will: Build on top the app in the assignment, and add interesting features to it (e.g. group chat, send and receive images, files, audio clips; mini games; NFC for adding new friends, etc.) 9

Notices 10

Take this Course? Take this course if you: Have basic understanding of Java programming Would like to learn how to become a full stack developer of mobile applications Interested in mobile app development on Android, and in Web applications using Python Would like to challenge yourself with interesting programming problems 11

Some Rules What you should do in this course? Attend the lectures, and raise questions whenever you have any Seek help as early as possible (e.g. if you have difficulties in picking up Java/Android programming, or if you cannot set up the development kit) Feel free to make suggestions to the course and/or lectures Do your own assignments, and do NOT make your work publicly available before the deadline All late submissions of assignments will receive 30% penalty 12

Some Rules Honesty in Academic Work Zero tolerance on cheating and plagiarism http://www.cuhk.edu.hk/policy/academichonesty/ Cite references whenever you use materials from any other sources It will be considered plagiarism no matter you copy other s work or allow other to copy your work 13

Online Materials Assignments will be released and collected on the CUHK E-Learning System: https://elearn.cuhk.edu.hk/ You will submit your assignments here 14

Online Materials Course Website: https://course.ie.cuhk.edu.hk/~iems5722/ or http://iems5722.albertauyeung.com Lecture slides, assignments, project details, references will be available here 15

Online Materials For more convenient communication among us and discussions among yourselves, we will use Slack in this course: https://iems5722-1617t2.slack.com/ Sign up for an account on slack and join the above team NOTE: DO NOT post any solution of assignments on Slack or any other public channels 16

Course Content Overview 17

What is this Course About? Mobile Network Programming and Distributed Server Architecture 18

Computer Networking Computer Network A network that allows computers to perform data communication with one another 19

Data Communication Exchange of data between two devices using some form of transmission medium A simplified communication model: Source Transmitter Transmission Medium Receiver Destination Message Sender Device Receiver Device Protocols: rules that govern how data is transmitted in this system 20

Computer Networks When we have many computers that want to talk to one another, point-topoint links become not practical, especially when the distance is too far Computer Computer Computer Computer Computer Computer Computer Communication Network Computer Computer Computer Computer Computer 21

Computer Networks Challenges in Networking: Computer Computer How can data be transmitted from one node to another through the network? How can we address the computers? Computer Communication Network Computer How can we identify which applications on the computers the data should be delivered to? How to handle error or missing data? Computer Computer What if a large amount of data is transmitted at the same time? 22

Computer Networks Challenges in Networking: How can data be transmitted from one node to another through the network? How can we address the computers? How can we identify which applications on the computers the data should be delivered to? How to handle error or missing data? What if a large amount of data is transmitted at the same time? Data is transmitted through routing/switching in the network E.g. IP address is one way to uniquely identify a computer in a network Applications can be configured to listen to a specific port on the computer Protocols such as TCP or DCP handle these problems 23

Applications in Computer Networks Common Applications on the Internet The World Wide Web (Web servers and browsers) File transfer (FTP servers and clients) Instant messaging & video conferencing (e.g. Skype, Whatsapp, Wechat) Peer-to-peer file sharing Cloud storage 24

Applications in Computer Networks World Wide Web Send HTTP requests to Web servers Web Server Client (PC, laptop, smartphone, etc.) Receive Web pages and images from the Web server 25

Applications in Computer Networks Instant Messaging & Video Conferencing Authenticate against the login server Login Server Client of User A Perform instant messaging or video conferencing with peer Client of User B 26

Applications in Computer Networks Peer-to-peer file sharing Retrieve a list of peers with the target file Tracker Server Client of User A Client of User B Download file pieces from different peers Client of User C 27

Focus of this Course Different ways for communicating with other computers through the network Format for data exchange between servers and clients Distributed Server Architecture (How servers support networking apps, what are the design principles) Applications Network Protocols Android Network Programming 28

What you will Learn in this Course Android Programming Server Side Architecture and Development HTTP Networking Asynchronous Tasks P2P Networking Web Server Application Server Database 29

Android Mobile Application Development 30

Android Why Android? The most popular OS for mobile devices Java as the programming language Many third-party libraries and components to use Relatively easier to develop and test Ref: https://www.statista.com/statistics/266136/global-marketshare-held-by-smartphone-operating-systems/ 31

Android What is Android? Initially developed by Android Inc. (which had intended to develop OS for cameras in the beginning) Bought by Google in 2005 First released in 2007, first smartphone (HTC) released in 2008 Based on the Linux kernel, targeting touch devices Latest version: 7.0 (Nougat) https://www.android.com/versions/nougat-7-0/ 32

Mobile Network Programming Many mobile apps require access to the Internet to Receive news, updates, data, etc. (e.g. News apps) Send and retrieve data for backup (e.g. Dropbox, Google Drive) Perform networking or messaging functions (e.g. Facebook, Whatsapp, Wechat) Transmit images or files 33

Mobile Network Programming Topics we will cover in this course Data communication using the TCP/IP protocol (with peers and with servers) HTTP based data exchange Push technology & cloud messaging Emerging tools for socket programming Data exchange formats (e.g. JSON & XML) 34

Mobile Network Programming Data communication using the TCP/IP protocol Listening for in-coming data with a socket Data packets transmitted using the TCP protocol Data packets transmitted using the TCP protocol Listening for in-coming data with a socket (Involves some socket programming and multi-threading in Java) 35

Mobile Network Programming HTTP-based Data Exchange Request of actions (retrieve, update, create, delete) send to server using HTTP (in the form of calling a URL) Result and data returned in the form of JSON or XML strings (Involves using an HTTP client and multi-threading on the client side) 36

Mobile Network Programming Push Technology & Cloud Messaging Application Servers A service running in the client receives the message, and carry out corresponding actions (e.g. notify the user, launch an app) Push a message to the client when there is an update, a new message, etc. (We will talk about common push technologies, and also the Google Cloud Messaging service) 37

Distributed Server Architecture Client-Server Architecture 38

Distributed Server Architecture Common Three Tier Architecture Presentation Tier (e.g. Webpage, App) Logic Tier (Carry out commands, make logic decisions, perform calculations) Data Tier (A database or file system storing the data of the app) The front-end System The back-end System 39

Break 40

Please fill in this questionnaire https://goo.gl/kbahle 41

Introduction to Android Programming 42

The Android Platform A software stack for mobile devices such as smartphones and tablets Include an OS kernel, system libraries, application frameworks and some important apps (e.g. telephony, SMS, camera) For developing Android apps, we use the Android SDK With libraries and development tools Guideline and trainings here: http://developer.android.com/training 43

Android Runtime Android programs are run on the Dalvik Virtual Machine (replaced by Android Runtime (ART) in Android 5.0) Workflow of App Deployment 1. Write the app in Java 2. Compile the Java source code into Java bytecode files 3. Convert the Java bytecode files to a DEX bytecode file 4. Dalvik executes DEX bytecode file 44

Android Apps Android has many pre-defined UI components, based on the View class Input Controls Lists Dialogs Contextual Menu 45

Android App Development Each page in an Android is called an Activity Logic of the Activity Layout of the UI In the Java source code, we bind variables to UI elements, and then write codes to describe what actions to perform or how data are fetched from different sources, or how information is presented on the UI The layout of the UI is specified in an XML file, which describes: - The positions and layout method of the UI elements - The style of each element (e.g. width, height, font colour and size, etc.) - The unique name (ID) of each UI element 46

Android App Development An example XML file describing the layout of an activity <LinearLayout xmlns:"http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/edit_message" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" /> </LinearLayout> 47

Android App Development An example Java source code file of an activity public class Main Activity extends Activity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_display_message); } } EditText input = (EditText)findViewById(R.id.edit_message);... 48

Android App Development Android apps are mainly event driven Actions are performed when there is an event (e.g. the app is launched, a button is clicked, a check box is checked) You will implement specific functions or event handlers and attach these to UI elements An example: button.setonclicklistener(new Button.OnClickListener() { @Override public void onclick(view v) { Toast.maketext(getApplicationContext(), Hello!, Toast.LENGTH_SHORT).show(); } }); 49

Android App Life Cycle Android is intended to be run on mobile devices with limited power and computing resources Android takes care of the life cycle of an app (launch, suspend, resume, destroy) http://developer.android.com/training/basics/activity-lifecycle/starting.html 50

Android Development Environment 51

Android Development Environment Android Studio is the official tool for developing Android applications https://developer.android.com/studio/index.html 52

Android Studio Download Android Studio and get familiar with using it 53

Assignment 0 54

Android Development Basics What you will do in this assignment: 1. Learn the basic concepts and procedures in developing an Android application 2. Set up the Android development environment using the Android Studio 3. Create a simple Android app 4. Test your app on the emulator or on a physical device 5. Make some changes to the app by editing the source files 55

Android Development Basics Notes on Assignment 0 1. You should go through all the steps to set up the development environment (in your own computer if possible) 2. Seek help or look for solutions as early as possible 3. Your work should be submitted to the CUHK elearning system before the deadline (Friday 27 th Jan, 23:59) 56

Learning Resources Java Tutorial https://www.udemy.com/java-tutorial/ http://eclipsetutorial.sourceforge.net/totalbeginnerlessons.html Google Android Official Guide https://developer.android.com/training/ Sample Apps http://developer.android.com/samples/index.html Android Development Tutorial http://www.vogella.com/tutorials/android/article.html And use Google and Stack Overflow to find answers to your questions 57

Mobile App Ideas Android Experiments https://www.androidexperiments.com/ 58

Next Lecture: Android Programming 59

End of Lecture 1 60