Swift Workshop 28.03.2022 - 01.04.2022

Marcus Hopp, 11 April 2022

When it comes to learning how to code in a specific language or with a certain technology you are often confronted with a ton of resources. The actual problem there is not to find a resource but to find a resource that matches your expectations like the phase you are actually in and if there is an approach used you can follow easily.

Author sitting in front of his laptop

This brings me to the 42Heilbronn where you learn to code from scratch without the boilerplate you know from other educational programs. 42Heilbronn is a full-time tuition-free coding school that. Their main mission is to educate and empower the coders of the future by providing an alternative learning model in a safe and inspiring environment. The learning model is based on six pillars:
Beginner-friendly Peer learning Project based learning Real-world skills Gamification 24/7 accessible campus

So we as SIT took the chance to hold a modern Swift programming workshop that started at the bottom on Monday and left the students (in the best case) with a working application on an appropriate scale on Friday.

But before diving into developing the actual app and exploring the Apple universe we should have a look at the used techstack:

For this workshop we will be using Swift 5 with Xcode 12 mainly. Besides that Java Script Object Notation (JSON) was used as a possiblity to structure our data.

Swift itself is with us since 2014 and was initially developed to replace Objective-C in the Apple world. Since Objective-C was created in the 1980s it lacks a lot of modern language features. The actual advantages of Swift over Objective-C are for example that it is possible to write much “safer” code. In fact that means you can safely unwrap properies by using a ‘guard’ or a ‘if let’ statement. Additionally Swift comes with type inference to prevent type mismatch situations that lead to crashes.

Xcode is not mandatory to create iOS applications with Swift, but it offers all the tools that are relevant for the actual development process. When talking of tools and features there are for example complete version control integration with git, iOS device simulators to test your app even if you don’t have the desired device in your hand or even previewing what you are creating right now (SwiftUI).

Monday started with a brief introduction about Who am I actually, what is Swift and why should you use it. After that I was showing to the students how to setup an environment in Xcode and how to setup their first basic application and also get them to know the IDE. We were able to solve a ton of questions and setup problems that drove the learning a lot. We reached our milestone of having the first screen implemented with a dynamic list (UICollectionView) of items that were parsed from a locally available file structured as a valid JSON - what is a very big achievement actually!

Laptop screen showing swift code
On Tuesday the students worked on their own to get a bit more into Swift and also got the possibility to let their own creativity flow. What would be an application you would like to have? What features could be used for that?

Meeting back with everyone on Wednesday was when things were getting spicy. Even before the actual workshop started there were already questions concerning the final application (that was provided via GitHub) and their own implementations. Problems, solutions, ideas - everything was there and we had some very good talks. Also the number of participants dropped a bit, what gave me the chance to team up with single students or groups of students to assist them with a certain challenge they faced.

Thursday was also a day on that the students worked on their own with no guidance by me to explore more and more the possibilities of Swift and mobile application development.

Friday was meant to be a day of conclusion and talking about what everybody has achieved and in the end - were to go from here. But other than that I was also helping out polishing the ideas of the students and showing them some ideas and ways of getting certain things implemented and working. Also a lot of talking about how actual work is done on my side as an iOS Developer with SIT took place and students were very interested in how a workday goes by.

Conclusion: With all the knowledge the students gained they were able to pursue their own app ideas. Within this process we sorted out a lot of questions alongside the way and I could provide the studens with ideas to improve their projects. What i really like was the readiness to dig deep into iOS development and understand the fundamentals of creating a real world application.

Impressions around the 42Heilbronn location

classroom
glass wall
room with music equipment
plants