iOS iOS Programing Training

orbitalpunk

macrumors 6502
Original poster
Aug 14, 2006
459
202
I would like to learn iOS development. Are there any good online sites that offer a full ciriculum, from introduction to advanced. I have no prior programing knowledge. Any suggestion would be very helpful.

Thanks
 
  • Like
Reactions: rhinecharles1

casperes1996

macrumors 601
Jan 26, 2014
4,386
2,232
Horsens, Denmark
Would you like iOS programming specifically, or programming generally, but applied to iOS.

I think Swift Playgrounds is quite good for learning. Seems made for kids so slow at times, but very good.

I personally learned with the textbook Objects First with Java, and the Java development environment BlueJ, later transitioning to Intellij. Now that's obviously Java, but knowing general programming will make it so much simpler. Once you know software architecture and general programming, you can easily apply it to new languages. I recently jumped from Scala to Swift back to Java and it all just flows. Adapting takes very little time.

I can recommend the aforementioned book and Swift Playgrounds on iPad. I can recommend just reading Apple's documentation; That'll guide you through it all very well with code samples, guides and more theoretical material all available.
I don't recommend Udemy courses and such. I took a "complete iOS 10 development course" on Udemy once, and it taught bad code habits and not really proper programming, just cobbling together APIs to get a user interface working, but not anything structured that'd be maintainable.

I recommend taking code challenges as you learn and get better. LeetCode is good for this; Supports almost all languages and has many difficulty levels.

iTunes U also has programming courses; Specifically the Standford one is quite good.

In fact, I feel like the free options are basically all better than the paid options strangely
 

orbitalpunk

macrumors 6502
Original poster
Aug 14, 2006
459
202
Hi, yes, I am interested in just iOS development. My concern in older lessons is it not being updated to the latest version of Swift and I didn't want to learn older or depreciated code. Are their any publishers of books that make really good training for novices?
 

casperes1996

macrumors 601
Jan 26, 2014
4,386
2,232
Horsens, Denmark
Hi, yes, I am interested in just iOS development. My concern in older lessons is it not being updated to the latest version of Swift and I didn't want to learn older or depreciated code. Are their any publishers of books that make really good training for novices?
That's what I'd call the advantage of general programming skills. It doesn't really get outdated.

As mentioned, I think a lot of the free material is actually superior to the paid stuff, so Apple's own documentation (books can be found in iBooks, and documentation on the web and through Xcode), and Swift Playgrounds is a good, albeit slow moving, training system for newcomers to code.

When you start your learning projects, make it throwaway and not your dream app from the start. You'll make many mistakes along the way that'll make your first few attempts impossible to manage quickly.
As mentioned I think there are, or at least were, good resources on iTunes U and YouTube, especially from Stanford, but I don't know if there are any Swift resources. I used it for Obj-C and Java mostly.

What is your end goal with wanting to learn? If you want to eventually do it professionally, either freelance or for a company, I would recommend a different path than if it's a personal project. Because in the case of professional aspirations you should also really look into design patterns and software architecture. Probably a good extra for a personal hobby too, but less important.

My advice is to start by learning code syntax before starting to focus on iOS specifically. Swift as a language is platform agnostic, so start by learning the language, not the frameworks that each platform uses. Again, Apple's book "The Swift Programming Language" is a good and thorough explanation, though probably more aimed at people experienced already. They have a more beginner friendly variant that I can't remember the name of. And Playgrounds for iPad is very friendly.
Download sample projects through developer.apple.com or Xcode and see if you can read and understand the code and follow the guides in the documentation. Especially the SwiftUI guides are absolutely excellent, but using SwiftUI does limit you to iOS 13 (and other new platforms).

Even if you're stone set on learning Swift and nothing else, I might even still recommend Objects First with Java. It's a very beginner friendly book, it teaches good object oriented design, and Swift is, at least in part, still an object oriented language, and you can take what you learn and translate it to Swift. The general principles are relatively universal, even if some things have smarter alternatives on Swift, but the process of learning to translate from one language to another could be helpful too.

