CSCI 318: Mobile Apps and the Internet of Things

General Information

Professor: Simon D. Levy
Lecture: MWF 1:25 - 2:20 PM
Parmly 405
Office: Parmly 407B
  Office Hours: Daily 2:30-4:30 and by appointment

Course Objectives

By the end of the course you will be able to

  1. Design, develop, and deploy mobile apps on Android devices

  2. Build remote-sensing devices for the Internet Of Things
Our focus on concrete skills means that you should expect to spend a significant amount of time coding. If you're not coding a little each day, you're not going to do well in this course. For this reason, I will try to divide our class time evenly between lecture and hands-on coding exercises.

Although you will not need an Android device (phone, tablet) to complete the course, it is much more fun to work on such a device, instead of relying on the Android emulator. So if you want to do a final project with Android and do not have a device, I will provide one for you.


At this point in your CS career you probably realize that what matters most is the quality of the work (software) you create and the impression you make as a serious student and software professional. Hence:

  1. If your code produces a fatal error in Android Studio (or whatever environment we're using), you'll get a zero on the entire assignment.

  2. No late work will be accepted, or make-up exams given, without a note from the Dean's office.
The best way to avoid the “But the program worked when I ran it!” problem is to submit your code early to sakai , download it from sakai into an empty folder, and run it yourself.


These percentages are flexible. If you have a bad day and don't do well on an exam or assignment, I will try and weight your other work more heavily.

The grading scale will be 93-100 A; 90-92 A-; 87-89 B+; 83-86 B; 80-82 B-; 77-79 C+; 73-76 C; 70-72 C-; 67-69 D+; 63-66 D; 60-62 D-; below 60 F.

Honor System

The exams and quizzes will be done without books or notes and without assistance from other people. You can discuss your programming assignments with other students in the class, but you should not share code. Talk to me before asking another student for help!


Washington and Lee University makes reasonable academic accommodations for qualified students with disabilities. All undergraduate accommodations must be approved through the Office of the Dean of the College. Students requesting accommodations for this course should present an official accommodation letter within the first two weeks of the (fall or winter) term and schedule a meeting outside of class time to discuss accommodations. It is the student's responsibility to present this paperwork in a timely fashion and to follow up about accommodation arrangements. Accommodations for test-taking should be arranged with the professor at least a week before the date of the test or exam.

Programming assignments

Programming assignments should be submitted through your dropbox on Sakai. Each assignment is due 11:59 PM on the day posted.

The computers in the CS Department should all have Android Studio) installed, but I encourage you to download it onto your laptop or home computer and work on these assignments anywhere you like. Scheme is a simple, elegant language that encourages working on problems in small pieces, so it's convenient to have Dr. Racket available any time you get inspired to do a little coding. Experience has taught me that the students who do best in this course are the ones who start the assignments early and take advantage of office hours for help.

  1. Assignment 1 (due Monday 19 Sep)

  2. Assignment 2 (due Wednesday 28 Sep)

  3. Assignment 3 (due Wednesday 12 Oct)

  4. Assignment 4 (due Monday 24 Oct)

  5. Assignment 5 (due Friday 04 Nov)

  6. Assignment 6 (due Friday 18 Nov)

Tentative Schedule of Lectures and Exams





05 Sep
Week 0
    Course Overview;
Why Android?

12 Sep
Week 1
Intro to Android, continued Intro to Android, continued The Model-View-Controller Pattern;
Threading / Concurrency
Anonymous inner classes in Java

19 Sep Week 2
Reading: Nerd Ranch Chapters 1 & 2

Classroom exercise: Your first Android app

Due: Assignment 1

Guest lecture by Prof. Gavin Fox Reading: Nerd Ranch Chapters 1 & 2

Lecture Notes: XML Overview

26 Sep
Week 3
Reading: Nerd Ranch Chapters 3-5

Lecture Notes: XML, continued

Lecture Notes: Layouts and Widgets

Due: Assignment 2

Lecture Notes: Layouts and Widgets, continued

03 Oct
Week 4

Lecture Notes: The Android Activity Lifecycle

Activity Lifecycle, continued Activity Lifecycle, continued

10 Oct.
Week 5
In-class Exam #1 Review Exam #1

Lecture Notes: Multiple activities

Due: Assignment 3

Reading Day; No class

17 Oct
Week 6
Multiple activities, continued Fragments Fragments, conintued

24 Oct
Week 7
Android Lists (Chapter 9)

Due: Assignment 4

Lists, continued Android Dialogs (Chapter 12)

31 Oct
Week 8
Dialogs, continued Dialogs, continued

Due: Assignment 5

07 Nov
Week 9
In-class Exam #2 SQLite Databases SQLite Databases, continued

14 Nov
Week 10
Network Programming Network Programming, continued Due:Assignment 6

Due: Final project proposals

28 Nov
Week 11
Work on final project Work on final project Work on final project

05 Dec
Week 12
Work on final project Work on final project Work on final project

12 Dec
Finals week
Final project presentations Final project presentations Final project presentations