Participants of the Academy
The Academy organized by Semos Education and CodeWell is intended for people who want to get to know the iOS programming field and become iOS programmers. The participants will learn how to program through a process of working on real products. Within the 20-week Academy, the participants will develop fully functional mobile apps that will serve them later on as references for their future employment and to launch their career as programmers or upgrade their existing knowledge. The participants will come up with innovative solutions independently, at the same time carrying on the process of building a complete and functional iOS mobile application. The main instructor and mentor of the Academy is Martin Anchevski, one of the co-founders of CodeWell and the CTO credited for accomplishing many successful projects.
Module 1 – Introduction to the basics of programming in Swift
In this module students build a foundation of Swift knowledge.
- Introduction to the basic concepts in Swift such as playgrounds, statements, variables and constants;
- Using operators and conditionals for creating an iOS app and solving a quiz by choosing from a set of answers;
- Proper exercise is provided using the previously gained knowledge from the lectures and the students will take an extended quiz.
- Introduction to loops in Swift;
- Working with basic functions needed for app developing;
- Necessary exercises providing practical knowledge of the previous lessons with the usage of loops and basic functions.
- The students will be also having a mini project for home named Is it prime which will be a mini "math" project using basic conditionals and loops.
- Basic work with collections and the students will work on an example project named How many fingers and they should be able to detect how many fingers are touching the screen;
- Explaining the use of optional in Swift;
- Exercises using optional and collections.
- Learning adding comments, making print statements and introducing User Defaults;
- Introducing the process of debugging;
- Practicing the debugging knowledge and the addition of comments, print statements and User Defaults.
After this module, the students will be presented with a project where they should build an Expert system (e.g. Grocery store using conditionals, expressions, flow control where the user can choose products from a set of groceries and calculate checkout price).
Module 2 – Introduction to iOS programming
In this module students will dig deeper into the iOS operating system and gain more advanced knowledge.
- Running and modifying an iOS app, intro to XCode, discovering how to connect user interface controls to controller code learning how to add images and other assets to the app by making a word collage (changing basic UI properties of given strings on the screen like color, size, fonts…);
- Discovering IBActions and data types by making a Dice app (Simulation of a dice roll using basic UI elements);
- Exercises working on the previous apps and gaining deep practical knowledge of the field.
- Learning basics of Views and Layout Constraints by working on a Space Adventure app;
- Using MVC and discovering the whole app cycle by working on Unit converter (Exercise consisting of few labels and changing between units (Fahrenheit to Celsius, Km to Miles…) and also presenting with a mini project for home - Calculator (standard calculator app with basic operations);
- Exercising Views, Layout Constraints, MVC and working on the app cycle.
- Introducing User interface basics and the structure of the app;
- Learn connecting views to controllers by working on a basic drawing app (create a drawing app with drawing, deleting lines, color chooser) and a mini project for home will be assigned (A quiz app with choosing from a set of question and answers);
- Feedback for the mini project will be provided with comments and suggestions for further development and exercise.
- Gain familiarity with Auto Layout constraints by working on a Calculator with auto layout (Standard calculator app with basic operations using Auto layout);
- Learning how to create dynamic images with Core Graphics, discovering UIResponder and touches by working on a finger painter and also presenting a mini project for home - Paint (create a drawing app with drawing, deleting lines, color chooser);
- Exercises by working on Auto Layout constraints and Core Graphics.
At the end of this module, the students will have to finish a project that it is going to be a Simple application with complex UI (Implement and understand app lifecycle, constraints).
Module 3 – Learning advanced data structures and templates for software design
In this module the students will gain advanced knowledge of the coding data structures and patterns for simplifying the work in Swift.
- Defining classes and structures;
- Working with properties and calling methods;
- Exercises including work with classes and structures, also revising knowledge of properties and methods.
- Defining the usage of strings and array operations;
- Learning how to inherit methods, properties, and other characteristics from another class and adapting protocols;
- Exercise the usage of strings and array operations and also inheritance and protocols.
- Discovering optionals and recognizing patterns in a code;
- Using Json parsing method by making a bitcoin price tracker (learn how JSON/web services is structured, used and parsed);
- Exercises including working on the tracker and revising usage of Json, optionals and patterns.
- Discovering multithreading and creating concurrent threads;
- Using self-contained blocks of functionality that can be passed around and used in the code (Closures);
- Exercises regarding previous knowledge.
At the end of this module the student should have finished a Casino Games project (Implement classic casino or card games using inheritance and design patterns).
Module 4 – Creating iOS applications related to services
In this advanced module the students will learn how to connect their app to the internet or another app.
- View controller life cycle and working on memory management;
- Adding multiple view controllers using UITabBarController and UINavigationController;
- Proper exercise including controller life cycle, memory management and using UITabBarcontroller and UINavigationController and a mini project for home will be assigned to the students – UIAlertController.
- Learning segues and how to send and receive information from one view to another as well as multithreading this being practiced on the lesson;
- Using UITableview for displaying sets of data on iOS and UICollectionView for displaying multidimensional data creating Times table App, Twitter and Gallery;
- Exercises will be provided for revising the development of the previously assigned apps.
- Using AV Foundation framework for working with time-based audiovisual media on iOS by making a noise maker and xylophone;
- Working with Cocoapods, the dependency manager in Swift and working on memorable places;
- Exercises regarding the AV Foundation framework and Cocoapods.
- Further work on Networking, Alamofire, REST, JSON and URL and developing a RSS reader (learn how to call web services and handle their response) and the students will also have a project for home, make an Instagram app;
- Working with Advanced UI components of an iOS apps;
- Exercises including the previously made apps and assigning the students with a mini project for home - Tinder app.
After this week a project is going to be finished and the students will make an Instagram/Tinder app (Make a clone of an existing real world app with advanced UI and networking elements). Students’ propositions will be taken into consideration.
By the end of this module the students will be able to make a simple application with complex UI.
Module 5 – Advanced iOS programming
In this final module the students will perfect themselves in building a fully functional iOS app with all the details and features provided.
- Learning to add local notifications and content rich notifications to the iOS app;
- Discovering the push notification capabilities of the app;
- Exercises implementing the knowledge of adding notifications to the iOS app.
- Working with Firebase and authentication login by making a chat (Implementing a conversational app);
- Learn using the Firebase database and notifications by making a chat (extended with notifications);
- Exercises working on Firebase and perfecting the knowledge.
- Discovering the use of location services like MapKit and Core Location by making a Memorable places app;
- Learning the Images framework using image picker and adding a camera feature by making a Gallery (extended with adding images);
- Exercises and experimenting with the location services and images framework.
- Using localization to make the app support other languages and learn to add animations to the app by making a Timer;
- Learning how to submit the app to the app store;
- Exercises and finishing a shared economy project.
After the end of the modules the students will be able to make a wholly functional iOS app such as Chat app, Instagram/Tinder or a clone of an existing real world app with advanced Frameworks and APIs.
CodeWell is an international company offering IT solutions and services with uncompromising quality and value for clients all around the globe, one of the first companies in Macedonia specialized for development of mobile applications. CodeWell is a team that has launched many successful international startup companies, one of them being “Letz”, bringing immense success, upraise and experience. CodeWell has completed more than 100 successful projects for companies like Sony Music Entertainment, Heineken, Holland Casino, Raiffeisen Bank, T-Mobile and Vip.
Lectures are conducted in a modern and interactive way, using modern informal methods, through individual and group work, with practical mentoring as well as interactive consultations with lecturers during classes.
- Payment in cash with payment slip or debit cards
- Payment in installments with credit cards
- Payment in installments without interest with credit cards of Stopanska Banka
- Payment by invoice