MobileSpace is a free, in-person course that aims to teach students mobile application development.
It was started in Fall 2016 @ SF State due to the lack of an iOS course in the Computer Science cirriculum.
Season 1 taught students iOS development using Swift and 5 students successfully completed the rigorous 3 month course. To hear my journey and learn more about Season 1, read my blog post on Medium.
For Season 2, we decided to teach cross-platform mobile development using React Native to keep pace with the latest technologies and industry trends. It was a thunderous success with 9 students successfully completing the course. The season ended on a high note with a very exciting Demo Day. 3 teams present their mobile apps with 2 esteemed judges and a packed room of over 50 audience members. You can watch the entire Demo Day on Youtube.
Looking ahead, for Season 3 we plan to do a pilot (remote) course @ UCSD and will continue to teach cross-platform mobile development using React Native.
Our teaching curriculum and course roadmap is Open Source and totally free to use with credit back to MobileSpace. Keep reading below to learn more about the React Native Cirriculum for Season 3.
I have heard of React Native as a good alternative to Swift. Since you are offering this React Native course and as someone that's worked professionally with React Native.. what do you think about it?
Why should I learn React Native instead of Swift?
Here's my tldr;
- share 90% of the codebase between iOS & Android; (saves a ton of engineering time & resources)
- write mobile apps with JS (easier for web devs who already know JS)
- a more active developer ecosystem (the React ecosystem in general)
- great for greenfield app (apps that are entirely written in RN)
Also there are lot of really good medium posts talking about exactly this: native dev vs react native.
Here are some good posts that I'd def recommend reading that helps to puts this in perspective.
- React Native vs Real Native Apps
- React Native: Bringing modern web techniques to mobile
- Comparing the Performance between Native iOS (Swift) and React-Native
But on the other hand, it's important to consider the cons before evaluating whether RN is right for you/your team. One of the biggest bottlenecks for RN currently it being able to maintain a hybrid app (RN + native app) at a large scale. For instance, a few months back Airbnb decided to sunset their use of React Native as a result of growing pains with maintaining the RN infrastructure as well as initialization and the async first render in a React Native app. I'd highly recommended reading the blog post for more details.
With that being said, I think React Native is still a really promising technology to learn as it can help make you a more all-rounded engineer as you are able to build mobile apps with Javascipt.
Over the last couple years, I have professionally worked as a React Native developer, helping publish two React Native apps on the App Store & Google Play Store and have led mobile teams as well. I have also spent extended periods of time working on open source libraries. Most notably I maintain the popular React Native Elements repo which is the most starred UI Toolkit for React Native. Additionally you can see some of my other React Native work on my Github profile.
This readme serves as the roadmap for Season 3 @ UCSD. In it are outlined the course objectives, weekly meetup assignments and most importantly a beginner friendly curriculum to learn professional React Native development.
- 2 meetups/week for 6 weeks - Oct 29nd => Dec 10th 2018
- Meetup day & time - TBD
- Any community member that misses two consecutive meetups will be asked to leave the community due to lack of commitment.
To make sure that all community members learn professional mobile development as well as general software engineering skills in turn preparing them to land an summer internship or a full-time software engineering position on their own.
Also it's not just about the technical skills that are taught during the course, but it's also about developing the right midset and ability to think through a technical problem, product spec as well as working in a team setting.
The following learning patterns will be re-enforned throughout the course:
- Even though this is a beginner friendly course, we will not delve into the basic theoretical concepts of Javascript, React etc. Instead we will take a very practical approach to learning and jump head first into
HelloWorld
projects and then start filling in the knowledge gaps as they come up. - We will try to build production ready apps & uses cases that can be showcased on your portfolio. (This is to say that we will not just build dummy apps for the sake of it)
- Collaboration is key. Be respectful of your peers and the community you are part of and be willing to help others and foster an environment of learning.
- Working in teams - each week, you will be paired up with another person in the class. It's your responsibility to work on assignments independenly, yet work together to resolve any problems that come up or ask questions on Slack.
- Course Introduction
- Intro to Javascript (JSX), React
- Learning React state, props and functions
- Intro to React Native, Expo and CRNA
- Intro to RN styling (flexbox)
TBD
- The JavaScript language [WEB TUTORIAL]
- JSX intro | React tutorial series [YOUTUBE]
- React Express ⭐ ⭐ [WEB TUTORIAL]
- Learn React - Free courses on Egghead.io ⭐ ⭐ [VIDEOS]
- React controlled components [OFFICIAL DOCS]
- React Native Express ⭐ ⭐ [WEB TUTORIAL]
- React Native - Learn the Basics ⭐ [OFFICIAL DOCS]
- React Native - Components and APIs ⭐ [OFFICIAL DOCS]
- React Native Styling Cheat Sheet [GITHUB REPO]
- The Complete React Native and Redux Course - Udemy Paid course [ONLINE COURSE]
PREWORK ASSIGNMENT - TIP CALCULATOR APP
- Learning React Native Core Components & API's
- Making API calls with React Native
- Advanced RN Styling & NPM Libraries
Working on Daug Social Network mobile app - Skeleton (part 1)
TBD
- Mobile Guides - React Native ⭐ [README GUIDES]
- Intro to React Navigation
- Authentication flow & AsyncStorage
Working on Daug Social Network mobile app - Navigation (part 2)
TBD
- Mobile Guides - React Native ⭐ [README GUIDES]
- React Redux
- Advanced API calls
- React Native wrap-up
Working on Daug Social Network mobile app - Backend (part 3)
TBD
- Mobile Guides - React Native ⭐ [README GUIDES]
- Built a fully functioning mobile app with React Native + an API (3 weeks)
- Demo the app
- Partyy 🎉
In case you have suggestions on how this roadmap can be improved, kindly open a new issue and let us know.
And if you like what you see or have any questions about this repo or MobileSpace in general please reach out to @monte9 on Github.