CS 4720 - Fall 2018 Syllabus

Basic Info

Fall 2018 Semester


Mondays, Wednesdays, and Fridays, 1:00-1:50 PM w/ Prof. Mark Sherriff - OLS 005

Staff Information

Instructor: Prof. Mark Sherriff
Office: Rice 401
Office Hours: Tuesdays and Wednesdays, 9:30-11:00 AM
Email: sherriff@virginia.edu
GitHub: https://github.com/marksherriff

Teaching Assistants: Sherry Chan, Karan Dhillon, Drew Lytle, Mark Manahan, Bryant Murphy, Genevieve Schmitt

Message boards: Piazza @ https://piazza.com/class/jktx08mbmf316j
Login to Piazza and use the threads for quick questions, assignments, and for discussion with other students and staff. You can also post private messages here that will only be seen by staff members. This includes regrade requests for homework assignments.

Office Hours

All office hour times are posted on the course calendar at the bottom of the Schedule page on the course website. TA office hours are typically held in Rice 340, although some may be in OLS 018. Please check the calendar for specifics. If office hours have to change for TAs, the room might also change. If you can't find the TA in one room, head to the other. Professor office hours are held in Rice 401. Note that we will update this calendar for any and all office hour changes due to the changing needs of the course. Students should refer to this calendar before going to any office hours.

Primary Text

There is no primary text for this course. All required materials will be available online.

Course Description

Mobile computing devices have become ubiquitous in our communities. In this course, we focus on the creation of mobile solutions for various modern platforms, including major mobile operating systems. Topics include mobile device architecture, programming languages, software engineering, user interface design, and app distribution. Prerequisite: CS 2150 with a grade of C- or higher. (from SIS)

Course Topics:
The topics to be covered in the course include:

  • Client Hardware (Desktop vs. Mobile)
  • Android Development w/ Java
  • iOS Development w/ Swift
  • RESTful and Non-RESTful apps
  • Creating and Incorporating Web/Cloud Services
  • Mobile Sensors
  • Security and Trust Management
  • Privacy and Ethics
  • Usability and Accessibility

Course Requirements

You should meet the following requirements to take this class:

  1. Prerequisite: CS 2150 with a grade of C- or higher. Students that do not meet this prerequisite may be dropped at any point from the class. It is the student's responsibility to check this prerequisite and/or speak with the instructor ASAP. We’ll assume you have mastered the material in the courses leading up to CS 2150 also, which includes software developments skills in Java and C++.
  2. Can attend class regularly
  3. You will be expected to learn programming languages and platforms on your own in this class! If you don’t feel comfortable with this, please talk to Prof. Sherriff as soon as possible!


Android Milestone - 3%
Android Mini App - 11%
iOS Milestone - 3%
iOS Mini App - 11%
Project Proposal - 3%
Core Skills Project - 11%
Final Project Milestone - 3%
Final Course Project - 20%
Midterm Exam - 15%
Final Exam - 15%
Class Activities and Participation - 5%
Participation/Professionalism Penalty - up to -100% - Excessive missed classes, rude behavior toward instructor or classmates, not participating fully with your partner, any issues related to copying/sharing code or other assessment information, etc. can be held against a student when final grades are calculated at the discretion of the instructor.

Your final grade will be calculated as follows:

Letter Max Min
A+ 100 98.000
A 97.999 93.000
A- 92.999 90.000
B+ 89.999 87.000
B 86.999 83.000
B- 82.999 80.000
C+ 79.999 77.000
C 76.999 73.000
C- 72.999 70.000
D+ 69.999 67.000
D 66.999 63.000
D- 62.999 60.000
F 59.999 0

Rounding: By default, grades will not be rounded in this course.
Pass/Fail: A course average of 65.00 or higher with a completed final mobile project is required for successful completion.

