CS 185C/286 - Lecture 0

Cay S. Horstmann
CS 185C/286

- Introduction to mobile programming
- For green sheet, contact information, etc., see http://www.sjsu.edu/faculty/cay.horstmann
- Learn to program on mobile platforms
- Learn to architect applications with mobile and web components
- Learn good software engineering habits
Why Mobile?

- The desktop is sooo 1990s
- Who needs a desktop or laptop in 2013?
- Ok, you and me
- 99% of the population are content consumers, not content creators
- Mobile form factors (phone, tablet) are convenient and sufficient for them
Phases of Computing Technology

- Mainframes
- Minicomputers
- Workstations
- Personal computers
- Mobile
Crossing the Chasm

- New technologies replace existing ones in disruptive ways
- Initially, new technology is cheap but inferior
- Incumbents can't afford to compete in cheap market
- New technology improves and becomes good enough for most use cases
- Incumbents retreat to the profitable high-value end of the market
- New technology continues to improve and replaces incumbents
Topics

- Android programming
- iOS
- Server-side architecture
- Tablets
- HTML5
- Vendor presentations about other platforms and devices (Windows phone, BlackBerry, Samsung S-Pen)
Projects

- Group projects
- 4 people per group
- Theme: Cinequest applications
- Android, iPhone, tablets, HTML5 vs native
- Alternatives: Other platforms and devices
- If you have an idea, propose it
Graduate Students

- Must register for CS286
- Graduate option course in the “Specialty” area
- Do research on an assigned topic
- Write a paper
- Give a presentation
Active Learning

- No couch potatos!
- You read the book before class
- Exercises during lectures
- You need your laptop for every lecture
- In-class lab
- Lots of homework
- You only learn by doing
- You only learn if you do it yourself
Plagiarism

- When you submit work, it must be your intellectual creation
- Can you copy and paste?
- Ok if you attribute the source
- You can discuss your work with others
- You can post excerpts on a public discussion forum for critique
- Don't email code to your “friend”—you don't know what the recipient will do with it
- If I find plagiarism, I don't play Sherlock Holmes to find who wrote it—I report both
Your Responsibilities

- Come to every class meeting
- Do the assigned reading before class.
- Spend 9 hours per week for this class
- 2.5 hours in class
- 6.5 hours (!) for preparation, homework, and projects
- Ask questions right away when you are stuck
Homework

- Homework is due every Monday evening 6 pm
- You submit via git
- Grace period for uploading until 11:59 pm
- Don't rely on it—get it done by 6 pm
- No mercy after midnight
Lab

- Bring your laptop to the lab
- You will work with a buddy
- One of you writes code, the other types up answers
- Switch roles each lab
- Submit lab work to git
Questions

- You will be stuck
- It is really important to ask questions
- Ask questions on Piazza, the online discussion board
- You get points for asking questions
- You get points for answering questions
- Private or confidential questions—email or office hours
Textbooks

- Books are available through the university Safari subscription
- See the course page for links
- Read the textbook before each class meeting
- There will be a quiz at the beginning of class about the reading
- See the course page for reading assignments
- Reading for Tuesday: Programming Android Chapter 1
Prerequisites

- Competent in Java
- Competent in C (not C++), e.g.
strcpy
, fread
- Basic software engineering skills (build automation, revision control)
- Comfortable with Linux/Unix system and command-line tools
- If you are already registered, take the prerequisite quiz by next Monday
- If you don't, I will drop you from the class for lack of prerequisites.
Adding

- Take the prerequisite quiz
- Email to
Cay.Horstmann@sjsu.edu
- I will send you an add code when space becomes available.
- Use it within 24 hours, or it will become invalid
Preparing Your Laptop

- You need to be able to run Linux on your laptop
- Any version of Linux is fine, but if you don't already have one, use Lubuntu
- Ok to run in VirtualBox
- It's easy. Install VirtualBox. Download the Lubuntu ISO (32 bit). Install it.
- Install the guest additions
- Install the Oracle JDK, not OpenJDK from the Ubuntu repos.
Reading Before Next Class

- Programming Android Ch. 1
Things To Do Today

- Log into Piazza
- Upload a photo into your Piazza profile so I know who you are
- Do the prerequisite quiz and send it in
- Read chapter 1 of Programming Android
- Install the Android SDK on your laptop
Questions? Comments?
