CS 71: Software Engineering: Mobile Development
Spring 2013

Instructor: Adam Aviv
Office : Science 255
Office hours: Wed. 11-12PM and Fri. 11-12pm (and by appointment)

Lecture Room: Science 256
Time: Tue/Thur 2:30PM - 3:55PM

Lab Room: Science 256
Lab (A) Time: Fri. 1:00PM - 2:30PM
Lab (B) Time: Fri. 2:40PM - 4:10PM

Newsgroup: Piazza Newsgroup (by invitation)


Course Description

Welcome to CS71. This course is an upper level course on sofware engineering using Android and Java. CS71 is a project course, concluding with a large, independent project that demonstrates the software engineering and Android programming skills you have developed. The Android applications you develop will be uploaded to Android marketplace.

The first 9 weeks of the class will focus on foundational topics on Java and Android programming, and the remaining 5 weeks will focus on software engineering practices and the development of your Android application.

To enroll in this course you must have completed CPSC 21 and CPSC 35 or obtain permission from the instructor.

Course Goals

Explicit Goals Implicit Goals

Course textbook:

Course pre-requisites:


Grading Breakdown

Lab Policy

All assignments are due at the time and date specified on the lab write-up. Generally, labs are due Thursday night at 11:59pm Lab submissions is electronic via git branching, more details forthcoming. You may submit multiple times, but each submission overwrites the previous and only the final submission is graded. Unless otherwise stated, you should assume that the lab assignment is to be done individually, and all written assignments must be completed individually even if the programming portion is group oriented.

Late Policy

Each individual is allotted 2 late days for the semester, and a late day may be used for any reason -- illness, interviews, paper deadlines, etc.. Once your late days are used up, labs will not be accepted unless there is serious extenuating circumstances; the fact that you have a lot of other stuff due then is not an extenuating circumstance, sorry. You should budget your 2 late days to account for any future eventualities. Even if you do not fully complete a lab assignment you should submit for partial credit. You must notify the instructor at least 1 day prior to lab deadline (i.e., Thursday), and you will use the alternative handin43.late submission program. Late days may not be used for the project.

Lab Grading

Lab's are graded on a 10 point scale. There are two types of submissions: A functioning and non-functioning submission. In order to receive a grade of 9/10 or higher, your code must be functional. That is, your code must work as required in the lab write-up. Non-functional code may receive a grade no higher than 8/10 and you must complete a non-fuctioning document that describes the problems with your code in-detail and varied attempts you made to solve the problems with your code. Submission that are non-functioning and do not provide sufficient documentation will receive a grade no higher than 7/10. All lower grades are based on work accomplished and quality of the submission. Partial credit will be awarded for submission below the non-functioning threshold.

Participation/Attendance Policy

Attendance of lecture and lab is mandatory and worth 10% of your final grade. You're allowed 4 unexcused absences throughout the semester, all further absences will result in a 2 point deduction from your participation grade. Tardiness of more than 10 minutes will be considered 1/2 of an unexcused absences. If you cannot attend class or lab, you should speak with me, but generally, you should plan to use your allotted absences as best your can.

Academic Integrity

Bellow is the academic integrity statement generally used in CS courses, source: Ameet Soni

Academic honesty is required in all work you submit to be graded. With the exception of your lab partner on approved lab assignments, you may not submit work done with (or by) someone else, or examine or use work done by others to complete your own work. Your code should never be shared with anyone; you may not examine or use code belonging to someone else, nor may you let anyone else look at or make a copy of your code. This includes sharing solutions after the due date of the assignment.

All code you submit must be your own with the following permissible exceptions: code distributed in class, code found in the course text book, and code worked on with an assigned partner. In these cases, you should always include detailed comments that indicates on which parts of the assignment you received help, and what your sources were.

Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. You may discuss assignment specifications and requirements with others in the class to be sure you understand the problem. In addition, you are allowed to work with others to help learn the course material. However, with the exception of your lab partner, you may not work with others on your assignments in any capacity.

``It is the opinion of the faculty that for an intentional first offense, failure in the course is normally appropriate. Suspension for a semester or deprivation of the degree in that year may also be appropriate when warranted by the seriousness of the offense.'' - Swarthmore College Bulletin (2008-2009, Section 7.1.2)

Please see me if there are any questions about what is permissable

Academic Accommodations

