\setcounter{numTAs}{0} \setcounter{totalSections}{1} \def\secNum{{"001",""}} \def\tenSchFileName{{"",""}} \def\classTime{{"M/W 1:55 pm to 3:10 pm",""}} \def\classRm{{"Drosdick 206",""}} \def\classLive{{"",""}} \def\classInstructor{{"Samir Talegaon",""}} \def\classInstrContact{{"https://www1.villanova.edu/university/engineering/academic-programs/departments/electrical-computer/directory.html",""}} \def\classInstrOffHrs{{"T/R 11:00 am to 1:00 pm",""}} \def\classInstrLive{{"",""}} \def\TA{{{""},{""}}} \def\TAEmail{{{""},{""}}} \def\TAOffHrs{{{""},{""}}} \def\TARoom{{{""},{""}}} \newcommand\semester{Fall 2025} \newcommand\rsemester{202620} \newcommand\courseNum{ECE 5901} \newcommand\courseName{TOP: Mobile App Development} \newcommand\courseCoordinator{Samir Talegaon} \newcommand\credits{3} \newcommand\contactHrs{3} \newcommand\lecture{1} \newcommand\lab{0} \newcommand\undergradCourse{1} \newcommand\isFreshmanCourse{0} \newcommand\isCustomElecPolicy{0} \newcommand\AIPolicyExists{1} \newcommand\isClassLive{0} \newcommand\isLabLive{0} \newcommand\meetingMiscExists{0} \newcommand\isClassInstrLive{0} \newcommand\isLabInstrLive{0} \newcommand\instrMiscExists{0} \newcommand\hasTARoom{0} \newcommand\meetingDesc{Two 75-minute lectures} \newcommand\meetingMisc{Special notes on meeting info go here, if specified} \newcommand\instructorMisc{Special notes on instructor(s), TA(s) go here, if specified} \newcommand\textBookExists{1} \newcommand\textBookReqd{0} \newcommand\textBookMiscExists{0} \newcommand\referencesExist{0} \newcommand\txtBkAuthExists{1} \newcommand\txtBkPublExists{1} \newcommand\txtBkYrExists{1} \newcommand\txtBkISBNExists{0} \newcommand\textBookTitle{Android Programming: The Big Nerd Ranch Guide 5th Edition} \newcommand\textBookAuth{Marsicano, Kristin} \newcommand\textBookPub{Pearson} \newcommand\textBookYr{2022} \newcommand\textBookISBN{} \newcommand\supplMaterials{\url{https://developer.android.com/reference/packages}; \url{https://cs.android.com/android/platform/superproject/main}} \newcommand\refPapers{References go here, if specified} \newcommand\textBookMisc{Special notes on textbook(s) go here, if specified} \newcommand\catalogDesc{Addresses a special topic in electrical and/or computer engineering of interest to faculty and students.} \newcommand\preReqs{None} \newcommand\coReqs{None} \newcommand\coreRequirement{N/A} \newcommand\courseExpectation{Upon successful completion of this lecture/lab course, students will: (a) Develop proficiency in Android development using Java and Android Studio. (b) Design and implement responsive, interactive user interfaces that follow best practices. (c) Apply architectural patterns (e.g., MVC) to build scalable and maintainable apps. (d) Collaborate in teams on project-based learning to design, develop, and refine real-world mobile applications.} \newcommand\ABETOutOneA{1} \newcommand\ABETOutOneB{1} \newcommand\ABETOutTwoA{0} \newcommand\ABETOutTwoB{0} \newcommand\ABETOutTwoC{0} \newcommand\ABETOutTwoD{0} \newcommand\ABETOutThree{0} \newcommand\ABETOutFourA{0} \newcommand\ABETOutFourB{0} \newcommand\ABETOutFourC{0} \newcommand\ABETOutFive{0} \newcommand\ABETOutSixA{0} \newcommand\ABETOutSixB{0} \newcommand\ABETOutSevenA{0} \newcommand\ABETOutSevenB{0} \newcommand\covTopics{\item Module 1: Getting Started - Android Studio, first app, activity lifecycle \item Module 2: Activities, Intents \& Fragments \item Module 3: User Interface (UI) \& navigation \item Module 4: Data Persistence - Room database (CRUD, DAOs, LiveData in Java) \item Module 5: Background Work \& Networking \item Module 6: Permissions, Localization and Accessibility, Multimedia, Maps and Location API \item Module 7: Final project - Design, development, testing, presentations, Misc. topics } \newcommand\isScheduleExternal{0} \newcommand\isScheduleCommon{1} \newcommand\scheduleRows{8} \newcommand\scheduleCols{2} \newcommand\scheduleHeight{1} \newcommand\schedule{\begin{table}[h!] \centering \caption*{Tentative Schedule for \textbf{All Sections}} \vspace{0.05in} {\renewcommand{\arraystretch}{1.5} \small \begin{tabularx}{\linewidth}{c|X} \toprule \large \textbf{Week} & \large \textbf{Topics}\\ \midrule \midrule 1 & Module 1: Getting Started - Android Studio, first app, activity lifecycle. \textit{Content}: Android studio introduction, project setup, emulator setup. First app - hello world (layout, resources, Java code) \\ 2 - 3 & Module 2: Activities, Intents and Fragments \textit{Content}: Activity lifecycle, explicit and implicit intents, passing data with bundles, Fragments and Fragment manager, mode-view-controller (MVC) design pattern\\ 4 - 6 & Module 3: User Interface (UI) and navigation \textit{Content}: RecyclerView with Adapter and ViewHolder, Toolbars, Menus, Dialogs. ViewPager2 and TabLayout \\ 7 - 8 & Module 4: Data Persistence - Room database (CRUD, DAOs, LiveData in Java) \textit{Content}: Shared preferences, Room database (DAO, entities, ViewModels, LiveData)\\ 8 - 10 & Module 5: Background Work and Networking \textit{Content}: Services and Broadcast receivers, WorkManager, Threads, REST API access with Retrofit\\ 11 - 12 & Module 6: Permissions, Localization and Accessibility, Multimedia, Maps and Location API \textit{Content}: Runtime permissions, Localization and accessibility, multimedia (Camera, Audio/Video), Maps and Location APIs\\ 13 - 15 & Module 7: Misc topics, Final project - Design, development, testing, presentations \textit{Content}: Misc topics not covered in earlier sessions, final project presentations. Project grading schemes will be published later.\\ \bottomrule \end{tabularx} } \end{table}} \newcommand\gradingPolicy{The course grade will be based on homework assignments (30\%), 4x quizzes (20\%), 4x mini projects (20\%) and a group final project (30\%). Homework assignments and mini projects are to be done individually. The final project is a group project with upto 3 students maximum per group. \\ \\ Letter grade scale: A(93--100), A--(90--92), B+(87--89), B(83--86), B--(80--82), C+(77--79),\\ C(73--76), C--(70--72), D+(67--69), D(63--66), D--(60--62), F(<60)} \newcommand\HWandLabPolicy{Biweekly homework assignments due at the end of the day specified. Mini projects are due at the end of the day specified. Late submissions (homeworks and mini-projects) will lose 10\% of the assigned points per each school day. No late submission will be accepted five school days after the due day. Since this course requires programming, 10\% of your submission grade (i.e. for all submissions) is based on comments. Comments are required for each block of code you write. They must describe the purpose of the code that you have submitted. AI generated code that is directly submitted with no modifications and no comments is prohibited and will result in a 0 on that assignment. Attribution is required, and if asked, you must be able to provide a thorough explanation of your submitted code. } \newcommand\AIPolicy{\textcolor{red}{ The use of AI-generated content is permitted as follows: (a) for generating a first draft or (b) for generating an outline or (c) for generating base code. However, do not submit AI generated code as your work. Attribution is required.\\ \\ Even if you have significantly edited AI-generated material, you must identify the AI tool used to assist in generating your work. You are required to provide the name of the tool, date used, and prompts used to generate the output. As you may be required to submit the original AI output, you must keep a copy of the original output and provide it when requested. If questions arise about the authorship of submitted work, you are responsible for authenticating your authorship. You should save evidence of your authorial process, such as drafts, notes, version histories, and complete transcripts of AI assistance. } \\ For more information see \href{https://www1.villanova.edu/content/dam/villanova/provost/teaching-learning/AI-Guidelines-July-2023.pdf}{\textcolor{blue}{Guidelines for Students Regarding Responsible Academic Use of AI-Generated Material}}} \newcommand\AttendancePolicy{Attendance is mandatory unless absence is excused.} \newcommand\ElectronicsPolicy{\textcolor{red}{ Since you opted for a customize electronics policy, you should edit this part. Your policy should address your general stance on recording of class sessions and the circumstances under which recording will be allowed or prohibited. If you generally prohibit recording, yet allow recording of certain classes for some reason, then you should notify all students that those classes will be recorded. If recording is permitted as an ADA accommodation for a student, you obviously should not identify that student(s). }}