And there's no shame in looking things up. I can tell you that "real programmers" spend a lot of time looking up things. None of us can remember every API. And you're also always welcome to ask me on here if you end up in trouble. My best advice for now though is just to get started and get your feet wet. Doesn't matter what you choose to start with, cause in the end you'll find it's circular dependencies all the way down. Everything relies on knowing something else, so you just have to get in the loop, and keep learning and things will gradually start making more sense as you continuously fill in the gaps of understanding.
A good mathematical foundation also doesn't hurt. Understanding the difference between a Set and a List for instance.
 

Amazing Iceman

macrumors 68040
Nov 8, 2008
3,923
1,504
Florida, U.S.A.
I would like to learn iOS development. Are there any good online sites that offer a full ciriculum, from introduction to advanced. I have no prior programing knowledge. Any suggestion would be very helpful.

Thanks
This may be your best bet. You could wait until the price drops (to about $10.00 or so):

 

casperes1996

macrumors 601
Jan 26, 2014
4,386
2,232
Horsens, Denmark
This may be your best bet. You could wait until the price drops (to about $10.00 or so):

I would advice against it. I haven't tried that one in particular, but before I started studying computer science at university, I took two courses like it on Udemy, including an "iOS x Complete App Development Course" thing, hosted by a Rob something. Did I make apps, sure, yes. But what was taught was horrible coding practices that taught loads of bad practices that leads to very unmaintainable code, and that would never be acceptable in any git pull request. If you want to properly learn development, don't take an "iOS Development course" or an "Android Development course" or whatever. Learn programming. Learn software engineering design patterns. Then learn the SDK once you know how to write code. These courses try and teach you a framework before you know how to code, which is the wrong way around.
At least the ones I've tried.
 
  • Like
Reactions: TopherMan12

TopherMan12

macrumors 6502a
Oct 10, 2019
501
458
Atlanta, GA
I would advice against it. I haven't tried that one in particular, but before I started studying computer science at university, I took two courses like it on Udemy, including an "iOS x Complete App Development Course" thing, hosted by a Rob something. Did I make apps, sure, yes. But what was taught was horrible coding practices that taught loads of bad practices that leads to very unmaintainable code, and that would never be acceptable in any git pull request. If you want to properly learn development, don't take an "iOS Development course" or an "Android Development course" or whatever. Learn programming. Learn software engineering design patterns. Then learn the SDK once you know how to write code. These courses try and teach you a framework before you know how to code, which is the wrong way around.
At least the ones I've tried.
I agree. Probably the most valuable course I had when getting my Masters in Computer Science was focused on design patterns. That was about 12 years ago, but I still employ many of the principles I learned writing code today. iOS classes on Udemy are going to teach you more on how to use Xcode than how to program and that is an entirely backwards approach. Anyone who wants to learn to code and code really well need to learn the fundamentals. This makes learning to program on any specific target platform so much easier.
 
  • Like
Reactions: casperes1996

Amazing Iceman

macrumors 68040
Nov 8, 2008
3,923
1,504
Florida, U.S.A.
I would advice against it. I haven't tried that one in particular, but before I started studying computer science at university, I took two courses like it on Udemy, including an "iOS x Complete App Development Course" thing, hosted by a Rob something. Did I make apps, sure, yes. But what was taught was horrible coding practices that taught loads of bad practices that leads to very unmaintainable code, and that would never be acceptable in any git pull request. If you want to properly learn development, don't take an "iOS Development course" or an "Android Development course" or whatever. Learn programming. Learn software engineering design patterns. Then learn the SDK once you know how to write code. These courses try and teach you a framework before you know how to code, which is the wrong way around.
At least the ones I've tried.
I know which course you are referring to, and you are correct about it.
But this particular course is very well prepared. You may be able to see the course Outline.
 
  • Like
Reactions: casperes1996