Class Management


  • I have an "open door" policy, in that if my door is open (or cracked), by all means stop on in and say hi or ask a question. If my door is closed, then I'm heads down on some task, on the phone, in a meeting, etc. It's always a good idea to email me before coming to make sure I'm here.
  • I can’t stress enough that email is the best way to get in touch with me.
  • If you email me, please put 4720 somewhere in the subject. Failure to do so makes it much harder to keep up with your email and reduces the chance of a timely reply.
  • Please don’t hesitate to contact me if you have any problems, concerns, questions, or issues regarding the course, material, or anything else in the class.

Project Groups

The projects to be undertaken are group projects. Details of the groups are:

  • Normal group size is two. Individuals may be able to work by themselves with good reason. Expectations will not be adjusted due to smaller group size. Groups of three are strongly discouraged, but can be allowed under extreme circumstances. Expectations for groups of three are higher than those for groups of two.
  • You may have different groups for the different projects.
  • In general, all group members will receive the same grade for graded assignments. However, group members will evaluate their peers and any student who appears to not be contributing may be penalized.
  • Each group will be responsible for assigning tasks to its group members.

You are expected to work as a member of your group in this course and cooperate with your colleagues. Cooperation means attending group meetings, completing your assignments properly and on time, letting your group know if you will be out of town, responding to e-mail from your group, and so on. If there is a lack of cooperation by any group member, it must be brought to the attention of the instructor as soon as it happens. If the lack of cooperation is serious, the offending group member’s semester grade will be lowered.

Academic Honor

  • In general, we expect that you will be using code, examples, and ideas from many different websites and resources for your projects. This is allowed within reason. Wholesale copying of an entire project or any major feature from any source (the web, another student, etc.) is definitely not allowed. Using code snippts that you find to round out a feature is allowed. If you ever have a question about what is or is not appropriate, ask first!
  • In ALL cases, you need to cite all sources at the top of the file where the code or algorithm was used AND you should note all sources in your documentation.
  • Failure to properly attribute your sources will result in a 0 for the project at a minimum.

How to Cite Code

Use the following format for citing code you use. Order by title of the software package. Use the appropriate commenting format for the programming language of your source code.

*  Title: <title of program/source code>
*  Author: <author(s) names>
*  Date: <date>
*  Code version: <code version> (if appropriate)
*  Availability: <where it's located>
*  Title: ....

Resources / Hardware

Android Development: Nexus 7 devices are available for students to check out for development. Students are welcome to use their own Android devices if they like. Due to device limiations, we strongly suggest students avoid creating apps that lean heavily on phone-only features, such as calling or SMS. Android code should be developed in Android Studio in Windows or macOS.

iOS Development: iPod Touch devices are availalbe for students to check out for development. Students are welcome to use their own iOS devices if they like. Due to device limiations, we strongly suggest students avoid creating apps that lean heavily on phone-only features, such as calling or SMS. iOS code should be developed primarily using Swift in Xcode. Students that do not have a Mac computer can check out a Mac Mini from the department. See the instructor for more information. You can also use cloud services such as http://www.macincloud.com/ at your own cost.


  • Attendance in lecture is vital to learning the material and making a good grade in this class.
  • There will be specific, announced class days in which attendance will be taken. These are mainly for guest speakers and in-class activities. These activities cannot be made up if you miss them, regardless of the reason.
  • Students can miss one required attendance day with no penalty. The second miss incurs a small penalty, with the penalty size increasing with each missed required class.
  • The required classes will be noted on the course schedule calendar.

Homework Assignments / Exams

  • Homework assignments will not be handed out in class. Everything will be available online at http://cs4720.cs.virginia.edu.
  • Partners/groups/teams may not collaborate with any other set of partners/groups/teams unless specified as part of the assignment.
  • There will be one midterm and a final exam during the course of the semester.
  • The midterm exam will be given in class. The final exam can either be taken orally or as a take-home.
  • Any test that is missed due to any absence that is not a University Excused Absence will result in a zero (0) for that grade.
  • Any test that is missed due to a University Excused Absence or due to circumstances that are approved by the instructor beforehand must be made up within a week of the missed test.

