Course Syllabus
Overview
This course will focus on building applications for Android. Android serves as a useful case study for the broader concerns involved in the design and implementation of modern applications. The concepts we cover in the course are broadly applicable to iOS, web applications, and other types of user-facing software systems.
The high-level goals and ideas we will cover include:
-
Managing state
-
Event-driven programming and inversion of control
-
Persistence and data management
-
Asynchrony and concurrency
-
UI representation and design
-
Reusability, modularity, and testability
-
Design patterns
-
Testing strategies for mobile applications
-
Client–server architectures and backend development
-
Cloud service integration
-
Interoperability and mixing programming languages in Android development
-
Integrating AI and machine learning capabilities into mobile applications
Throughout the course, we will often begin by solving problems using a naive or “obvious” approach, then iteratively refine those solutions using common design patterns and architectural techniques to avoid scalability, maintainability, and correctness pitfalls.
The course is designed around a big team project. Students will work in teams of three and will be evaluated multiple times throughout the semester. The project emphasizes building a complete, end-to-end system that integrates mobile, backend, and cloud components.
In addition, there will be several shorter assignments that apply course concepts in smaller, focused applications.
Learning Objectives
By the end of this course, students should be able to:
-
Build software using the fundamentals of mobile application development, including event-driven programming and the application lifecycle
-
Recognize and apply design patterns and tools specific to a mobile-app platform; on Android, for example, the Model–View–ViewModel (MVVM) pattern and the principles of Material Design
-
Design, implement, and test Android applications using appropriate tools and testing strategies
-
Build and integrate backend servers and cloud-based services to support mobile applications
-
Create applications that interact with local and external events and services, such as sensors, network APIs, and dynamic cloud storage
-
Incorporate AI and machine learning features into mobile applications where appropriate
-
Use and interoperate between multiple programming languages and technologies within an Android application
-
Work effectively in teams to deliver polished products despite vague or evolving client requirements
-
Continually extend an existing code and improve its implementation through high-level refactoring
-
Present designs and code clearly to both informed and uninformed audiences
Textbook
None required.
Schedule
The course meets Tuesday, Thursday, 12:25-1:45PM in HEB 2008 (https://map.utah.edu/index.html?code=HEB)
Course Staff
Instructor: Nabil Makarem
Email: nabil@cs.utah.edu
Office: MEB 3124
Office Hours: T/TH 11:00 AM - 12:00 PM
TAs:
- Logan Pu. Email: u1261116@utah.edu, Github user: Logan256.
Help hours (CADE Lab): TBD - Matthew Luerssen. Email: u1458845@umail.utah.edu, GitHub user: Leftie520.
Help hours (CADE Lab): TBD
Grade breakdown
Grades in this course will be determined by:
- 15% Midterm
- 15% Final
- 25% Individuals Assignments
- 40% Team Project
- 5% In-Class Practices
The letter grading policy is as follows:
| Score Range | Letter Grade |
| 94–100 | A |
| 90–93 | A− |
| 87–89 | B+ |
| 84–86 | B |
| 80–83 | B− |
| 77–79 | C+ |
| 74–76 | C |
| 70–73 | C− |
| 67–69 | D+ |
| 64–66 | D |
| 60–63 | D− |
| 0–59 | E |
I do, however, reserve the right to adjust this scale if need be.
Important Dates
The midterm exam will be in class on Tuesday, February 17, 2026 during the class meeting.
The final exam will be Monday, April 27, 10:30 AM – 12:30 PM as per the university schedule, in our regular classroom.
If you have conflicts with these exam times, reach out ASAP!
Late Policy
10% off per day late for the first 3 days. To submit after that, you'll need to meet with me, and we'll try to come up with a deadline by which you can earn 70% on the assignment.
Given that these are crazy times inside and outside the classroom, reach out to me if there are circumstances that prevent you from doing your best work and I'll try to make appropriate accommodations. The earlier you can let me know, the better.
Course Policies
KSoC policies, including academic misconduct policies can be found here: https://handbook.cs.utah.edu
COE policies can be found here: https://www.coe.utah.edu/students/current/semester-guidelines/
AI tools
At this point in your education, we expect that you're capable programmers, and want to give you the opportunity to use "real world tools." The use of Github copilot for "code completion" is allowed in this course IF THE FOLLOWING CONDITION IS MET. In any commit that has code written with the help of Copilot is, your commit message must contain a discussion of what code Copilot helped with.
If you use ChatGPT or similar tools, cite your usage like you would any other external resource.
The use of AI tools without following the above conditions is considered academic misconduct as you are present working which was not written by you as your own.
Mandatory Institutional Policies for Syllabi
Americans With Disabilities Act (ADA)
The University of Utah seeks to provide equal access to its programs, services, and activities for people with disabilities.
All written information in this course can be made available in an alternative format with prior notification to the Center for Disability & Access (CDA). CDA will work with you and the instructor to make arrangements for accommodations. Prior notice is appreciated. To read the full accommodations policy for the University of Utah, please see Section Q of the Instruction & Evaluation regulations.
In compliance with ADA requirements, some students may need to record course content. Any recordings of course content are for personal use only, should not be shared, and should never be made publicly available. In addition, recordings must be destroyed at the conclusion of the course.
If you will need accommodations in this class, or for more information about what support they provide, contact:
Center for Disability & Access
801-581-5020
disability.utah.edu
65 Student Services Building
201 S 1460 E
Salt Lake City, UT 84112
Safety at the U
The University of Utah values the safety of all campus community members. You will receive important emergency alerts and safety messages regarding campus safety via text message. For more safety information and to view available training resources, including helpful videos, visit safeu.utah.edu.
To report suspicious activity or to request a courtesy escort, contact:
Campus Police & Department of Public Safety
801-585-COPS (801-585-2677)
dps.utah.edu
1735 E. S. Campus Dr.
Salt Lake City, UT 84112
Addressing Sexual Misconduct
Title IX makes it clear that violence and harassment based on sex and gender (which includes sexual orientation and gender identity/expression) is a civil rights offense subject to the same kinds of accountability and the same kinds of support applied to offenses against other protected categories such as race, national origin, color, religion, age, status as a person with a disability, veteran’s status, or genetic information.
If you or someone you know has been harassed or assaulted, you are encouraged to report it to university officials:
Title IX Coordinator & Office of Equal Opportunity and Affirmative Action
801-581-8365
oeo.utah.edu
135 Park Building
201 Presidents' Cir.
Salt Lake City, UT 84112
Office of the Dean of Students
801-581-7066
deanofstudents.utah.edu
270 Union Building
200 S. Central Campus Dr.
Salt Lake City, UT 84112
To file a police report, contact:
Campus Police & Department of Public Safety
801-585-COPS (801-585-2677)
dps.utah.edu
1735 E. S. Campus Dr.
Salt Lake City, UT 84112
If you do not feel comfortable reporting to authorities, the U's Victim-Survivor Advocates provide free, confidential, and trauma-informed support services to students, faculty, and staff who have experienced interpersonal violence.
To privately explore options and resources available to you with an advocate, contact:
Center for Campus Wellness
801-581-7776
wellness.utah.edu
350 Student Services Building
201 S. 1460 E.
Salt Lake City, UT 84112
Academic Misconduct
It is expected that students comply with University of Utah policies regarding academic honesty, including but not limited to refraining from cheating, plagiarizing, misrepresenting one’s work, and/or inappropriately collaborating. This includes the use of generative artificial intelligence (AI) tools without citation, documentation, or authorization. Students are expected to adhere to the prescribed professional and ethical standards of the profession/discipline for which they are preparing. Any student who engages in academic dishonesty or who violates the professional and ethical standards for their profession/discipline may be subject to academic sanctions as per the University of Utah’s Student Code: Policy 6-410: Student Academic Performance, Academic Conduct, and Professional and Ethical Conduct.
Plagiarism and cheating are serious offenses and may be punished by failure on an individual assignment, and/or failure in the course. Academic misconduct, according to the University of Utah Student Code:
“...Includes, but is not limited to, cheating, misrepresenting one’s work, inappropriately collaborating, plagiarism, and fabrication or falsification of information…It also includes facilitating academic misconduct by intentionally helping or attempting to help another to commit an act of academic misconduct.”
For details on plagiarism and other important course conduct issues, see the U's Code of Student Rights and Responsibilities
Course Summary:
| Date | Details | Due |
|---|---|---|