casperes1996

macrumors 601
Jan 26, 2014
4,386
2,232
Horsens, Denmark
I know which course you are referring to, and you are correct about it.
But this particular course is very well prepared. You may be able to see the course Outline.
Fair enough. I would say the courses I took were well prepared by the speakers as well though... The material just wasn't good for learning programming. But it was well prepared, bad material.
The course outline still leaves me semi-sceptical, but it does have some parts that make me optimistic, so it may be alright anyway. It does have sections on design patterns and learning swift properly, not just chugging everything into a single view controller class, so that at least seems positive. It may very well be a worthwhile course, but I still think the following holds true:

I agree. Probably the most valuable course I had when getting my Masters in Computer Science was focused on design patterns. That was about 12 years ago, but I still employ many of the principles I learned writing code today. iOS classes on Udemy are going to teach you more on how to use Xcode than how to program and that is an entirely backwards approach. Anyone who wants to learn to code and code really well need to learn the fundamentals. This makes learning to program on any specific target platform so much easier.
It may not be as attractive to learn to write a bunch of code that prints to the Terminal or passes unit tests, as it is to dig into a visual framework like UIKit with Interface Builder straight away. But if you get too hung up on the visuals too early, and thinking Interface Builder before you think code structure and such, you'll have a harder time down the road. Where as doing it the other way around more quickly makes you able to adopt MVC thinking and construct good class/struct hierarchies rather than ones only based on visual, on-screen actions.

Though again, the course may be fine and very much worthwhile, especially if it also tries to teach good coding practices. And anything that just gets you writing code is a better way of learning than waiting for the perfect learning path anyway. As long as you get started with something it doesn't matter if the path is sub-optimal. At least you're on a path.

Like TopherMan12 though I think learning design patterns is one of the best things you can do for yourself if you want to learn programming. Doesn't matter if you learn them for Java, Swift, C++ or whatever. The fundamentals are the same. And so many of the common design patterns are found all over the place in a framework like UIKit. Or the Android SDK... Or .NET. Or any other framework for that matter. So it aids you both in understanding the frameworks and in writing maintainable and flexible code yourself. And you'll learn the lingo, so when another programmer says "We should probably use a decorator here" you know what they're on about.

Of course learning design patterns comes after understanding a language's basic syntax and semantics. And the language isn't that important. If Apple platforms is the end goal, might as well learn Swift. But I stress that learning Swift != learning iOS programming. Building an iOS app isn't just writing Swift code. You write for the UIKit framework. And learning UIKit is great! But it's rocky ground to start on and what you learn might quickly get deprecated. Swift has reached source stability as a language. Learning it will last. New features may come but what you learn will stay relevant. Same with design patterns.

I'm currently writing a Civilization style game. I have 2830 lines of Java or something like that currently. There's still no GUI. But I know it works because I have a whole bunch of tests. I'll add the GUI for it over the next two-three weeks, and for that I'll of course use a framework. But currently, there's actually very little of what that game code does that comes from somewhere else. I have a third party random tile generator which I've adapted to fit with my game world interface, and there are some test stuff from the hamcrest library. Aside from that (and standard library) there's not really anything imported. And the point here isn't that it's bad to import libraries or using a framework. In fact, it's excellent to do so. The point is that programming is about more than knowing a specific platform SDK.

So in the end, again, haven't taken the course and there certainly are good sounding aspects to it, but anything aimed specifically at a certain platform I think is inherently a flawed approach. Unless your aim really is nothing but making a tiny quick and dirty app for that single platform for a quick hobby project. - If you want to know or get good at programming. Learn a language and design patterns instead of a platform SDK and then you don't need an explanation of the SDK. You just look up the documentation and Google what you need. And at that point you'll know what you need.
Though again, taking it isn't a bad idea, cause any way of getting started with something is better than hesitating for a better place to start. Just code something. Anything.
And as my professor always says, "Happy Coding"
 
  • Like
Reactions: TopherMan12