1 of 36

ECS 189e: iOS and Android fundamentals (Fall ‘19)

Sam King

2 of 36

A little bit about me

Graduated from UCLA, Stanford, Michigan

Been a professor since ‘06, like teaching

Usually teach Systems, Security, Ethics

Usually don’t like lecturing, but...

3 of 36

Professor at UIUC from ‘06 - ‘14

  • Tenure in ‘12

  • Research on security and OS
    • Web browsers
    • Operating systems
    • Hardware
    • Deterministic record/replay

4 of 36

Started a company in ‘12, moved to California in ‘13

5 of 36

Started a company in ‘12, moved to California in ‘13

Davis High, class of ‘93

6 of 36

Company acquired by Twitter in ‘14, left UIUC

  • Wanted to push myself professionally and intellectually

  • Work on signup and login security, fake accounts

  • Code committing engineer

  • Led a small team

7 of 36

Head of Fraud and Identity @ Lyft ‘16 - ‘17

  • Also head of our enterprise engineering team

  • Still work on signup and login security, added fraud

  • Lots of other topics too

  • Lead a big team

8 of 36

Back in academia in ‘18 (Go Aggies!)

CS @ UCDavis!

Research interests, define the notion of a digital identity for the 21st century:

  • Computer security
  • Fraud and Identity
  • Fake accounts, account takeover

9 of 36

Started a company based on my research

An SDK to let your users scan credit cards in your app while cleanly stopping stolen cards.

10 of 36

Unique industry experience for an academic

  • Not in a research lab, responsible for real products

  • Experience with a tiny three person startup

  • Experience with a large public tech company

  • Experience with a mid-size startup, hypergrowth

11 of 36

Mobile experience

Mobile browser vendor at Adrenaline Mobility

  • Thought deeply about HTML5 mobile vs native apps (hint -- I’m teaching iOS / Android class not HTML5 mobile ;) )

Android at Twitter -- owned the password reset flow

iOS at Lyft -- first set of login challenges for improved security

iOS and Android -- Built v1 SDK for card scanning at Bouncer

Picked them up because I was interested in solving problems

12 of 36

Mobile phones are everywhere, and they’re all iOS and Android

13 of 36

Ushered in a new era of apps where the physical world meets software

14 of 36

Problem: writing apps is a lot harder than traditional software

  • Abstractions are more difficult to work with

  • Stronger security

  • Apps are distributed from the start

  • Once an app is out there, it is out there forever

15 of 36

ECS 189e Goals

Write moderately complex iOS apps, get exposed to Android

  • Work on open ended problems

Understand how things work behind the scenes

(Small) taste of what it’s like to deploy a real app

16 of 36

Types of mobile engineers I have worked with in industry

Work with and develop new APIs

Mobile platform architect

UI experience guru

17 of 36

This class: API and mobile platform architect

Work with and develop new APIs

Mobile platform architect

UI experience guru

18 of 36

Approach to the class

Lectures on Tuesday and Thursday

Quizzes in class on Thursdays

  • I may move this to the discussion section

Some discussions will be required, others will be optional, and we may cancel them

19 of 36

Fair warning: this class is going to be programming intensive and difficult

20 of 36

“Those who stay will be champions.”

21 of 36

Topics for this quarter

Most of the time will be on iOS, will cover Android at the end

  • Will probably need a Mac

Roughly equal parts:

  • iOS UI basics -- lots of lecture time with me in Xcode
  • Advanced topics & iOS low level abstractions, OS interactions -- concepts, slides, whiteboard
  • Android UI basics and low level abstractions (might cancel in favor of meeting with students during lecture, we’ll see)

22 of 36

Graded content: quizzes, homework, project

Weekly quizzes

Weekly(ish) homework for first several weeks

Project for the rest of the quarter

23 of 36

No midterm or final!!!

24 of 36

Weekly quizzes

Every Thursday you will get a quiz, based on content from the previous two lectures

Lots of conceptual questions, some pseudocode programming

One “free” quiz, which means that I’ll convert your lowest grade to full credit

  • Miss a Thursday lecture/discussion without penalty
  • Will raise your lowest grade if you attend all Thursday lectures/discussions
  • I will not accept doctors notes, personal issues, or other excuses this quarter

25 of 36

Homework: build a payments app

Each week will build on top of the past one

Login, create wallet, send cash, etc

Will cover UI design, using third party libraries, etc

26 of 36

Final project you will build an app (and hopefully submit it to the app store)

Group project, you pick whatever app you’re interested in

Experience with the full lifecycle from ideation to testing

I will come up with unique challenges for each group to work on

  • Using the app you’re interested in to push your mobile knowledge, crafted for each group

27 of 36

Want to get an A+? Ship an app!

We’ll go over the details when we introduce the project

28 of 36

We’ll use modern tools

Firebase, Trello, Github, Cocoapods, CardScan and more

29 of 36

Trying to connect 189E alumni with project groups for mentoring

30 of 36

Grade breakdown

31 of 36

Grade scale

32 of 36

General information

33 of 36

Meet Gary!

34 of 36

Do you need ECS 150 (undergrad OS)?

Yes. But I’m not going to enforce it

  • Topics you’ll need: threads and synchronization, networking, file systems

OS concepts will make up ⅓ of the class

You will struggle with 3 of the quizzes that will be heavily dependent on OS concepts

35 of 36

No space to add students from the waitlist

Limited by the size of the room

Be patient, I suspect many will drop due to the massive workload

10 day drop period for the class though

36 of 36

More information