Lectures Topic Slides Lab Reading/Snacks
08/28/19 Javascript Functional Programming
Part I
[PDF] Due Friday 08/30/19
Lab: Getting Setup
[Book- Chapters 1 & 2]
09/02/19 Javascript Object / Classes
Part II
[PDF] [Book- Chapters 3- 5]
09/04/19 Javascript Network Calls
Part III
[PDF] Due Friday 09/06/19
Lab: API & Objects.zip
09/09/19 Javascript Async / Await
Part IV
[PDF] [Book – Async]
09/11/19 Javascript Async / Promise
Part V
[PDF] Due Friday 09/13/19
Lab: Async Programs
09/16/19 Javascript Map Reduce
Part VI
09/18/19 Javascript Testing
Part VII
[PDF] Due Friday 09/20/19
Lab: Map & Jest
09/23/19 Layout CSS Deep Dive
[PDF] [CSS The Definitive Guide]
09/25/19 Layout CSS Deep Dive
[PDF] Due Friday 09/27/19
Lab: Layouts
09/30/19 Layout JSX Deep Dive
Part I
10/02/19 Layout JSX Deep Dive
Part II
[PDF] Due Friday 10/04/19
Lab: JSX elements
10/07/19 Reading Day 
10/09/19 Midterm Exam 
10/14/19 The Architecture of React Native Application [PDF]
10/16/19 Reactive Design Paradigm
Introduction to React
[PDF] Due  10/11/19
Lab: Native Setup
[Cat Facts]
10/21/19 Targeting Multiple Platforms
Introduction to React Native
And Expo
[PDF] [Demo APP 1 ]
[Demo Flex Box]
[Demo Splash Screen]
10/23/19 Component Architecture 
Scroll View & List Views
[PDF] Due  10/18/19
Lab: Project Part I
[Scroll View Snack]
[Animation Snack]
10/28/19 Component Architecture 
Expo Components
[PDF] [Map Snack]
[GPS location Snack]
10/30/19 Navigation Architectures 
Stack/ Draw Navigation 
  [PDF] Due  10/25/19
Lab: Project Part II
[Stack Navigation][Tab Navigator Snack]
[Tab Nav w/ Icons
[Styling Header Opt]
11/04/19 Authentication & Secure Storage Local Storage [PDF]
[Facebook Login ]
[Secure Storage]
11/06/19 Real-Time Databases 
  [PDF] Due  11/08/19
Lab: Project Part III
[Firebase Code Lab]
11/11/19 Real-Time Databases 
Schema Design
[PDF] [No More Confusion Firebase App Code]
11/13/19 Data Flow Architectures
Redux Part I
[PDF] Due  11/15/19
Lab: Project Part IV
[Redux I]
11/18/19 Data Flow Architectures
Redux Part II
[PDF] [Redux II (Draft)  ]
11/20/19 Pub/Sub Architecture
RealTime Analytics/Monitoring


Due  11/22/19
Lab: Project Part V
11/25/19 Animations in React-Native I [PDF]
11/27/19 Thanksgiving Break 
12/02/19 Animations in React-Native II
12/04/19 Pitch Day 1 Due Friday 12/06/19
Pitch Day 2
Extra Embedded Ecosystems
React Native BLE Library
[PDF] BLE Library
Extra Animations in React-Native III [PDF]
Final Exam

Office Hours

  • Professor Grahams’s office hours are in his office (Rice 411)
  • Mondays & Thursday 5-7pm

All professor office hours are open, meaning we will not close the door and have a private conversation during office hours. If you have sensitive matters to discuss, please email your professor to set up a separate time to visit about them.

Find Grades

This course has its own gradebook page where feedback on labs and homework can be found.
Quiz grades can be seen on the quiz page.

Grading Policy

Grading is one of the aspects of a course that instructors enjoy even less than students. Still, we are stuck with them, so here goes.

Portion of course Percentage of Final Grade
Labs 20%
Midterm 15%
Final Exam 30%
Final Project 35%

Your final grade is computed based on the percentage of points you have earned and is designed to match the GPA value of each letter.
For some reason, that is not a linear scale: for example, A-B+ = 0.4-grade points while B+B = 0.3 grade points.
For some even more obscure reason, the most common grading scale I have seen is also not linear but differently spaced than the grade points.

You get if you score Which is worth
A+ near the top 4.0
A ≥ 93% 4.0
A− ≥ 90% 3.7
B+ ≥ 86% 3.3
B ≥ 83% 3.0
B− ≥ 80% 2.7
C+ ≥ 76% 2.3
C ≥ 73% 2.0
C− ≥ 70% 1.7
D+ ≥ 66% 1.3
D ≥ 63% 1.0
D− ≥ 60% 0.7
F otherwise

We do not round grades. 92.99% is not ≥ 93% and is thus an A−, not an A.

We do not curve grades: if you all fail, you all fail; if you all ace, you all ace.
However, rubrics for assignments are not linear: instead, we determine how well we expect a passing student to perform and assign a per-assignment rubric to match.
This is common practice for homework in CS; it is less common for exams.
Our exams might feel unusually difficult as a consequence.

Late homework submissions will receive a 10% penalty up to 48 hours late, and a 15% penalty up to 72 hours late, and will not be accepted past that time.
Late quizzes will not be accepted, but approximately 10% of quiz scores (probably two quizzes) will be dropped.
Late labs will usually not be accepted.
Exams makeups will be handled case-by-case as needed.

Academic Honesty

We expect all homework and quizzes to be completed individually except for some homework which we explicitly allow to be done with partners. You may not share code or consult assignment solutions from previous semesters. You may not share quiz questions before the quiz deadline. You are encouraged, however, to discuss the assignments in general and provide advice to other students that does not amount to sharing code, pseudocode, or instructions that otherwise essentially solve the assignment. We may use automated tools to look for similarities between homework submissions that suggest an excessive collaboration.

Labs may be done collaboratively, including sharing code. Your lab submissions should indicate who you worked with.

Quizzes are open-book and open-notes. Exams are closed-book, closed-notes, and administered in-class time.

Your submissions for labs and homework should not make extensive use of code found online. Incidental use (utility code that does not solve a significant part of any of the objectives of the assignment) is okay, but must be clearly cited. If you are unsure whether something would qualify as “incidental”, please consult the course staff first.

If we believe you have created, we may apply an arbitrarily harsh grade penalty up to and including an F in the course.
This penalty is independent of (and potentially in addition to) any findings of the University Honor System.

Students with disabilities or learning needs

It is my goal to create a learning experience that is as accessible as possible. If you anticipate any issues related to the format, materials, or requirements of this course, please meet with me outside of class so we can explore potential options. Students with disabilities may also wish to work with the Student Disability Access Center to discuss a range of options to removing barriers in this course, including official accommodations. Please visit their website for information on this process and to apply for services online: sdac.studenthealth.virginia.edu. If you have already been approved for accommodations through SDAC, please send me your accommodation letter and meet with me so we can develop an implementation plan together

Discrimination and power-based 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 wish to report something that you have seen, you can do so at the Just Report It portalThe worst possible situation would be for you or your friend to remain silent when there are so many here willing and able to help.

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 Piazza private message as far in advance as possible. Students 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.

Deploying  & Testing[PDF]

Simple Android App[PDF][Github]

22Embedded Kernels[PDF]

Final Project Resources [FinalProjectDoc]  [Design Files]

This Git Repo Contains the code from the in-class coding exercises :[Git Repo]
Recommended Software:  Visual Studio Code (Mac, Windows, Linux)
Design Software: Sketch (Mac) | Lunacy (Windows)

Free EDU version of Sketch [link]

Great Resources: