You are here because you are interested in Swift and algorithms, right?
Maybe you want to learn more about the Swift programming language. You probably want to write more efficient Swift code.
And this is the perfect course for you to learn about algorithms and Swift.
I created this course to get you started with algorithms. Introduction to Algorithms in Swift will help you understand the importance of algorithms. Soon, you'll be able to solve problems more efficiently.
What makes me qualified to teach you?
My name is Károly, and I’ve been developing software since 1995. I'm the creator of many iOS apps, most of which have been featured by Apple. I published three books on programming. You can find my online courses on Udemy and Pluralsight.
I’m here for You
I'm a full-time online instructor. If you have any questions about the course content or anything related to this topic, you can always post a question in the course or send me a direct message. I always respond promptly.
Contents and Overview
Computer algorithms have been developed and refined over the last couple of decades. The study of algorithms is fundamental to any programmer who plans to develop software system that is scalable and performant.
Once we got past the basic “Hello World” beginner applications, we begin to realize that complex apps require a different approach. Our software that used to work nicely during our tests becomes incredibly slow and crashes frequently in real-world situations. The reason is that we haven’t prepared our app for real-life usage: while it ran without issues with small datasets during our tests, it fails when reality kicks in. Algorithms are indispensable to building software that is capable of managing large amounts of data or to solve complex problems efficiently.
I explain each concept using easy-to-understand examples. You'll not only learn how to implement more efficient code, but you'll also learn Swift, Apple's popular programming language. Beyond iOS and Mac development, Swift is going to become THE programming language for Web-development and systems programming.
This course is a long-time investment!
With our 30-day 100% money back guarantee, nothing is holding you back from jumping in right now and trying the course out.
Go ahead and click the enroll button. See you in the first lesson!
In this section we are going to talk about computational complexity. The Big-O notation is a mathematical model used in computer science to describe the efficiency of algorithms as a function of their input size.
The best way to understand the Big-O thoroughly is via code examples. Therefore, we are going to illustrate each concept using live Swift coding.
In this lecture, we are going to talk about the Constant Time complexity. We'll also implement Swift functions that execute in constant time.
This lecture is about the Linear Time complexity. As usual, we'll not only talk about the theory, but we are going to also illustrate O(n) via Swift code examples.
The topic of this lecture is the Quadratic Time complexity. We are going to delve into the world of nested loops and we'll discuss why they should be avoided if possible.
Do your best to avoid polynomial - and worse - time complexity. This lecture explains what to do if you encounter O(n^k).
Let's take a closer look at the logarithmic time complexity. Logarithmic time represents an extremely efficient algorithm, used by the binary search technique for example.
Understanding the Big-O notation paves the road to working with algorithms. This lecture is a brief summary of what we've learned during this module.
Xcode playground projects for the Big-O section.
In this section, we are going to take a closer look at the importance and the benefits of algorithms and algorithmic thinking.
In this lecture, we are going to implement a function which calculates the sum of the first N natural numbers. We’ll start with a naive implementation. Then, we are going to implement a more efficient way to solve this problem using a formula that is more than 2000 years old.
Our task is to implement a function that, given an array and a target value, returns zero-based indices of any two distinct elements whose sum is equal to the target sum.
In this lecture, we are going to build a function to find the equilibrium indices of an array. The equilibrium index of an array is an index such that the sum of elements at lower indices is equal to the sum of elements at higher indices.
In this section, we’ve seen some practical examples of solving problems using two different approaches. Let's recap the biggest take-aways.
The Power of Algorithms - Xcode playground projects.
In this section we are going to talk about basic sorting algorithms.
Understanding the inner workings and knowing how to implement the basic sorting algorithms gives you a strong foundation to building other, more sophisticated algorithms.
We'll start the study of basic sorting algorithms with the selection sort algorithm. We are going to implement it in Swift. We’ll also visualize how selection sort works and we’ll analyze the time complexity of this algorithm.
Finally,we are going back up the theory with performance tests.
Let's quickly recap the pros and cons of the selection sort algorithm.
Insertion sort is a basic sorting algorithm, which works by analyzing each element and inserting it into its proper place, while larger elements move one position to the right.
Insertion sort has quadratic time complexity. However, the performance of the insertion sort is largely affected by the initial order of the elements in the sequence.
In the previous lecture, we took a closer look at the insertion sort algorithm. Did you know that even Apple uses it in their sort() implementation? Check out why!
The topic of this lecture is Bubble Sort. This algorithm works by repeatedly evaluating adjacent items and swapping their position if they are in the wrong order. While it's easy to grasp and implement, you don't want to use it in production code. Let's see why!
A brief summary of the bubble sort algorithm.
Test your knowledge on basic sorting algorithms.
Xcode playground projects for the Basic Sorting section.
The merge sort is a fast divide-an-conquer algorithm. Check out this lecture to see what that means.
Merge sort in a nutshell.
In this lecture, we'll analyze the famous quicksort - the king of the compare-based sorting algorithms.
Let's recap what we've learned about the popular - and fast - quicksort algorithm.
Quizzes for the Advanced Sorting Algorithms section.
Xcode playground projects for the Advanced Sorting section.
Let me give you some useful online resources which will help you in sharpening your coding and problem solving skills.
I am a veteran mobile developer having built several successful iOS apps and games, most of which were featured by Apple.
I am the founder at LEAKKA, a software development and tech consulting company. I have worked with companies such as Apple, Siemens, SAP, Zen Studios, and many more.
I spend most of my days now as a professional software engineer and IT architect. As an instructor, my aim is to share my 20+ years of software development expertise, and change the lives of students throughout the world.
My passion is helping people reveal hidden talents and guide them into the world of startups and programming. I currently am teaching object-oriented software design, iOS, Swift, Objective-C and UML.