Swift syllabus rework - Searching Feedback


I have been planning for a little while a rework of the Swift syllabus. The goal isn’t to redo it but instead to try to find areas where it could be improved and aims to make it easier to expand on the tree in the future. These improvements for most include smaller changes like more tests and slight adjustments to syllabus text and instructions. There will be some slight movements of concepts as well. This move also includes reducing some exercises amount of tasks to be more feasible for a student (going to more of 4-6 tasks per exercise). There are a few larger changes, most notable is that a few concepts have moved:

  • For loops - comes earlier this is due to looping being quite crucial
  • Higher order functions, escaping functions - comes later since it has dependencies on other concepts

There has also happened grouping of concepts and the same has been removed this is mostly due to that there is very hard to teach 4-6 concepts per exercise. Instead, will each exercise be teaching a maximum of 3 concepts. To make this possible have there been several new exercises introduced (note!: some may not use the same name):

  • Pacman rules
  • Bird watcher
  • chessboard
  • TBD (More looping)
  • Ellens Alien Game
  • TBD (Nested functions, Function overloading)

To open up for further developments of the syllabus. Have 2 new concepts have been added:

  • More looping
  • Ranges

Comparing the old to the new syllabus:

exercises: 14
concepts: 41

exercises: 20
concepts: 33

Here are the 2 trees:



Here are the individual changes:

Layers of Lasagna

  • Add more test cases


  • Merging basics, constants, functions, variables, and type-annotations
  • Some adjustments to the concept text

Freelancer Rates

  • Add more test cases


  • Mention how to round numbers
  • Remove mention of other number systems than Int and Double. And later move this to its own concept

Pacman rules

  • New exercise


  • Some slight adjustments to the concept text

Vexing Vehicle Purchase

Conditionals if

  • Some slight adjustments to the concept text

ternary operator

  • Some slight adjustments to the concept text

conditional guard

  • Some slight adjustments to the concept text

Cal’s Custom Sign Shop

  • More test cases

Characters and String

  • Rename Characters to String and Characters since the current name is miss leading
  • Some adjustments to the concept text


  • Reduce the number of tasks
  • Remove parts that use filter
  • Give more of a story to the exercise


  • Expand the concept text with more ways to create arrays and how to use them
  • Remove mentions of looping

The 1st Rule of Poetry Club

  • More test cases
  • Fewer tasks


  • Slight changes to the concept text

String methods

  • Cover more than 1 method
  • Renamed from String compontents

String Indexing

  • Expand the concept
  • More examples


  • New exercise


  • Explain swiftly how to create a range
  • Explain basic how to use them and some methods around them


  • New exercise

For loops

  • Moved concept to a new exercise
  • Expand with looping over ranges and how to use stride.

Santas Swifty Helper

  • Add one more task
  • More test cases


  • Explain that they can be used as return values of functions

Lasagna master

  • A few extra test cases
  • Improve exercise text
  • Have more practice with inout parameters & default parameters

Default parameters

  • Improve concept text

Variadic parameters

  • Improve concept text

Inout parameters

  • Improve concept text

More looping (TBD)

  • How to loop with where
  • How to loop with enumeration
  • How to loop with tuples
  • Zip

Slice sizing

  • Improve test cases to better handle edge cases
  • Improve the story of the exercise


  • Improve concept text

High score board

  • More test cases
  • Fewer tasks
  • Remove sorting of tuples
  • Changes to the instruction to sound a bit more interesting


  • Minor changes to the concept text

Master mixologist

  • Slight modifications to tasks to better fit conditional switch

Reapet & while loop

  • Combine reapat and while loops into one concept

Conditonals switch

  • Move to while exercise

###Control transfer

  • Renamed from Contro transfer

Double-Null0111: Closures Are Forever

  • Improve the instructions

  • Have a task that involves implimenting a closure expression on a function in the stdlib

  • More test cases


  • Improve on example
  • Add a few more stdlib functions as examples

Shorthand Argumments

  • Slight changes to concept text

Nested functions, Function overloading (TBD)

  • Teach how and when to use nested functions and function overloading

Nested functions

  • Move to its own exercise
  • Improve concept text

Function overloading

  • Move to its own exercise
  • Improve concept text

Secret Agent Double-Null0111

  • More test cases
  • One more task

Higher Order Functions

  • Slight changes to concept text

Escaping functions

  • Slight changes to concept text

Ellens alien game

  • New exercise


  • Split Classes and struct
  • Explain init
  • Move self and methods to classes

Windowing system

  • Restructure the exercise to be easier to follow
  • More stub code
  • Expand on Value and reference types in the introduction


  • Explain the difference between classes and structs
  • Slight changes to concept text
  • Drop parts that is now mentioned in the class concept

Value and reference types

  • Move some parts to classes

Log lines

  • Improve the instructions


  • Update the concept text

This remake will be rather large so if you would like to help with either contributing or reviewing would that be very appricated.


@Meatball This post is awesome. So clear, useful and focussed on getting something done!

Really a huge thank you for the time and effort you put in to creating this! :blue_heart: