Difference between revisions of "MAP524/DPS924 Lecture 1"

From CDOT Wiki
Jump to: navigation, search
(Assignment expectations)
(Devices)
 
(9 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
= Course Overview =
 
= Course Overview =
  
 +
* Course outline is [https://scs.senecac.on.ca/course/map524 here].
 
* The course is a 50/50 split of lectures and labs. One lab isn't worth much but it's critical that you do all the labs, and do them on time. Not only will that get you 20% of your final grade but it's a sure way to make sure that you'll do well on the test, assignments, and the final exam.
 
* The course is a 50/50 split of lectures and labs. One lab isn't worth much but it's critical that you do all the labs, and do them on time. Not only will that get you 20% of your final grade but it's a sure way to make sure that you'll do well on the test, assignments, and the final exam.
 
* I will do my best to make sure this course isn't about your ability to memorize stuff, but rather it's about building real applications in a realistic way. That means you'll be able to bring your labbook (and a textbook if you have one) with you to the test and exam.
 
* I will do my best to make sure this course isn't about your ability to memorize stuff, but rather it's about building real applications in a realistic way. That means you'll be able to bring your labbook (and a textbook if you have one) with you to the test and exam.
 
+
* Speaking of textbooks - one is not required for this course. All the material you'll need is available for free on the web. I'll collect links to material and tutorials  I think are most relevant for each week into the notes for that week.
* Speaking of textbooks - there isn't one required for this course. All the material you'll need is available for free on the web. I'll collect links to material and tutorials  I think are most relevant for each week into the notes for that week.
 
  
 
== Professor's policies ==
 
== Professor's policies ==
Line 18: Line 18:
 
<li>You may use '''online''' resources to learn, including code examples from documentation and from forums, but all the code you use must have attribution, for example:</li>
 
<li>You may use '''online''' resources to learn, including code examples from documentation and from forums, but all the code you use must have attribution, for example:</li>
 
<ul>
 
<ul>
<li><pre>// Code copied from: http://bla.bla.bla/bla</pre></li>
+
<li><source lang="java">// Code copied from: http://bla.bla.bla/bla</source></li>
<li><pre>// Inspiration from: http://bla.bla.bla/bla</pre></li>
+
<li><source lang="java">// Inspiration from: http://bla.bla.bla/bla</source></li>
<li><pre>&lt;!-- Code in this XML file from a combination of sources:  
+
<li><source lang="xml"><!-- Code in this XML file from a combination of sources:  
 
http://bla.bla.bla/bla1
 
http://bla.bla.bla/bla1
 
http://bla.bla.bla/bla2
 
http://bla.bla.bla/bla2
http://bla.bla.bla/bla3 --></pre></li>
+
http://bla.bla.bla/bla3 --></source></li>
 
</ul>
 
</ul>
 
<li>Any code you submit that wasn't written by you or generated by the development tools must have correct attribution. If it doesn't - you'll end up with plagiarism on your record.</li>
 
<li>Any code you submit that wasn't written by you or generated by the development tools must have correct attribution. If it doesn't - you'll end up with plagiarism on your record.</li>
Line 39: Line 39:
 
* Labs need to be checked by me in person, I will sign your labbook if it looks good.
 
* Labs need to be checked by me in person, I will sign your labbook if it looks good.
 
* Don't email me files over a megabyte in size. In fact if you're using Seneca email don't bother trying to send attachments at all - use storage on matrix if you need a way to send me an assignemnt other than the final submission on Blackboard.
 
* Don't email me files over a megabyte in size. In fact if you're using Seneca email don't bother trying to send attachments at all - use storage on matrix if you need a way to send me an assignemnt other than the final submission on Blackboard.
 +
 +
= Android History =
 +
 +
* Android Inc. founded in 2003
 +
* Google acquired Android in 2005
 +
* [https://en.wikipedia.org/wiki/Open_Handset_Alliance Open Handset Alliance] formed in 2007
 +
* First Android smartphone was HTC Dream in 2008 (vs first iPhone in 2007)
 +
* [https://en.wikipedia.org/wiki/Google_Nexus Nexus series] launched in 2010
 +
 +
== Versions ==
 +
 +
<table style="text-align: left; width: 100%;" border="1"      cellpadding="2" cellspacing="2">        <tr>          <td style="vertical-align: top;" align="center">API<br>          </td>          <td style="vertical-align: top;" align="center">Version<br>          </td>          <td style="vertical-align: top;">Name<br>          </td>          <td style="vertical-align: top;">Date<br>          </td>        </tr>        <tr>          <td style="vertical-align: top; text-align: center;">1<br>          </td>          <td style="vertical-align: top; text-align: center;">1.0<br>          </td>          <td style="vertical-align: top;">APPLE PIE<br>          </td>          <td style="vertical-align: top;">Oct 2008<br>          </td>        </tr>        <tr>          <td style="vertical-align: top; text-align: center;">2<br>          </td>          <td style="vertical-align: top; text-align: center;">1.1<br>          </td>          <td style="vertical-align: top;">BANANA BREAD<br>          </td>          <td style="vertical-align: top;">Feb 2009<br>          </td>        </tr>        <tr>          <td style="vertical-align: top; text-align: center;">3<br>          </td>          <td style="vertical-align: top; text-align: center;">1.5<br>          </td>          <td style="vertical-align: top;">CUPCAKE<br>          </td>          <td style="vertical-align: top;">May 2009<br>          </td>        </tr>        <tr>          <td style="vertical-align: top; text-align: center;">4<br>          </td>          <td style="vertical-align: top; text-align: center;">1.6<br>          </td>          <td style="vertical-align: top;">DONUT<br>          </td>          <td style="vertical-align: top;">Sep 2009<br>          </td>        </tr>        <tr>          <td style="vertical-align: top; text-align: center;">5<br>          </td>          <td style="vertical-align: top; text-align: center;">2.0<br>          </td>          <td style="vertical-align: top;">ECLAIR<br>          </td>          <td style="vertical-align: top;">Nov 2009<br>          </td>        </tr>        <tr>          <td style="vertical-align: top; text-align: center;">6<br>          </td>          <td style="vertical-align: top; text-align: center;">2.0.1<br>          </td>          <td style="vertical-align: top;">ECLAIR<br>          </td>          <td style="vertical-align: top;">Dec 2009<br>          </td>        </tr>        <tr>          <td style="vertical-align: top; text-align: center;">7<br>          </td>          <td style="vertical-align: top; text-align: center;">2.1<br>          </td>          <td style="vertical-align: top;">ECLAIR<br>          </td>          <td style="vertical-align: top;">Jan 2010<br>          </td>        </tr>        <tr>          <td style="vertical-align: top; text-align: center;">8<br>          </td>          <td style="vertical-align: top; text-align: center;">2.2<br>          </td>          <td style="vertical-align: top;">FROYO<br>          </td>          <td style="vertical-align: top;">May 2010<br>          </td>        </tr>        <tr>          <td style="vertical-align: top; text-align: center;">9<br>          </td>          <td style="vertical-align: top; text-align: center;">2.3<br>          </td>          <td style="vertical-align: top;">GINGERBREAD<br>          </td>          <td style="vertical-align: top;">Dec 2010<br>          </td>        </tr>        <tr>          <td style="vertical-align: top; text-align: center;">10<br>          </td>          <td style="vertical-align: top; text-align: center;">2.3.3<br>          </td>          <td style="vertical-align: top;">GINGERBREAD<br>          </td>          <td style="vertical-align: top;">Feb 2011<br>          </td>        </tr>        <tr>          <td style="vertical-align: top; text-align: center;">10<br>          </td>          <td style="vertical-align: top; text-align: center;">2.3.4<br>          </td>          <td style="vertical-align: top;">GINGERBREAD<br>          </td>          <td style="vertical-align: top;">May 2011<br>          </td>        </tr>        <tr>          <td style="vertical-align: top; text-align: center;">11<br>          </td>          <td style="vertical-align: top; text-align: center;">3.0<br>          </td>          <td style="vertical-align: top;">HONEYCOMB - Tablet Only            Features<br>          </td>          <td style="vertical-align: top;">Feb 2011<br>          </td>        </tr>        <tr>          <td align="center" valign="top">12<br>          </td>          <td align="center" valign="top">3.1<br>          </td>          <td valign="top">HONEYCOMB<br>          </td>          <td valign="top">May 2011<br>          </td>        </tr>        <tr>          <td align="center" valign="top">13<br>          </td>          <td align="center" valign="top">3.2<br>          </td>          <td valign="top">HONEYCOMB<br>          </td>          <td valign="top">July 2011<br>          </td>        </tr>        <tr>          <td align="center" valign="top">14<br>          </td>          <td align="center" valign="top">4.0<br>          </td>          <td valign="top">ICE CREAM SANDWICH - Combined Phone and            Tablet Features<br>          </td>          <td valign="top">Oct 2011<br>          </td>        </tr>        <tr>          <td align="center" valign="top">15<br>          </td>          <td align="center" valign="top">4.0.3<br>          </td>          <td valign="top">ICE CREAM SANDWICH<br>          </td>          <td valign="top">Dec 2011<br>          </td>        </tr>        <tr>          <td align="center" valign="top">16<br>          </td>          <td align="center" valign="top">4.1<br>          </td>          <td valign="top">JELLY BEAN<br>          </td>          <td valign="top">July 2012<br>          </td>        </tr>        <tr>          <td align="center" valign="top">17<br>          </td>          <td align="center" valign="top">4.2<br>          </td>          <td valign="top">JELLY BEAN<br>          </td>          <td valign="top">Nov 2012<br>          </td>        </tr>        <tr>          <td align="center" valign="top">18<br>          </td>          <td align="center" valign="top">4.3<br>          </td>          <td valign="top">SWEETER JELLY BEAN<br>          </td>          <td valign="top">July 2013<br>          </td>        </tr>        <tr>          <td align="center" valign="top">19<br>          </td>          <td align="center" valign="top">4.4<br>          </td>          <td valign="top">KITKAT<br>          </td>          <td valign="top">Oct 2013<br>          </td>        </tr>        <tr>          <td align="center" valign="top">20<br>          </td>          <td align="center" valign="top">4.4<br>          </td>          <td valign="top">KITKAT with Wearable Extensions<br>          </td>          <td valign="top">July 2014<br>          </td>        </tr>        <tr>          <td align="center" valign="top">21<br>          </td>          <td align="center" valign="top">5.0<br>          </td>          <td valign="top">LOLLIPOP<br>          </td>          <td valign="top">Oct 2014<br>          </td>        </tr>
 +
<tr><td align="center" valign="top">22<br></td><td align="center" valign="top">5.1<br></td><td valign="top">LOLLIPOP<br></td><td valign="top">Mar 2015<br></td></tr>
 +
<tr><td align="center" valign="top">23<br></td><td align="center" valign="top">6.0<br></td><td valign="top">MARSHMALLOW<br></td><td valign="top">Oct 2015<br></td></tr>
 +
 +
</table>
 +
 +
* [https://en.wikipedia.org/wiki/Android_version_history Android version history on Wikipedia.]
 +
* [https://developer.android.com/about/dashboards/index.html?utm_source=suzunone#Platform Official version distribution data from Google.]
 +
 +
== Architecture ==
 +
 +
[[Image:System-architecture.jpg ]]
 +
 +
== Devices ==
 +
 +
* Phones
 +
* Tablets
 +
* e-Readers
 +
* Netbooks
 +
* Internet TV
 +
* Watches
 +
* Glasses
 +
* Cars
 +
* Game consoles
 +
 +
== Applications Stores ==
 +
 +
* [https://play.google.com/store/apps?hl=en Google Play] formally called Android Market
 +
* [https://f-droid.org/ F-Droid] Open Source Store for Android apps
 +
* [http://www.amazon.com/mobile-apps/b?node=2350149011 Amazon App Store]
 +
* [http://www.1mobile.com/ 1mobile] Alternative to Google Play
 +
 +
== Alternatives to Google's Android ==
 +
 +
* [https://source.android.com/ Android Open Source Project (AOSP)]
 +
* [http://www.cyanogenmod.org/ Cyanogenmod]
 +
* [https://www.tizen.org/ Tizen]
 +
* [http://www.ubuntu.com/phone Ubuntu for Mobile]
 +
* [https://www.mozilla.org/en-US/firefox/os/ Firefox OS]
 +
* [http://jolla.com/ Jolla]
 +
 +
== Android Market Share ==
 +
 +
[http://www.idc.com/prodserv/smartphone-os-market-share.jsp Current data]
 +
 +
= Our Development Environment =
 +
 +
The primary Android application devlopment tools can be set up on any operating system, you are free to use whatever operating system you like, but I'll recommend using the [[ICT_USB_Sticks | ICT USB Stick]] or having your own Linux installation on your own laptop.
 +
 +
That will give you a consistent development environment that will be troule-free, especially compared to using our lab windows images.
 +
 +
If you choose to host your work on Windows or OSX I'll do my best to help when problems happen but it may take longer to figure out what's wrong.
 +
 +
'Before the lab this week' make sure that you purchase a 32GB USB3 memory stick and [[ICT_USB_Sticks | install the image]] on it. Desktops in our lab doesn't have internal harddrives so you'll need to do that in the open lab or on a laptop or at home.

Latest revision as of 22:38, 10 January 2016

Welcome to the course! Android programming is a complex topic with so much material that changes so often that the learning never ends. But in this course you'll learn enough to start you on your way to becoming an expert if that's your plan, or just enough to be able to create an application if that's all you need.

Your professor this semester is Andrew Smith.

Course Overview

  • Course outline is here.
  • The course is a 50/50 split of lectures and labs. One lab isn't worth much but it's critical that you do all the labs, and do them on time. Not only will that get you 20% of your final grade but it's a sure way to make sure that you'll do well on the test, assignments, and the final exam.
  • I will do my best to make sure this course isn't about your ability to memorize stuff, but rather it's about building real applications in a realistic way. That means you'll be able to bring your labbook (and a textbook if you have one) with you to the test and exam.
  • Speaking of textbooks - one is not required for this course. All the material you'll need is available for free on the web. I'll collect links to material and tutorials I think are most relevant for each week into the notes for that week.

Professor's policies

  • The best way to contact me is via email. Most questions can be answered that way and I'm reasonably good at replying to reasonable emails. If the question is too complex for email - we can work on your prolem in the lab or you can come see me during office hours.
  • Plagiarism will not be tolerated.
    • You may use online resources to learn, including code examples from documentation and from forums, but all the code you use must have attribution, for example:
      • // Code copied from: http://bla.bla.bla/bla
      • // Inspiration from: http://bla.bla.bla/bla
      • <!-- Code in this XML file from a combination of sources: 
        http://bla.bla.bla/bla1
        http://bla.bla.bla/bla2
        http://bla.bla.bla/bla3 -->
    • Any code you submit that wasn't written by you or generated by the development tools must have correct attribution. If it doesn't - you'll end up with plagiarism on your record.
    • Working with your classmates
  • Late work will be penalized as specified in the assignment/lab.

Assignment expectations

Other than the notes on plagiarism above (use whatever online resources you find but always provide attribution) you should also:

  • Follow the instructions for naming files and projects.
  • Submit assignments on Blackboard.
  • Labs need to be checked by me in person, I will sign your labbook if it looks good.
  • Don't email me files over a megabyte in size. In fact if you're using Seneca email don't bother trying to send attachments at all - use storage on matrix if you need a way to send me an assignemnt other than the final submission on Blackboard.

Android History

  • Android Inc. founded in 2003
  • Google acquired Android in 2005
  • Open Handset Alliance formed in 2007
  • First Android smartphone was HTC Dream in 2008 (vs first iPhone in 2007)
  • Nexus series launched in 2010

Versions

API
Version
Name
Date
1
1.0
APPLE PIE
Oct 2008
2
1.1
BANANA BREAD
Feb 2009
3
1.5
CUPCAKE
May 2009
4
1.6
DONUT
Sep 2009
5
2.0
ECLAIR
Nov 2009
6
2.0.1
ECLAIR
Dec 2009
7
2.1
ECLAIR
Jan 2010
8
2.2
FROYO
May 2010
9
2.3
GINGERBREAD
Dec 2010
10
2.3.3
GINGERBREAD
Feb 2011
10
2.3.4
GINGERBREAD
May 2011
11
3.0
HONEYCOMB - Tablet Only Features
Feb 2011
12
3.1
HONEYCOMB
May 2011
13
3.2
HONEYCOMB
July 2011
14
4.0
ICE CREAM SANDWICH - Combined Phone and Tablet Features
Oct 2011
15
4.0.3
ICE CREAM SANDWICH
Dec 2011
16
4.1
JELLY BEAN
July 2012
17
4.2
JELLY BEAN
Nov 2012
18
4.3
SWEETER JELLY BEAN
July 2013
19
4.4
KITKAT
Oct 2013
20
4.4
KITKAT with Wearable Extensions
July 2014
21
5.0
LOLLIPOP
Oct 2014
22
5.1
LOLLIPOP
Mar 2015
23
6.0
MARSHMALLOW
Oct 2015

Architecture

System-architecture.jpg

Devices

  • Phones
  • Tablets
  • e-Readers
  • Netbooks
  • Internet TV
  • Watches
  • Glasses
  • Cars
  • Game consoles

Applications Stores

Alternatives to Google's Android

Android Market Share

Current data

Our Development Environment

The primary Android application devlopment tools can be set up on any operating system, you are free to use whatever operating system you like, but I'll recommend using the ICT USB Stick or having your own Linux installation on your own laptop.

That will give you a consistent development environment that will be troule-free, especially compared to using our lab windows images.

If you choose to host your work on Windows or OSX I'll do my best to help when problems happen but it may take longer to figure out what's wrong.

'Before the lab this week' make sure that you purchase a 32GB USB3 memory stick and install the image on it. Desktops in our lab doesn't have internal harddrives so you'll need to do that in the open lab or on a laptop or at home.