Mobile App Development
Sharif University of technologyYumcoder
CLASS VENUE
Saturday and Monday 16:30 to 18:00 (year: 2021)
channel: telegram
group: telegram
COURSE STAFF:
- Omid Jafarinezhad (instructor): Yumcoder, omid.jn@gmail.com
- Hamed Khanaki (Head TA): khanaki@ce.sharif.edu
- AmirHoseinRostami: AHReccese, amirhssin6rst@gmail.com
- Zahra Yousefi Jamarani: zahra.yousefi@student.sharif.edu
- Sajjad Rezvani: majidstic@yahoo.com
- Mahsa Sheikhi: mahsa.shk09@gmail.com
- Ali Pourghasemi: alipourghasemi78@gmail.com
SYLLABUS
This course covers the fundamentals of mobile app development:
- Android(java): Android Studio
- Flutter (Dart): build native Apps on iOS and Android from a single codebase, Android Studio
GRADING POLICY
According to the situation (covid-19), the grading policy will be as follows:
- 4 thematic programming exercises (20%): 1) application architecture, 2) Android, 3) iOS, and 4) Flutter app.
- Group project (15%): students will develop their own app. Projects are made up of small (2 or 3 people) teams and require strong collaboration. The goals of this activity are to help you develop the confidence, skills, and habits necessary to write real mobile apps while part of a team.
- Mid-term exam, open book: short and simple exam (10%)
- Final exam, open book: short and simple exam (15%)
- 2 issues (10%): solve issues from an open-source project, in addition to building confidence, will also help you to find a suitable job position in the future!
- 2 short articles (10%):
- class activities (1)
LECTURES (Android)
- Video 01: Link
- Reading: Java Concurrency (Race Conditions, Volatile, ThreadLocal, Deadlock, Locks, Thread Pools, Reentrance Lockout)
- Code lab 01: Build your first app (from Android Documentation) or Android Studio and Hello World (from Codelabs for Android Developer Fundamentals), Android slide 01 source code,
- Video 02: Link
- Code lab 02: Message.java, Looper.java, Handler.java, MessageQueue.java
- Video 03: Link
- Code lab 03: Telegram android source code
- Video 04: Link-part-1, Link-part-2
- Lecture 02: Android - User Interface (1), (pdf): Look and feel (Linear Layout, Relative Layout, Button, etc), Menus, Dialogs, Toasts
- Video 05: Link
- Video 06: Link
- Video 07: Link
- Lecture 03: Android activity, screen, and resources (pdf)
- Video 08: Link
- Video 09: Link, Advanced Android Textview slide (source code)
- Lecture 04: Android - User Interface (2), (pdf): Grid View, RecyclerView, Cards, Custom View, Android sample source code
- Video 10: Link
- Lecture 05: Android Services (Started and Bound), (pdf)
- Video 11: Link
- Lecture 06: Android storages, (pdf)
- Video 12: Link
- Video 13: Link
LECTURES (iOS)
- Lecture 01: swift programming language
- Video 01: Link
- Video 02: Link
- Video 03: Link
- Video 04: Link
- Video 05: Link
- Lecture 02: iOS App development
- Video 06: Link
- Video 07: Link
- Video 08: Link
LECTURES (Flutter)
- Video 01: Link
- Video 02: Link
- Video 03: Link
- Video 04: Link
- Video 05: -
ASSIGNMENTS and DEADLINE
4 thematic programming exercises (20%):
- application architecture exercise: homework 1 (#hw1_1400), request example, deadline: Thursday, March 11 (extended to March 13), 2021
- Android exercise: homework 2 (#hw2_1400), deadline: Tuesday, April 27, 2021
- Swift exercise: homework 3 (#hw3_1400), deadline: Tuesday, June 8, 2021
- Flutter exercise: date
Mid-term exam(30%):
- Mid-term exam: Saturday, May 29, 2021
- Mid-term article: recommended topics (but not limited to these), deadline: Saturday, May 15, 2021
- Mid-term resolve-issue: recommended projects (but not limited to these), deadline: Saturday, May 15, 2021
Final exam (35%):
- Final exam: date
- Final article: date
- Final resolve-issue: date
Group project (15%):
- Group project: date
POLICY FOR LATE ASSIGNMENTS
you should always meet your deadlines. Penalties:
< 8 hours: 10%;
< 24 hours: 20%;
< 48 hours: 40%;
more: no credit.
Our late policy seems a bit harsh at first but here's the reasoning. To balance this late policy I add this sweetner: you get two free 24 hour pass without penalties. These are atomic units -- you can't divide them up before you ask. Take it when you like but put a note in your README.txt file and email the TA