Launching our first course
Programming with Swift: Fundamentals
(Updated )
Introduction
After many years of writing, I'm proud to launch our first course: Programming with Swift: Fundamentals
This is an introductory programming, aimed at students with no prior programming experience. In my experience, this is the hardest audience to write for, and writing this course was one of my career goals.
Features
Here's what makes this course unique:
- It uses the Swift programming language. Swift has a unique blend of features that makes it an excellent teaching language. This course would not be the same without it.
- It targets novices and only novices. New topics are introduced slowly, with great care, and plenty of exercises. Advanced topics are postponed to future courses.
- It adopts the principle of progressive disclosure and avoids forward references. Students should always feel confident about what they've learned so far, and should never get confused because a topic was only semi-explained or introduced too early.
- It includes a large number of exercises and challenges. This course doesn't just teach syntax; it focuses on building problem solving skills. The exercises are challenging, so mindless copy-pasting will not be sufficient to complete them.
- It introduces abstract concepts only after the student has enough experience under their belt to truly understand them. The exercises and challenges play an important role here.
- It emphasizes writing clear code, adopting best practices, and following a common coding style. Bad habits are hard to correct, so this course teaches good habits from the start.
- It goes beyond programming and includes an informal introduction to software analysis and design, so that students can learn how to tackle larger programming projects.
- It is fully platform-independent and can be completed on macOS, Linux, and Windows. Unlike other Swift courses, this course doesn't assume the student wants to be an iOS developer. It is part of a broader curriculum and lays the foundation for subsequent programming courses.
For more information, visit the course page or start reading.