Grading Concerns and Appeals

  • All grading appeals must be submitted as a private post on Piazza, tagged with the regrade folder option.
  • All regrade requests must be made within one week of the assignment being returned to the student. After that point, no regrades will be considered.
  • We will regrade serious errors in judgement; we will not regrade partial credit judgement calls.
  • When regrading, we reserve the right to regrade the entire exam or assignment, which may result in either an increase or a decrease in your grade. We are not trying to scare off students whose exams or assignments were graded incorrectly, but we are trying to avoid frivolous requests.
  • What should be regraded?
    1. Your answer is the same as what is on the key, but the grader didn’t realize it.
    2. Your answer is different, but is also correct (code that compiles and runs correctly, but is different than the key).
  • What should not be regraded?
    1. “Most of what I wrote is correct, so I think I deserve more partial credit.”
    2. “I wrote so much, and the grader didn’t notice that the correct answer is buried somewhere within this long paragraph.”
    3. “I’m just 1 point away from an A, so I thought it was worth scrounging around to find an extra point somewhere.”
  • The regrade procedure is intended to correct serious errors in grading. It is not intended as a opportunity to argue about each judgment call made by the graders. We agree that graders sometimes take off 1-2 points too many here and there, but we believe that they also give you 1-2 points too many just as often. When we regrade exams, we sometimes disagree with the exact points awarded on each question by the graders, but the total grade usually comes out the same.
  • However, significant mistakes in grading do occur. If you sincerely feel that your exam or assignment was unfairly graded, we will look it over carefully.

This Syllabus

This syllabus is to be considered a reference document that can and will be adjusted through the course of the semester to address changing needs. This syllabus can be changed at any time without notification. It is up to the student to monitor this page for any changes. Final authority on any decision in this course rests with the professor, not with this document.


In this course, there will be a focus on working well together and learning about the development process. A large portion of that process involves interpersonal skills and conflict management. Students and staff are all expected to treat each other with respect. This includes, but certainly is not limited to:

  • Excessive web browsing during class
  • Disrespectful language
  • Promptness for all deadlines and class meetings
  • Quality work
  • Not working well with your partner
  • Collaborating with other teams

The number one problem with professionalism in class is the overuse of laptops and mobile devices. Taking notes on a laptop and following along with the slides is welcome and encouraged. Doing work for other classes, watching videos, chatting, or anything else that distracts from your ability to learn and follow along (or anyone around you), will result in a professionalism penalty.

If you need to do work for another class during our class meeting, do so somewhere else and listen to the podcast, rather than disrupt the class itself.

Students can and will be penalized for unprofessional behavior.


Your class work might be used for research purposes. For example, we may use anonymized student assignments to design algorithms or build tools to help programmers. Any student who wishes to opt out can contact the instructor or TA to do so after final grades have been issued. This has no impact on your grade in any manner.

Academic Integrity

The School of Engineering and Applied Science relies upon and cherishes its community of trust. We firmly endorse, uphold, and embrace the University’s Honor principle that students will not lie, cheat, or steal, nor shall they tolerate those who do. We recognize that even one honor infraction can destroy an exemplary reputation that has taken years to build. Acting in a manner consistent with the principles of honor will benefit every member of the community both while enrolled in the Engineering School and in the future.

Students are expected to be familiar with the university honor code, including the section on academic fraud http://honor.virginia.edu/academic-fraud. Each assignment will describe allowed collaborations, and deviations from these will be considered Honor violations. If you have questions on what is allowable, ask! Unless otherwise noted, exams and individual assignments will be considered pledged that you have neither given nor received help. (Among other things, this means that you are not allowed to describe problems on an exam, assignment, or project to a student who has not taken it yet. You are not allowed to show exam papers to another student or view another student’s exam papers while working on an exam.) Sending, receiving, or otherwise copying or describing the contents of electronic files that are part of course assignments are not allowed collaborations (except for those explicitly allowed in assignment instructions).