If you believe that you need accommodations for a disability, please contact Leslie Hempling in the Office of Student Disability Services, located in Parrish 130, or e-mail lhempli1 to set up an appointment to discuss your needs and the process for requesting accommodations. Leslie Hempling is responsible for reviewing and approving disability-related accommodation requests and, as appropriate, she will issue students with documented disabilities an Accommodation Authorization Letter. Since accommodations may require early planning and are not retroactive, please contact her as soon as possible. For details about the Student Disabilities Service and the accomodations process, visit http://www.swarthmore.edu/student-life/academic-advising-and-support/student-disability-services.xml. You are also welcome to contact me privately to discuss your academic needs. However, all disability-related accommodations must be arranged through Leslie Hempling in the Office Of Student Disability Services. To receive an accommodation for a course activity, you must have an Accomodation Authorization letter from Leslie Hempling and you need to meet with me to work out the details of your accommodation at least two weeks prior to any activity requiring accomodations.

Class Schedule

This schedule is subject to change without notice, and all dates should be considered tentative.

Week Date Topics/Announcments Readings Lab
Unit 1: Java and Basic Android
1 Jan 22 Intro to CS71, Java and Eclipse Mednieks: Chpt. 2 Lab 1: RPN Calculator [ pdf ]
Lab Due: Feb 4 at 11:59 PM
Topic: Using Java Generics and Mastering Eclipse
Jan 24 Hello Java, Java Class, Exceptions
2 Jan 29 Hello Android and Resources Mednieks: Chpt. 3

No Lab this week, work on Lab 1
Jan 31 No Lecture
Unit 2: Android GUI Programming
3 Feb. 5
Hello Android and Resources (continued)

Android Documentation: Lab 2: Tic Tac Toe [ pdf ]
Topic: Debugging with LogCat
  • [ Log API ]
  • Eclipse LogCat View
    Mednieks Pg. 299-306
  • Debugging Using Log.d and LogCat
    Cookbook Pg. 122
Feb. 7 Buttons and OnClickListener()
4 Feb. 12
Input Controls and OnKeyListener()

Chapter 1.15 (Tipster) in Cookbook.
( Note, different layout is used than in class demonstration)

Chapter 7 in Cookbook: Graphical User Interface

Android Documenation:
Lab 3: Android RPN Calculator [ pdf ]
Topic: Effective Code Reuse
Quiz 1
Feb. 14 Layouts and LayoutParameters
Unit 3: Android Application Programming
5 Feb. 19
Application Life Cycle and Persistent Data

Lang Center Social Project Presentation
Mednieks: Chapt 10: Visualizing Life Cycles
Cookbook: Chpt 2.4: Keeping Data when the User Rotates the Device

Android Documentation:
Lab 4: CS71 Demo Application [ pdf ]
Topic: Launching Activities and Intents
Lang Center Social Project Presentation
  • Daniel Cho (1PM Lab Only)
    We Are Fargo [ info ]
Feb. 21

Application Life Cycle (continued)

6 Feb. 26 Android Manifest, Permissions and Services Lab 5: Android Covert Channels [ pdf ]
[ Soundcomber ]
Topic: Smartphone Security
Feb. 28 System Services
7 Mar. 5 Application Services TBA
Mar. 7 Development Time
Spring Break 5/11-5/15
8 Mar. 19 SQLite and Relational Databases TBA No Lab
Mar. 21 Android SQLite and Cursors
Design Document Due 3/22
9 Mar. 26 Socket Programming and HTTP TBA Quiz 2
Open Development Time
Mar. 28 Parsing HTML and Regular Expressions
Unit 4: Software Engineering Life Cycle
10 Apr. 2 Software Review and Comprehension Google Guides and Samples Milestone Meeting 1
Apr. 4 20 min. Student Presentations
Open Development Time
11 Apr. 9 Project Timeline Management
Gesture Builder Report Due
Mythical Man Month by Frederick P. Brooks
No Silver Bullet by Fredrick P. Brooks
Dreaming in Code Scott Rosenberg
Open Development Time
Apr. 11 20 min. Student Presentations
Open Development Time
12 Apr. 16 AGILE Development and eXtreme Programming
Paragraph Response Due
AGILE Software Development [wikipedia]
eXtreme Programming [wikipedia]
All I really needed to know about pair
progarmming I leanred in kindergarten
by Williams and Kessler
The perils of pair programming by Matt Stephesn
Milestone Meeting 2
Apr. 18 20 min. Studen Presentations
Open Development Time
13 Apr. 23 Unit Testing with JUnit
Paragraph Response Due
TBA Open Development Time
Apr. 25 20 min. Studen Presentations
Open Development Time
Project Due 4/26
14 Apr. 30 Project Presentations (1) TBA
May 2 Project Presentations (2)

Guides and Documentation Resources

Eclipse and Android in Science 256 Java/Android Programming