## CODEPATH*ORG - iOS Course Syllabus(10-Week) Beginning Feburary, 1 2021 - [Course Descrption](#heading-course-description) - [Prerequisites](#heading-prerequisites-and-eligibility) - [Time Commitment](#heading-time-commitment) - [Attendance and Coursework Grading](#heading-attendance-and-coursework-submissions) - [Reporting](#heading-reporting) - [Student Privacy](#heading-student-privacy) - [Course Overview](#heading-coursework-overview) - [Course Structure](#heading-course-structure) - [Assignments](#heading-assignments) - [Labs](#heading-labs) - [Group Projects](#heading-group-project-app-milestones) - [Curriculum Breakdown](#heading-curriculum-breakdown) - [Topic Breakdown](#heading-topic-breakdown) - [Support Channels](#heading-support-channels) ### Course Description This course is a 10-week long project-based exploration into iOS mobile app development focusing on the design and implementation of RESTful API clients. Classes meet virtually twice a week for lab and working sessions. In the first half of the course, students develop skills by completing coding labs and building three fully functional app assignment projects. In the second half of the course students will apply their skills--working together in small teams--to design and and build an original app from the ground up. The course culminates in a Demo Day event where teams will present their finished apps in a live demo. ### Prerequisites and eligibility Students should... - have sufficient access to a Mac computer in order to complete coursework - have completed an intro to object oriented programming course **or** have existing familiarity - be pursuing a course of study related to computer science or software - complete the pre-work task - should be currently enrolled in the same college or university selected in their application ### Device Requirements - You must have access to a Mac computer (with the latest Mac OS installed) that can download and run [XCode 12](https://developer.apple.com/download/). ### Time Commitment - **Live session attendance:** Sessions meet twice per week for 1-1.5 hours. Both the sessions will be identical and you can choose to attend one per week. Timings will be decided later based on a poll. The poll will be sent out to all the students enrolled. - **Outside of class time:** Student's should plan to spend 4-5 hours outside of class working on weekly assignments and their final group project. ### Attendance and Coursework Submissions CodePath courses focus on developing student's habits and skills in order to to be successful in the tech industry. Success in industry goes beyond proficiency in technical domains; The ability to be punctual, meet project deadlines and work effectively in a collaborative team are equally important skills. The following policies around attendance and coursework submissions are meant to encourage professional behavior. #### Coursework Weighting All coursework grading and accountability is handled by CodePath. The following table outlines how each coursework section is weighted in calculating a student's final grade. See [Coursework Grading](https://courses.codepath.org/snippets/ios_university/grading_spring_2020) for a breakdown of scores for individual coursework items. | Weight | Section | Description | | -------- | -------- | -------- | | 50% | App Assignments | 3 App projects: Flixter, Twitter & Instagram | | 50% | Group Project App Milestones | Original app design, development and demo | #### Bonus points A student can earn bonus points on an app assignment by completing extra app features beyond that which is indicated as required. Bonus points will only be applied within the given coursework section they are earned and won't increase the impact of a given section beyond it's designated weight. For instance, no amount of bonus points will increase the impact of the *Assignments* section beyond 50% of the final grade. #### Coursework Submissions - **All coursework items** are submitted through CodePath Course Portal and due by their posted deadlines. - **Three (48 hour deadline extensions)** are allowed for the entire semester, no questions asked, no need to request extensions. 48 hours is the maximum allowed extension for any individual coursework item, extensions cannot be combined per coursework item. - **Once the 3 deadline extensions have been used**, any coursework item submitted after the posted deadline will not be accepted. If there are any crucial circumstances please reach out to the Tech Fellows and we will take that into consideration. #### Attendance Incentives - **Perfect Attendance:** Attendance at ALL sessions will result in the addition of 10% points to the final grade. (i.e. a 70% would become an 80% and an 85% would become a 95%) - **Consistent Attendance:** Attendance at 70% of all sessions of the course will result in the addition of 5% points to the final grade. (i.e. a 70% would become a 75% and an 85% would become a 90%) #### CodePath Requirements for Course Completion CodePath holds all professional and college students to the same high bar of quality coursework and professionalism. In order to be considered CodePath alumni and receive recognition for successful completion of the course from CodePath, **students must complete the course with a final grade of 60% or above**. Students meeting the above requirements will: 1. Receive a (digital) CodePath certificate of completion. 1. Be considered CodePath alumni and gain access to alumni networks. 1. Gain full access to the CodePath career center and be eligible for mentorship opportunities with CodePath professional alumni. ### Grade Reports Students will have access to their CodePath grades through the learning portal. ### Student Privacy CodePath adheres to best practices and complies with all regulations regarding student information and data privacy as outlined by FERPA. - Private student information and assessment data will only be shared with relevant team members within the CodePath organization and the professor of record for the participating college. - Students who wish to have their data shared with any 3rd parties must grant CodePath explicit consent of such data sharing. - Public facing leaderboards, such as Cybersecurity Capture the Flag Competitions, will use aliases and not contain student identifiable information. --- ### Coursework Overview Coursework for CodePath courses includes a mix of weekly labs, assignments and a final group project. | Unit | Coursework | Content Description | | -------- | -------- | -------- | | 0 | **Prework:** Tip Calculator | Course Orientation (Prework at for-credit sites) | | 1 | **Lab:** Yelpy - Feed<br/> **Assignment:** Flix Part 1| • Networking Part 1<br/> • Table Views| | 2 | **Lab:** Yelpy - Detail & MVC<br/> **Assignment:** Flix Part 2 | • Navigation<br/> • Passing Data <br/> • MVC | | 3 | **Lab:** Yelpy - Auto Layout<br/> **Assignment:** Twitter Part 1 <br/> Group Project: Add project ideas | • Auto Layout<br/> • Search & Filter | | 4 | **Lab:** Yelpy – Animations<br/> **Assignment:** Twitter Part 2<br/> Group Project: Group formations | • Animations (Lottie)<br/> • Skeleton View| | 5 | **Lab:** Yelpy - Chat Feature<br/> **Assignment:** Instagram Part 1 <br/> Group Project: Product Specs| • Authentication<br/> • Parse Backend | | 6 | **Lab:** Yelpy – Map Feature<br/> **Assignment:** Instagram Part 2 <br/> Group Project: Wireframes/Schema Design | • MapKit<br/> • Protocols | | 7 | **Group Project - Develop:**<br> • Sprint Planning | | | 8 | **Group Project - Develop:** • Sprint Build Sprint | | | 9 | **Group Project - Develop:** Final Spring + App Development Competition!| Vote for best projects! | ### Course Structure This courses teaches iOS development in a project-based format over a 10-week period. Each week builds on the skills and knowledge from the previous week: * **Weekly App Assignment.** A new mobile app is assigned to each student as an individual project. * **Code Review.** We will briefly review each app and provide feedback on code. * **Labs.** Students will practice pair-programming while working on app projects during class sessions once a week. * **Online Support.** Students can post questions and get support through our Discussions System. * **Github Based Online Learning Portal.** Students will have access to a custom learning portal with videos, code samples, and comprehensive documentation library. - **Online Class Sessions:** Students meet twice a week in 1.5 hour sessions to complete labs, work on weekly assignment project apps and design and implement their final group project. Note: Session frequency and time may vary by college. - **Assignments:** Each week, we will be building an iOS app that helps us reinforce and apply the concepts we introduce within the course. Expect the weekly apps to take anywhere from 5-10+ hours to complete each week outside of class. These projects will range from a basic movie reviews app to a full-featured Twitter Client. - **Group Project:** In addition to the apps assigned each week, we will also have a collaborative course-wide project. The class will be broken up into groups of 3 students each, and every group will select a larger project to scope, design and build over the course of the class. At the end of the course, we will do an _App Development Competition_ showcasing all of these projects. Read more about the [[course-wide group project|Group Project]]. ### Assignments Students will build three fully functional app projects over the first 6 weeks of the course. Each app project spans 2 weeks and is broken up into 2 parts, resulting in an app assignment deliverable each week. Weekly app assignments typically require anywhere from 5-10 hours outside of class session times to complete. Weekly app assignments are due by their posted deadlines. #### Flix: A read-only movie browsing app similar to Rotten Tomatoes<br/> <img src='http://i.imgur.com/TOQGnen.gif' title='' width='150' alt='' /><img src='http://i.imgur.com/zPuX1Jt.gif' title='' width='150' alt='' /><br/> #### Twitter Client: A read-write twitter client that allows users to view and compose tweets using the Twitter API<br> <img src='http://i.imgur.com/oComJYH.gif' title='' width='150' alt='' /><img src='http://i.imgur.com/DCXSxQO.gif' title='' width='150' alt='' /><br/> #### Instagram: A read-write Instagram-style app built from the ground up using a custom configured backend<br/> <img src='http://i.imgur.com/PGAwgBf.gif' title='' width='150' alt='' /><img src='http://i.imgur.com/u0oQbLA.gif' title='' width='150' alt='' /><br/> ### Labs In the weekly labs, students build apps to practice and reinforce key concepts for the week. Students will collaborate using a Pair Programming approach. Other lab activities will focus on specific skills like debugging and source control. #### Yelpy: A Yelp clone using the Yelp API <img src='https://i.imgur.com/JL1snRo.gif' title='' width='150' alt='' /><img src='https://imgur.com/XIdD7Bb.gif' title='' width='150' alt='' /><br/> - **Lab App Features** - Yelpy – API: A Yelp Client that allows users to browse photos using the Yelp Fusion API. - Yelpy – AutoLayout: An extension of the Yelpy app which uses AutoLayout to adapt to various device sizes and orientations. - Yelpy – MVC: A re-factor of the Yelpy codebase to utilize a Model View Controller design payttern. - Yelpy – Animations: integrate Lottie and SkeletonViews in the app to add flare to the Yelpy app. - Yelpy – Chat/Messaging: A chat feature implementation that uses Parse as a Back-end. - Yelpy – Maps: A feature that allows a user to tag photos with location and view a restaurant on the map. - **Lab Activities:** - Debugging - Collaborative Work-flow ### Group Project App Milestones Over the second half of the course, students will be grouped into teams of three and begin work designing and developing an original group project app from the ground up. - Students will be grouped into teams of 2-3 peers - Students will have group milestone deliverables to complete each week - Students will design and develop their own app from scratch - Finishes with demo day showcasing their projects to each other and industry guests. ### Curriculum Breakdown **CodePath course curriculum share a common structure:** * New mobile topics introduced each week building on the previous * “Core” development topics introduced through workshops and exercises * Individual mobile projects assigned to build over the first half of the course * Group project with milestones to design and build over the second half of the course ### Topic Breakdown 1. **Views and View Controllers** 1. View controller lifecycle 2. Using common views (buttons, labels, images) 3. Using table views and collection views 2. **Auto Layout** 1. Basic Auto Layout 2. Auto Layout and table views 3. **Navigation** 1. Modal and push navigation 2. Tab bar controllers 3. Passing data between view controllers 4. **Animation and Gestures** 1. Lottie Animations 2. SkeletonViews 5. **Networking** 1. Sending network requests 2. Downloading and caching remote images 3. Using Parse as a back-end ### Support Channels 1. Get support from professionals, TAs and other students by posting technical questions to our **Discussions Forum**. 1. Check out our FAQ at **[support.codepath.org](https://support.codepath.org)** <img src=http://i.imgur.com/NhG6t19.png title="Question Mark" width=20>