Assignments or exams where honor infractions or prohibited collaborations occur will receive a zero grade for that entire assignment or exam. Such infractions will also be submitted to the Honor Committee if that is appropriate. Students who have had prohibited collaborations may not be allowed to work with partners on remaining homeworks.

SDAC and Other Special Circumstances

The University of Virginia strives to provide accessibility to all students. If you require an accommodation to fully access this course, please contact the Student Disability Access Center (SDAC) at 434-243-5180 or sdac@virginia.edu. If you are unsure if you require an accommodation, or to learn more about their services, you may contact the SDAC at the number above or by visiting their website at http://studenthealth.virginia.edu/student-disability-access-center/faculty-staff.

If you have been identified as an SDAC student, please let the SDAC know you are taking this class. We happily and discretely provide the recommended accommodations for those students identified by the SDAC. Please contact us one week before an exam so we can make accommodations.

If you have other special circumstances (athletics, other university-related activities, etc.), please contact the instructor as soon as you know these may affect you in class.

Religious Accommodations

It is the University's long-standing policy and practice to reasonably accommodate students so that they do not experience an adverse academic consequence when sincerely held religious beliefs or observances conflict with academic requirements. Students who wish to request academic accommodation for a religious observance should submit their request in writing directly to me by email as far in advance as possible. Students and instructors who have questions or concerns about academic accommodations for religious observance or religious beliefs may contact the University’s Office for Equal Opportunity and Civil Rights (EOCR) at UVAEOCR@virginia.edu or 434-924-3200.

Accommodations do not relieve you of the responsibility for completion of any part of the coursework missed as the result of a religious observance.

Statement on Violence

The University of Virginia is dedicated to providing a safe and equitable learning environment for all students. To that end, it is vital that you know two values that I and the University hold as critically important:

  1. Power-based personal violence will not be tolerated.
  2. Everyone has a responsibility to do their part to maintain a safe community on Grounds.

If you or someone you know has been affected by power-based personal violence, more information can be found on the UVA Sexual Violence website that describes reporting options and resources available - www.virginia.edu/sexualviolence.

As your professor and as a person, know that I care about you and your well-being and stand ready to provide support and resources as I can. As a faculty member, I am a responsible employee, which means that I am required by University policy and federal law to report what you tell me to the University's Title IX Coordinator. The Title IX Coordinator's job is to ensure that the reporting student receives the resources and support that they need, while also reviewing the information presented to determine whether further action is necessary to ensure survivor safety and the safety of the University community. If you would rather keep this information confidential, there are Confidential Employees you can talk to on Grounds (See http://www.virginia.edu/justreportit/confidential_resources.pdf). The worst possible situation would be for you or your friend to remain silent when there are so many here willing and able to help.

Frequently Asked Questions

Q: How do I get off the waitlist?
A: Here is how we are going to pull people (or not pull people) off the wait list:

  • 4th year students (i.e. will graduate spring 2019), have the highest priority (assuming they did not add to the waitlist within the last few days/weeks).
  • I anticipate a few more 3rd years will get into the class, but I make no promises.
  • If you are not a declared BSCS major, BACS major, CPE major, or CS minor, you have lower odds at getting into the course.
  • After this, the wait list ordering comes into play and we will follow the order that appears in the SIS wait list.
  • No course action forms will be signed.

If you have a special case you think I need to know about, email me directly. Only exceptional circumstances will be considered.

Q: Why is there no textbook?
A: Technology regarding mobile development changes so rapidly I find it easier and more useful to have you read current articles as opposed to a text book.

Q: Can we pick our own teams?
A: Yes, but I reserve the right to veto team membership if I think it's necessary. (This rarely happens.)

more ...