A currated list of resources to cater to all skill levels. Whether you're in Computer Science, Math, Stats or any other major, we got something for everyone! Below we have a list of our resources, suggested resources and a FAQ for projects. Items marked with a Star (*) are especially recommended.
More coming soon!
To put your site on the web, check out this guide Hosting a website for free or request a webspace from UofT. Brackets is a great text editor for building personal websites since it auto generates your code to a webpage in real time!
More coming soon!
If you answered yes to 1-3, go with Traditional. When developing with native Android and iOS languages, you get much better consistant performance, more tools to work with and more control over how your application works. The problem is there is more work involved in building your application and you have to build a whole new application if you want to have it on both platforms. The differences between Android and iOS are distinct and you can read more about them in the links above. Mostly likely you will be using an IDE: Android Studio or IntelliJ for Android and XCode is a must for iOS
If you answered yes to 4-7, go with a Cross Platform solution. When developing with a Cross Platform solution, you will build your application faster, have one app that will share code, work both on iOS and Android, and have native-like performance! The problem is that these solutions might run into issues from questions 1-3. However, you can look into these platforms and see if their features are supported for the application you're building. Example: Flutter and React Native allows you to mix with platform code (i.e standard code from Android or iOS) so you can add practically any new feature with a bit of work. These solutions are stable enough to use in production however there are some quirks you might have to look into for your project.
React Native is great if you already have experience building web applications in React and it's currently the most popular solution. Flutter is great since it is similar with Android or traditional app development. It recently became a new competitor in this space with Flutter 1.0 releasing anot too long ago. Xamarin would be good for you if you have experience with C# or .Net applications. You can use practically any text editor to build you application. Check out this article on how one developer had a 85% reduction in code with a cross platform solution: Why Flutter will change mobile development for the best.
Web applications typically have two components: Frontend and Backend. Frontend is usually described as being everything a user can see and the Backend as everything else. When you have a web application with both, it is known as a fullstack application. The frontend interacts with the user while the backend processes or stores that data. You can read more about the differences here: What's the Difference Between the Front-End and Back-End?.
Also, these web applications are usually deployed to the internet and hosted on a server or an environment such as NGINX but we will get more to that later on.
If you just need a simple frontend with buttons or forms then HTML/CSS will be enough for your use. However, if you're making a lot of pages, this can be very tedious. To reduce the workload, you can use a templating engine such as the ones listed above.
Templating Engines allow you to reuse code, allow you to create templates where you can customize inputs and automatically generate custom webpages. You can read more about them by clicking the links:
Node.js has been the king of speed for the last few years but PHP 7 is a new challenger. It's an interesting topic that you can read these articles to learn more:
The main thing that determines the database for your application is whether you need a SQL or a NoSQL database. SQL databases are relational where there are recognizable relationships between stored data in a table of information. SQL provides data consistency, allow complex queries and safe structured data.
NoSQL databases are non-relational where unstructured data is stored in collections. These collections can be key-valued pairs, graphs and much more! NoSQL is easily scalabile for large data sets, and allows flexibility to change your collection structures as you build your application easily without an existing predefined structure.
Check out the following links for more info on the use cases, the benefits and con's of each type:
1265 Military Trail