HWS Swift Coding Challenges: Real Problems - Real Solutions
4.9 (32 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
404 students enrolled
Wishlisted Wishlist

Please confirm that you want to add HWS Swift Coding Challenges: Real Problems - Real Solutions to your Wishlist.

Add to Wishlist

HWS Swift Coding Challenges: Real Problems - Real Solutions

Get iOS interview ready and ace the whiteboard test - Or level up your current Swift skills
4.9 (32 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
404 students enrolled
Created by Stephen DeStefano
Last updated 7/2017
English
Current price: $10 Original price: $75 Discount: 87% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 4.5 hours on-demand video
  • 68 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Increase your iOS problem solving skills by working through real world Swift coding challenges
  • Take the whiteboard test with confidence after completing this course and secure that iOS job
View Curriculum
Requirements
  • You should have at least 6 months of Swift training under your belt
  • You should have built some of your own Swift apps, or taken the Hacking with Swift course before starting this coding challenge course
Description

Swift Coding Challenges is produced from the "Hacking with Swift" series of tutorials, which are written and authored by the award winning Swift programmer, Paul Hudson, and these videos were made with his permission
and support. You can always be guaranteed you're learning the latest and greatest Apple technologies in the HWS tutorials. Hacking with Swift is one of the most popular Swift tutorial series online, which uses an approach that teaches you Swift programming incredibly quickly, and you end up with a huge library of finished projects that are yours to develop further, or ship to the App Store. Paul has received high praise from the creator of the Swift language, Chris Lattner, for his outstanding method of teaching, and series of Swift tutorials. And working together with iOS developer Steve DeStefano, the Hacking with Swift series of programming training videos are simply the fastest way to learn how to code in the Apple eco-system.

Check out all of Paul Hudson's Swift tutorials and books at HackingWithSwift 

This course is designed to get you ready for your iOS job interview, and for that whiteboard test. All these challenges are real world examples that you can expect to see in an actual iOS interview. And if your not looking for a job, than these challenges are a great way to level up your current iOS skills, and get a great library of coding solutions for your reference to boot.

You'll be presented with various challenges to solve, and I’ll be helping you along with hints, as well as the solutions and explanations for each of the challenges. I also provide a complete transcript of each lecture (solution included) for you to download as a text file.

And, this course is called Swift 3 Coding Challenges because you will be challenged. There is no learning without struggle, so if you don’t take the time to watch each challenge and try it for yourself in Xcode, you’ll never know how you would have fared. 

Note: This course is not for Swift beginners, so you should have at least six months of Swift behind you...preferably a year. If you’ve completed Paul Hudson's Hacking with Swift instructional tutorials at HackingWithSwift dot com, you should to be able to handle the Easy challenges, and some of the Tricky ones. If you’ve completed his Pro Swift, then you should be able to handle most of the Taxing problems too. If you consistently struggle with challenges, then you should definitely watch Paul's Pro Swift videos too. See all his tutorials and books at HackingWithSwift 

What will be covered:

  • Course content from the award winning Swift programmer Paul Hudson's book- Swift Coding Challenges
  • The latest Swift is used - Swift 3
  • Prepare for iOS interviews and ace the whiteboard test
  • Test yourself against your friends and level up your skills
  • Hints are given in for each challenge to help if you get stuck
  • Three skill levels: Novice - Intermediate - Senior developer
  • Solutions are given for all challenges - many challenges will have multiple solutions given
  • Most challenges can be done in a playground - the rest will use a mac command line project
  • Deep explanations as to how the code works
  • All the lectures are downloadable as a text file transcript - for your own coding library
  • Challenge yourself with Strings - Numbers - Files - Collections - Algorithms 
  • Multiple choice challenges - Novice - Intermediate - Expert levels


Who is the target audience?
  • This course is for developers who want to prepare for an iOS interview - Or to simply level up your current Swift skills
  • If you are a novice coder with about six months of Swift training, then you'll gain a lot more knowledge and benefit by taking this course
Students Who Viewed This Course Also Viewed
Curriculum For This Course
70 Lectures
04:37:10
+
Introduction - What will i learn in this course?
1 Lecture 06:35
+
Strings
15 Lectures 41:44

Write a function that accepts a String as its only parameter, and returns true if the string has

only unique letters, taking letter case into account. 

Challenge 1- Are the letters unique?
03:47

Write a function that accepts a String as its only parameter, and returns true if the string

reads the same when reversed, ignoring case. 

Challenge 2- Is a string a palindrome?
02:58

Write a function that accepts two String parameters, and returns true if they contain the same characters in any order taking into account letter case. 

Challenge 3 - Do two strings contain the same characters?
02:57

Write your own version of the contains() method on String that ignores letter case, and

without using the existing contains() method. 

Challenge 4 - Does one string contain another?
02:05

Write a function that accepts a string, and returns how many times a specific character appears,

taking case into account. 

Challenge 5 - Count the characters
04:26

Write a function that accepts a string as its input, and returns the same string just with

duplicate letters removed. 

Preview 04:04

Write a function that returns a string with any consecutive spaces replaced with a single space. 

Challenge 7 - Condense whitespace
02:47

Write a function that accepts two strings, and returns true if one string is rotation of the other,

taking letter case into account. 

Challenge 8 - String is rotated
02:41

Write a function that returns true if it is given a string that is an English pangram, ignoring

letter case.

Challenge 9 - Find pangrams
01:29

Given a string in English, return a tuple containing the number of vowels and consonants. 

Challenge 10 - Vowels and consonants
02:46

Write a function that accepts two strings, and returns true if they are identical in length but

have no more than three different letters, taking case and string order into account. 

Challenge 11 - Three different letters
02:19

Write a function that accepts a string of words with a similar prefix, separated by spaces, and

returns the longest substring that prefixes all words. 

Challenge 12 - Find longest prefix
01:14

Write a function that accepts a string as input, then returns how often each letter is repeated in

a single run, taking case into account. 

Challenge 13 - Run-length encoding
03:17

Write a function that prints all possible permutations of a given input string. 

Challenge 14 - String permutations
03:21

Write a function that returns a string with each of its words reversed but in the original order,

without using a loop. 

Challenge 15 - Reverse the words in a string
01:33
+
Numbers
11 Lectures 35:14

Write a function that counts from 1 through 100, and prints “Fizz” if the counter is evenly divisible by 3, “Buzz” if it’s evenly divisible by 5, “Fizz Buzz” if it’s even divisible by three and five, or the counter number for all other cases. 

Challenge 16 - Fizz Buzz
02:23

Write a function that accepts positive minimum and maximum integers, and returns a random

number between those two bounds, inclusive. 

Challenge 17 - Generate a random number in a range
02:54

Create a function that accepts positive two integers, and raises the first to the power of the

second.

Challenge 18 - Recreate the pow() function
01:41

Swap two positive variable integers, a and b, without using a temporary variable. 

Challenge 19 - Swap two numbers
01:43

Write a function that accepts an integer as its parameter and returns true if the number is prime. 

Challenge 20 - Number is prime
03:12

Create a function that accepts any positive integer and returns the next highest and next lowest number that has the same number of ones in its binary representation. If either number is not possible, return nil for it. 

Challenge 21 - Counting binary ones
03:20

Create a function that accepts an unsigned 8-bit integer and returns its binary reverse, padded

so that it holds precisely eight binary digits. 

Challenge 22 - Binary reverse
02:09

Write a function that accepts a string and returns true if it contains only numbers, i.e. the digits

0 through 9. 

Challenge 23 - Integer disguised as string
03:39

Given a string that contains both letters and numbers, write a function that pulls out all the

numbers then returns their sum. 

Challenge 24 - Add numbers inside a string
04:38

Write a function that returns the square root of a positive integer, rounded down to the nearest

integer, without using sqrt()

Challenge 25 - Calculate a square root by hand
05:29

Create a function that subtracts one positive integer from another, without using - . 

Challenge 26 - Subtract without subtract
04:06
+
Files
10 Lectures 38:04

Write a function that accepts a filename on disk, then prints its last N lines in reverse order, all

on a single line separated by commas. 

Challenge 27 - Print last lines
05:05

Write a logging function that accepts accepts a path to a log file on disk as well as a new log message. Your function should open the log file (or create it if it does not already exist), then append the new message to the log along with the current time and date. 

Challenge 28 - Log a message
04:44

Write a function that returns a URL to the user’s documents directory. 

Challenge 29 - Documents directory
02:08

Write a function that accepts a path to a directory and returns an array of all JPEGs that have

been created in the last 48 hours. 

Challenge 30 - New JPEGs
03:20

Write a function that accepts two paths: the first should point to a directory to copy, and the second should be where the directory should be copied to. Return true if the directory and all its contents were copied successfully; false if the copy failed, or the user specified something other than a directory. 

Challenge 31 - Copy recursively
02:59

Write a function that accepts a filename on disk, loads it into a string, then returns the frequency of a word in that string, taking letter case into account. How you define “word” is worth considering carefully. 

Challenge 32 - Word frequency
05:06

Write a function that accepts the name of a directory to scan, and returns an array of filenames that appear more than once in that directory or any of its subdirectories. Your function should scan all subdirectories, including subdirectories of subdirectories. 

Challenge 33 - Find duplicate filenames
04:16

Write a function that accepts the name of a directory to scan, and returns an array containing

the name of any executable files in there. 

Challenge 34 - Find executables
02:43

Write a function that accepts a path to a directory, then converts to PNGs any JPEGs it finds in there, leaving the originals intact. If any JPEG can’t be converted the function should just quietly continue. 

Challenge 35 - Convert images
03:58

Write a function that accepts accepts a path to a log file on disk, and returns how many lines

start with “[ERROR]”. The log file could be as large as 10GB, but may also not exist. 

Challenge 36 - Print error lines
03:45
+
Collections
18 Lectures 01:12:40

Write an extension for collections of integers that returns the number of times a specific digit

appears in any of its numbers. 

Challenge 37 - Count the numbers
01:54

Write an extension for all collections that returns the N smallest elements as an array, sorted

smallest first, where N is an integer parameter. 

Challenge 38 - Find N smallest
02:47

Extend collections with a function that returns an array of strings sorted by their lengths,

longest first. 

Challenge 39 - Sort a string array by length
01:16

Create a function that accepts an array of unsorted numbers from 1 to 100 where zero or more

numbers might be missing, and returns an array of the missing numbers. 

Challenge 40 - Missing numbers in array
02:34

Write an extension to collections that accepts an array of Int and returns the median average,

or nil if there are no values. 

Challenge 41 - Find the median
02:38

Write an extension for all collections that reimplements the index(of:) method. 

Challenge 42 - Recreate index(of)
01:41

Create a linked list of lowercase English alphabet letters, along with a method that traverses all

nodes and prints their letters on a single line separated by spaces. 

Challenge 43 - Linked lists
05:43

Extend your linked list class with a new method that returns the node at the mid point of the

linked list using no more than one loop. 

Challenge 44 - Linked list mid-point
03:43

Write a new method for your binary search tree that traverses the tree in order, running a closure on each node. 

Challenge 45 - Traversing the tree
02:34

Write an extension for all collections that reimplements the map() method. 

Challenge 46 - Recreate map()
03:17

Write an extension for all collections that reimplements the min() method. 

Challenge 47 - Recreate min()
05:52

Create a new data type that models a double-ended queue using generics, or deque. You should be able to push items to the front or back, pop them from the front or back, and get the number of items. 

Challenge 48 - Implement a deque data structure
02:21

Write a function that accepts a variadic array of integers and return the sum of all numbers that

appear an even number of times. 

Challenge 49 - Sum the even repeats
02:54

Write a function that accepts an array of positive and negative numbers and returns a closed range containing the position of the contiguous positive numbers that sum to the highest value, or nil if nothing were found. 

Challenge 50 - Count the largest range
02:32

Expand your code from challenge 43 so that it has a reversed() method that returns a copy

of itself in reverse. 

Challenge 51 - Reversing linked lists
05:38

Write one function that sums an array of numbers. The array might contain all integers, all

doubles, or all floats. 

Challenge 52 - Sum an array of numbers
04:37

Your job is to write a function that accepts your linked list as its parameter, and returns the node at the start of the loop, i.e. the one that is linked back to. 

Challenge 53 - Linked lists with a loop
11:51

Create a binary search tree data structure that can be initialized from an unordered array of

comparable values, then write a method that returns whether the tree is balanced. 

Challenge 54 - Binary search trees
08:48
+
Algorithms
10 Lectures 48:30

Create an extension for arrays that sorts them using the bubble sort algorithm. 

Challenge 55 - Bubble sort
04:22

Create an extension for arrays that sorts them using the insertion sort algorithm. 

Challenge 56 - Insertion sort
05:10

Write a function that accepts two values and returns true if they are isomorphic. That is, each

part of the value must map to precisely one other, but that might be itself. 

Challenge 57 - Isomorphic values
03:41

Write a function that accepts a string containing the characters (, [, {, <, >, }, ], and ) in any arrangement and frequency. It should return true if the brackets are opened and closed in the correct order, and if all brackets are closed. Any other input should false. 

Challenge 58 - Balanced brackets
03:55

Create an extension for arrays that sorts them using the quicksort algorithm. 

Challenge 59: Quicksort
06:42

Create a function that detects whether either player has won in a game of Tic-Tac-Toe. 

Challenge 60 - Tic-Tac-Toe winner
03:55

Write a function that returns an array of prime numbers from 2 up to but excluding N, taking

care to be as efficient as possible.

Challenge 61- Find prime numbers
04:11

Write a function that accepts an array of CGPoint pairs, and returns an array of the angles

between each point pair. Return the angles in degrees, where 0 or 360 is straight up. 

Challenge 62 - Points to angles.rtf
02:20

Challenge 63 - Flood fill
06:02

There are M different ways you can place N queens on an NxN chessboard so that none of them are able to capture others. Write a function that calculates them all and prints them to the screen as a visual board layout, and returns the number of solutions it found. 

Challenge 64 - N Queens
08:12
+
90 Multiple Choice Questions - Novice - Intermediate - Expert
3 Lectures 30:52
Multiple Choice questions - Novice
08:44

Multiple Choice - Intermediate
09:36

Multiple Choice - Expert
12:32
+
Frequent Flyer Club - Hacking With Swift Coding Challenges
1 Lecture 02:07
Frequent Flyer Club - Coding Challenges
02:07
+
Tour of Paul Hudson's Hacking With Swift site
1 Lecture 01:24
Tour of Paul Hudson's Hacking With Swift site
01:24
About the Instructor
Stephen DeStefano
4.7 Average rating
834 Reviews
7,840 Students
9 Courses
iOS / macOS Developer / Swift Instructor

My name is Steve DeStefano, an iOS instructor, and working together with Paul Hudson, the award winning Swift programmer, i've transfered his best selling iOS / macOS / watchOS, and other books into lecture style courses. So your getting the best instruction available for everything Apple. Paul's teaching method has been hailed as one of the best ways to learn how to code in the shortest amount of time, and he has received high praise from the creator of the Swift language, Chris Lattner. I offer a unique way of presenting Paul's material, which is with the help of callouts, highlighting and graphics, all to make it easy to follow the path of the code, and understand the content. If your think this might be too difficult, think again, and then come code along with Paul and me, and see how easy it is to learn Swift and app building. Go from a newbie to an Apple developer in a short amount of time, and see your own unique creations in the App Sore, and in the hands of thousands of people.