[HN Gopher] CS193p: Developing Apps for iOS
       ___________________________________________________________________
        
       CS193p: Developing Apps for iOS
        
       Author : rangoon626
       Score  : 521 points
       Date   : 2021-02-10 16:14 UTC (6 hours ago)
        
 (HTM) web link (cs193p.sites.stanford.edu)
 (TXT) w3m dump (cs193p.sites.stanford.edu)
        
       | sylens wrote:
       | Has anyone dipped their toe into this course at all? I wrote a
       | very, very simple Android app several years back and have been
       | intrigued by iOS development since the introduction of SwiftUI,
       | but I'm not sure if there is material I should be familiar with
       | before attempting this
        
         | pvg wrote:
         | The pre-reqs are roughly 'you know a programming language and
         | have access to a Mac'.
        
           | sylens wrote:
           | Cool, thanks.
        
       | elliekelly wrote:
       | Since this is posted here I'll ask a question that has been
       | bugging me for the last year: Who does the captions on these
       | YouTube videos? Is it automated? I ask because every CS193p video
       | starts with the same opening scene/music and the caption
       | describing the music is different on _every single one_. Is this
       | an auto-caption algorithm just getting it wrong? Or is there a
       | person having fun behind the scenes waiting for someone like me
       | to notice and spend an irrational amount of time wondering what
       | happened? I feel like it has to be a person, right? YouTube 's
       | captioning wouldn't give 12 different results.
       | 
       | Edit- For anyone curious, here's how the music is described in
       | the captions at the beginning of each lecture:
       | 
       | 1. regal music
       | 
       | 2. mellow ambient music
       | 
       | 3. light music
       | 
       | 4. gentle music
       | 
       | 5. air whooshing
       | 
       | 6. gentle music (turns out there is _one_ repeat)
       | 
       | 7. peaceful music
       | 
       | 8. [no description]
       | 
       | 9. ethereal music
       | 
       | 10. celestial music
       | 
       | 11. serene music
       | 
       | 12. dramatic music
        
         | blintz wrote:
         | Stanford hires students to transcribe all classes that are also
         | available through SCPD. My suspicion is that some bored student
         | out there is having some fun.
        
         | jacurtis wrote:
         | YouTube automatically transcribes captions for its videos. So
         | that is why they are so funny sometimes.
         | 
         | As a YT creator, it is possible to upload your own captions if
         | you have any transcribed, which will then be used in place of
         | the automatic ones. But 99.9% of YT videos are using automatic
         | captions.
         | 
         | Edit: Ok, I started watching the first video in this series and
         | these are manually uploaded captions. So Stanford got the
         | videos transcribed and manually uploaded the captions to
         | Youtube. I wonder if various students did the captioning. So
         | each student described the music differently. I laughed because
         | the first video describes the music as "Regal Music".
        
           | reaperducer wrote:
           | _I wonder if various students did the captioning_
           | 
           | It's possible. But there are plenty of companies that do
           | subtitle transcription pretty cheaply.
           | 
           | Local TV newscasts used to pipe the scripts from their
           | TelePrompTers into the closed captioning encoder, but that
           | wasn't good enough when the law changed in the late 90's
           | because then there wasn't any text for interviews or weather
           | segments.
           | 
           | Now you can hire a company like Denver Caption that will have
           | someone dial into a special phone line at the TV station and
           | transcribe the content in real time, sending it directly back
           | to the station's encoder.
           | 
           | This is why when more than one person is talking, you can see
           | in the text how the person captioning gets overloaded. Or
           | they might use the wrong form of a word or phrase that would
           | be easy to pick if someone was watching video, but easy to
           | get wrong if they're only listening to audio over a phone
           | line.
        
         | LolWolf wrote:
         | Oh, these are (mostly?) manual (often done by students working
         | with SCPD, if I recall correctly). Any student can sign up and
         | record for a class after some basic training, which I think can
         | also include CC'ing some parts of it.
         | 
         | It is definitely someone just having a bit of fun :)
        
           | abawany wrote:
           | I think you are right - people sometimes have too much fun
           | with subtitles: videos from
           | https://www.youtube.com/technologyconnections typically
           | subtitle the jazz at the end of the videos with a relevant
           | adjective (e.g. 'cool jazz' or something for a video on HVAC
           | operations.)
        
             | notRobot wrote:
             | I know for a fact that Alec either transcribes those videos
             | himself (not hard to do from a script he already writes for
             | himself), or gets it done by someone else before uploading
             | the video.
             | 
             | I'm any case, they're always uploaded at the same time as
             | the main video.
             | 
             | Also, YouTube recently removed the ability for individual
             | users to contribute to captions of creators. There was a
             | thread on HN about it.
        
             | reaperducer wrote:
             | _people sometimes have too much fun with subtitles_
             | 
             | If you watch WKRP In Cincinnati on MeTV, the subtitled
             | lyrics for the closing theme are different every time.
        
         | unculture wrote:
         | I have a feeling that there is a chance that this comment has
         | made some anonymous subtitle transcriber with a sense of humour
         | very happy.
        
         | izacus wrote:
         | The YT automatic captions are marked as such and are usually
         | easily distinguishable because the subtitles appear word-by-
         | word instead of whole lines at once.
         | 
         | My guess is that those are manual.
        
           | [deleted]
        
           | mikepurvis wrote:
           | My partner worked for a bit as a transcriber on Rev, which I
           | believe is the source for a bunch of these-- they have a
           | turnkey option for "caption Youtube video X":
           | https://www.rev.com/
        
         | pokx wrote:
         | Given the precision of things like ponctuation, and certain
         | words like ViewModel being correclty spelled (instead of "view
         | model" for example), those captions are probably manually
         | edited.
        
         | ihuman wrote:
         | The course's videos have options for both "English" and
         | "English (auto-generated)" captions. The non-generated one is
         | uploaded by whoever uploaded the video.
        
       | mrweasel wrote:
       | Does anyone know of a good course to get started on AppleTV
       | development?
       | 
       | I've tried getting started with a small hobby project multiple
       | times, and I get something working, but the documentation I can
       | find doesn't really help you get into more advanced stuff.
        
         | ru552 wrote:
         | The course linked here is a good one. It teaches SwiftUI and
         | Swift which are what you will use to develop on AppleTV.
        
         | randomifcpfan wrote:
         | TvOS is 90% the same as iOS, and has almost no viable
         | application market besides video streaming apps. Unfortunately
         | that means there are almost no docs or classes on programming
         | it. The occasional WWDC presentation is all there is.
        
       | fuadnafiz98 wrote:
       | I don't have a mac, why is it to be so hard for someone like me
       | to learn ios development :(
        
         | themacguffinman wrote:
         | Definitely not suggesting that it's ideal, but if iOS dev is
         | important to you have you considered setting up a Hackintosh or
         | a macOS VM [1]? Typically macOS Hackintoshes/VMs have annoying
         | issues or requirements that make it unstable for full-time
         | desktop use, but if you're just trying to use the simulator and
         | the Xcode build tools, maybe it's enough?
         | 
         | [1] For example (I am not associated with the website):
         | https://www.soupbowl.io/2020/04/macos-in-virtualbox/
        
         | [deleted]
        
         | slipper1 wrote:
         | This is by design to gatekeep only rich people. For the rich,
         | by the rich, of the rich.
        
           | ru552 wrote:
           | This is a pretty dramatic take. You can get a brand new mac
           | mini with an M1 for <$1000. The price drops significantly
           | (<$500) if you get a refurb or pick up a used one on ebay.
           | $500 may still be a lot of money, but it's not "rich" money.
        
         | ornornor wrote:
         | It is quite a hassle indeed. As far as I know, you need:
         | 
         | - a Mac (with a recent enough version of Mac OS)
         | 
         | - an iPhone with a recent enough iOS
         | 
         | - a 99$/year (iirc) Apple developer account
         | 
         | These things might be a given for people in SV but it's quite a
         | big upfront cost for most people outside of HCOL areas.
         | 
         | Unless I'm mistaken and you can do without a Mac? But I seem to
         | recall you need to use iCode (or whatever apple's IDE is called
         | ;)
        
           | ru552 wrote:
           | The GP's question was about learning IOS dev. For that, you
           | only need the Mac. There is a simulator built in to Mac dev
           | tools so you don't have to have an iphone. The developer
           | account also isn't needed to learn. You only need the
           | $99/year account to publish apps to the app store.
        
             | otachack wrote:
             | I think you also need the dev account if you want to run
             | apps on a physical phone, but it's been awhile since I
             | tried.
        
               | jeffreyrogers wrote:
               | You can just use your Apple ID (I think that's what it's
               | called), which is free. Some of the features are only
               | available if you have the $99/year account.
        
               | steve_taylor wrote:
               | You can side-load builds onto your iPhone/iPad and they
               | expire after a while (maybe 30 days).
        
       | divtiwari wrote:
       | Is there an Android equivalent of such a course? CS193A doesn't
       | have official videos and resources like this one. Any other
       | university course?
        
         | dont__panic wrote:
         | Also interested in this. I've explored a few Android courses,
         | but most online content I've tried so far hasn't really given
         | me the "college lecture" vibe that I'm looking for.
        
         | IG_Semmelweiss wrote:
         | Im also interested in this as well
        
       | MichaelMoser123 wrote:
       | Has anyone succeded to make a living from app purchases? I am
       | really interested to follow up on it, just dont know if it will
       | be. enough to cover my frigging expenses. (Main question is: How
       | much is left after all the other guys get their due)
        
         | armadsen wrote:
         | My full time job as an iOS developer is for a company that
         | makes 100% of its income from app purchases. Mostly up front
         | (our app is a plain old paid app), but we do have a couple in
         | app purchases for optional extra "pro" features.
         | 
         | That was true of my last developer job too, where I was
         | (primarily) a Mac developer. There, most of our sales were
         | direct, ie. not on the Mac App Store (we did have some MAS
         | income).
         | 
         | That said, it's pretty hard to become successful through app
         | store sales alone, and you definitely can't rely solely on the
         | app store to do your marketing, promotion, etc. The app store
         | is a distribution channel, and if you get lucky, you can get
         | promotional value out of it, particularly if Apple features
         | your app, but it doesn't replace traditional marketing
         | strategies.
        
         | UK-Al05 wrote:
         | I think in the early days it used to be common...
        
       | emptyparadise wrote:
       | I could've sworn that a lot of Stanford iOS courses were already
       | on iTunes U.
        
         | Austin_Conlon wrote:
         | It's in the Podcasts app now since iTunes U is discontinued.
        
           | bori5 wrote:
           | I don't see this one, but do see earlier ones dated 2010
        
       | kardos wrote:
       | Is it weird that a /university/ is offering this course on how to
       | work with a specific commercial product? Shouldn't this be the
       | domain of Apple itself or a company that specialises in training?
        
         | bredren wrote:
         | Apple has a lot of programming related courses and tools. The
         | docs, and their relative quality has been discussed a lot here.
         | 
         | But in general universities have been teaching the tools of
         | specific industries for a long time. Sometimes entire
         | departments or buildings are sponsored by specific companies or
         | programs underwritten as "industry-academic partnerships" when
         | the research aims are aligned with strategic goals of a
         | particular company.
         | 
         | For example, Oregon State University's College of Forestry has
         | a Tallwood Design Institute:
         | 
         | "Its core tenets are the importance of industry collaboration,
         | through outreach, education and feedback from professionals."
         | 
         | So, teaching a particular framework may be more explicit, but
         | it isn't unusual activity.
         | 
         | http://blogs.oregonstate.edu/collegeofforestry/2019/04/09/ta...
        
         | acomjean wrote:
         | Its not completely uncommon. Sometimes its very specific the
         | tooling you use. In this case the fact that this knowledge is
         | going to benefit one particular company might be seen as
         | problematic. You aren't going to use these skills in Linux or
         | Windows development.
         | 
         | A lot of programming classes utilized specific tech (The
         | Extension school at the University I work at teaches classes on
         | React and Vue and Laravel, R, Python....) These are cross-
         | platform tools and generally free.
         | 
         | I think it can be useful to have this knowledge out there. The
         | parts of it that are good might end up in Open Source projects
         | or give people ideas of different ways of doing things.
        
         | yardie wrote:
         | It's par for the course. When I was in university you had to
         | submit papers in MS Word, Excel, or Powerpoint. Computational
         | Math courses were either Mathematica or Matlab. Engineering
         | courses were AutoCAD, Revit, and Solidworks. And programming
         | migrated away from STL C++ to VS C++. The free, opensource
         | equivalents weren't quite there yet.
         | 
         | Using proprietary software/tools is not the worse thing
         | universities have done (looking at you $700 biology dept
         | textbooks).
        
           | mgbmtl wrote:
           | When I was in university, we had to submit working algorithms
           | in C, Java or whatever the prof chose, but we didn't learn
           | the language in class. The prof would show snippets of code,
           | but never discuss the language itself. Same for Word/Excel.
           | There were books at the university library if needed.
        
             | yardie wrote:
             | My CS experience was the same. We saw snippets of code in
             | class. But I enjoyed CS193 much more. Just being able to
             | follow along, as they debug and step through it was a much
             | more cohesive experience to me than "here's a bit of code,
             | to learn more go read the book after class." It was
             | difficult for me to learn that way.
        
         | tester756 wrote:
         | It's always been like that
         | 
         | Excel, Power Point, etc.
        
         | Gorbzel wrote:
         | Huh. Lots of different perspectives out there...
         | 
         | - Is it weird that there's barely any training of practical
         | software engineering in a university setting as it is, and now
         | this question posits that one of the great durable examples of
         | such a course is somehow against the norm?
         | 
         | - Is it weird that a community would train someone in methods
         | and concepts using the technologies invented up the street?
         | 
         | - Is it weird to think that after decades of deeply-rooted
         | institutional ties between Apple and Stanford that they
         | wouldn't have a genuinely beneficial relationship and respect
         | for one another?
        
           | [deleted]
        
           | jeroenhd wrote:
           | It depends what you expect from your education. I'd
           | personally expect a university to focus on the academic side
           | of computer science rather than teaching typical practical
           | "busywork". The theory is what I expect to count in a
           | university, the practice is just a nice side effect for
           | testing the theory. Others expect a university to just teach
           | you how to be a software dev as best as possible.
           | 
           | I don't believe that Apple is the best at teaching people
           | proper coding techniques for their platform; they have
           | trouble keeping their API documentation up to date, I don't
           | expect them to be that great at teaching people how to use
           | them. Different approaches taught by different institutions
           | are often a great way to improve your software design as
           | well, because if you only learn from a single track then you
           | can easily become too blinded by how things should be done to
           | think of how things can be done. So, different places
           | teaching how app development works rather than letting Apple
           | be the guide towards the platform is a good thing in my eyes.
           | 
           | I can understand the ties behind the Stanford connection, but
           | I would expect a university to at least design a course to be
           | platform-neutral. Focussing a course on extending the very
           | closed app store ecosystem from an educational institution
           | feels sketchy to me.
        
             | ronyeh wrote:
             | The core curriculum focuses on theory with lots of projects
             | to apply what you learned.
             | 
             | CS193 classes are optional and are sometimes designed/lead
             | by grad student lecturers who are interested in that topic.
             | 
             | It is clear that there is a demand by Stanford students for
             | this class. If someone wanted to design and teach a mobile
             | dev course that surveyed android & ios, html5 mobile dev,
             | and mobile UX issues, they could do so. They could call it
             | CS193m or something.
        
         | DavidAdams wrote:
         | When I was an English major we studied a bunch of commercial
         | products, and we had to buy them from huge corporations.
         | Sometimes the authors of those products were alive enough to
         | actually receive a royalty, sometimes not.
        
           | acomjean wrote:
           | I had to buy HP32s calculator as an undergrad. That thing is
           | great but pricy for a university student.
           | 
           | I imagine for this class owning a mac is a minimal
           | requirement.
           | 
           | I think your talking about books though.. I didn't like it
           | when Profs used there own books.
        
         | jefflinwood wrote:
         | Apple has its own app class curriculum available, but this
         | Stanford class predates it by quite a few years.
         | 
         | If you want to learn about mobile application development, you
         | have to pick a specific platform to target, and anything other
         | than mobile web is going to be commercial.
         | 
         | Ideally, the things students learn in the class aren't just
         | various APIs, but instead how to build a product, work as a
         | team, and solve problems.
         | 
         | FWIW, I teach a very practical class in mobile application
         | development at a university.
        
         | Dig1t wrote:
         | Yes, I so agree with this sentiment. Also I feel a little bad
         | for students at Stanford who actually take this class in
         | person. It seems a little weird that these students come to
         | this world class institution where leading minds are doing
         | cutting edge research, and they are paying exorbitant tuition
         | to sit in a class and learn about how to string simple API
         | calls together. Most of this knowledge can be obtained by just
         | reading the documentation and tutorials on various websites.
         | 
         | I'm sure it makes sense for some students, but it just kind of
         | seems like a waste of money to me for most people.. It's good
         | that it's free now.
        
           | mturmon wrote:
           | You're focusing on the apparent triviality of the coursework
           | ("learn about how to string simple API calls together ...
           | just reading the documentation and tutorials on various
           | websites") versus the stellar skills and knowledge of the
           | faculty.
           | 
           | This applies to a lot of 1xx classes anywhere! In particular,
           | foreign languages, or beginning art classes.
           | 
           | My wife went to art grad school at UCLA. Her advisor (whose
           | competence is beyond amazing, e.g.
           | https://art.famsf.org/adrian-saxe) taught an undergraduate
           | ceramics class, and one of his chores was to bust on his
           | students who made bongs as their class project. Which he did
           | with good humor. (Broke in the kiln, how about that!)
           | 
           | What can you say? Learning happens in all kinds of ways?
        
           | superbcarrot wrote:
           | What you're describing would be a problem if they were
           | studying _only_ stuff that they can learn from docs and
           | tutorials. But I 'm sure that not every class is like this
           | one and the students are getting plenty of exposure to theory
           | and deeper knowledge in various fields.
           | 
           | Universities need to balance out the argument that you're
           | making with the argument that CS education doesn't prepare
           | people for having an actual job.
        
           | MiSeRyDeee wrote:
           | I mean majority of the knowledge is online and open sourced
           | nowadays, even if the most cutting edge technology,
           | especially in CS field.
        
           | minhazm wrote:
           | It's not like this is a required class. You still have to
           | take the required set of theory classes. This is just an
           | optional elective for students to take if they want to learn
           | iOS development.
           | 
           | At the end of the day the day if you want to create a startup
           | or even just get a job out college, taking practical courses
           | like iOS development will put you in a much better position
           | than spending all of your time taking theory classes.
        
         | sircastor wrote:
         | Universities are walking a tightrope right now. It used to be
         | they'd teach you domain knowledge and theory and you'd figure
         | out application elsewhere. The expense and demands of college
         | have meant (in many ways) ensuring that they can hit the ground
         | running, so to speak. Do courses like these provide practical
         | skills along side the their theory courses.
        
         | reaperducer wrote:
         | _Is it weird that a /university/ is offering this course on how
         | to work with a specific commercial product?_
         | 
         | Not any more weird than my old college offering courses in Java
         | and .NET-related things.
         | 
         | Or high schools that teach people how to use Microsoft Word.
         | 
         | Or a trade school teaching people how to use specific types of
         | machinery only made by one company.
         | 
         | Or secretarial schools that only taught people how to use IBM
         | Selectrics.
        
         | closeparen wrote:
         | You can't really teach "mobile engineering" in abstract like
         | you can with databases or computer vision or whatever. The only
         | real way to do anything hands on is with one of the two
         | commercial platforms.
         | 
         | In 30 years maybe there will be an academic/open source
         | "teaching OS" for mobile like there is for desktop Operating
         | Systems classes today.
        
           | Drew_ wrote:
           | > You can't really teach "mobile engineering" in abstract
           | like you can with databases or computer vision or whatever.
           | 
           | Sure you could. "mobile engineering" would just be a study of
           | solving computer science problems with relatively low
           | resources, a finite amount of power, etc. You don't need to
           | make iOS/Android apps to study this. Many lessons I've
           | learned while solving problems on mobile apps can be easily
           | transferred from platform to platform. They weren't Android
           | or Chrome specific for example.
        
             | closeparen wrote:
             | What low-resources device are you going to actually program
             | though?
        
         | filoleg wrote:
         | On a higher conceptual level, I agree with your premise in
         | full. In this specific scenario, however, I don't think it
         | applies.
         | 
         | Let's imagine you want to teach your students a course on
         | native mobile development. How would you do it without turning
         | it into a "course on how to work with a specific commercial
         | product", given that your only two relevant choices are Android
         | and iOS, and both are commercial products?
        
         | JCharante wrote:
         | My university has been offering seminars on how to use Matlab
         | for years. They also offer a course on getting you proficient
         | in SolidWorks. I get your point that it should be offered by a
         | company that specializes in training, but it's nice when
         | universities go beyond pure theoretical concepts and teach
         | things that can be used for side-projects.
        
           | armadsen wrote:
           | I'll go a step further. When I was in college, as an
           | electrical engineering major, we were _required_ to take a
           | Matlab course in our first year. Matlab was used fairly
           | heavily in courses where it was useful throughout the rest of
           | my major.
        
           | mhh__ wrote:
           | Matlab code is still not the same as writing Apps for a
           | locked in ecosystem - The company that owns matlab wants
           | matlab everywhere, Apple wants everywhere to be in iOS
        
         | seshagiric wrote:
         | If it helps someone be better prepared for the job market then
         | why not? Should colleges stop teaching Java or C# because they
         | are 'owned' by commercial entities?
        
           | vincnetas wrote:
           | Java or C# is just a tool to teach CS concepts. Teaching
           | iPhone development is more specialized and knowledge is less
           | transferable.
        
             | [deleted]
        
         | ronyeh wrote:
         | I went to Stanford (albeit as a grad student).
         | 
         | The CS193* classes are electives for the undergrad CS majors. I
         | think this one is popular simply because lots of Stanford
         | students want to make apps for the phone they have in their
         | pocket.
         | 
         | The core curriculum is based around algorithms, data
         | structures, theory, discrete math, etc etc that you expect from
         | a top university in CS. They use a variety of languages like
         | python, java, lisp, C, etc to illustrate these concepts through
         | class projects.
         | 
         | Learning the SwiftUI API is not a required part of the core
         | curriculum at Stanford.
        
         | userbinator wrote:
         | I think it's weird from the perspective of Apple being a
         | notoriously closed ecosystem - I have worked in CS teaching in
         | the past and Linux/BSD and other FOSS was highly preferred over
         | even Windows.
        
           | mhh__ wrote:
           | People suspend their principles when Apple dangle a new toy
           | in front of them
        
         | wly_cdgr wrote:
         | Should Princeton stop using Java in their CS curriculum because
         | Java is a commercial product?
        
           | mhh__ wrote:
           | As if there aren't fully open source Java implementations?
        
         | r00fus wrote:
         | About as unusual as my Uni teaching based on Sun Java or
         | Microsoft Visual Studio back in the 90s...
        
         | heavyset_go wrote:
         | I agree with the sentiment, but I believe this is an elective
         | class. When I looked, the school I went to had electives for
         | tools like AutoCAD, Adobe tools Photoshop and Premiere, Python,
         | Android development, MySQL etc. If students or professors had
         | interest in learning or teaching about a specific set of tools,
         | often they'd offer classes on them for a few semesters as long
         | as there was interest.
        
         | gumby wrote:
         | I also think it's weird too but decided it's my
         | problem/snobbery even.
         | 
         | Universities have a bunch of roles and one of them is to teach
         | skills you'll need in a given job. While some of those skills
         | are truly general (problem solving, certain mathematics,
         | thermo) you still learn the ones most common in your
         | discipline. When you start a job as a new graduate you should
         | have some familiarity in the tools and language of your
         | discipline -- what units are used, how people talk (different
         | disciplines can use different terms for the same thing), and
         | yes, the most important tools. When I was an undergraduate we
         | used Bridgeport mills (yes, it was pre CNC -- they were
         | installed the very next year) because those were the common
         | tools.
         | 
         | Many of the things I learned back then are obsolete, but I
         | realize that most of the time was spent on the stuff that has
         | lasted: diff eq, thermo, "deep skills". However I could not
         | have been of any use to any employer if I didn't know (in my
         | case) how to program a Lisp machine.
        
       | lwigo wrote:
       | Can't wait to see all the same apps popping up on GitHub.
        
         | qntty wrote:
         | Same! I love watching people learn new things.
        
         | mushishi wrote:
         | Here's the one I made after watching those lectures:
         | https://github.com/EvidentSolutions/toodim
        
       | jb1991 wrote:
       | Hasn't this always been free? I've taken it twice in the past for
       | free. When it was on iTunes University.
        
       | omarhaneef wrote:
       | Haven't there been free iphone dev courses from stanford for free
       | for over a decade? I recall iTunesU hosting them, and perhaps
       | Coursera/EdX, and their own website etc.
       | 
       | Which is great, of course, but is this different?
        
         | dang wrote:
         | Thanks--I've changed the title now. Submitted title was
         | "Stanford Makes iPhone Development Course Free".
         | 
         | Submitters: " _Please use the original title, unless it is
         | misleading or linkbait; don 't editorialize._"
         | 
         | https://news.ycombinator.com/newsguidelines.html
        
         | iscrewyou wrote:
         | From the article: " Stanford has made these lecture videos
         | available to all by posting them on its YouTube channel (links
         | below). This website was set up to give everyone access to the
         | supporting material that was distributed to students during the
         | quarter (homework, demo code, etc.)."
        
           | DavideNL wrote:
           | > the supporting material
           | 
           | This was _also_ present in the itunes-u courses in the past
        
         | bredren wrote:
         | Yes. I went through the course in one it's earliest releases.
         | 
         | I'm not sure if all of the assignments were posted then, and
         | the site wasn't as good.
        
         | herbturbo wrote:
         | Yes I learned iPhone development in 2010 by watching Stanford's
         | CS193P course on iTunesU
        
       | Audiophilip wrote:
       | The title is misleading, the lecture videos and materials for
       | that course have always been publicly available.
        
       | fattypouch wrote:
       | I've always wondered about Open Courses... do students get mad
       | when a course they paid for is published for free on Youtube?
        
       | iruoy wrote:
       | I'm sure this is great content, but the usage of Comic Sans for
       | the slides really brings that first impression down.
        
         | nightcracker wrote:
         | For what it's worth Comic Sans supposedly is an excellent font
         | for dyslexic people. So at the cost of looking professional
         | your content becomes available for more people (or that's what
         | some believe - I don't know of any peer-reviewed study on its
         | readability).
        
         | rangoon626 wrote:
         | There is something funny about it being an Apple centric course
         | that is using comic sans
        
         | ludwigvan wrote:
         | I don't think it is Comic Sans. Probably Chalkboard:
         | 
         | https://en.wikipedia.org/wiki/Chalkboard_(typeface)
         | 
         | http://www.identifont.com/differences?first=Chalkboard&secon...
         | 
         | If you want to see a prominent Computer Scientist using Comic
         | Sans, you need to watch Haskell creator Simon Peyton Jones'
         | talks:
         | 
         | https://www.reddit.com/r/haskell/comments/1bd1ia/spj_and_com...
        
       | roperzh wrote:
       | A lot of people are mentioning that this is old news, but that's
       | not the case for me: thanks for sharing!
        
       | dfabulich wrote:
       | The submitted title of this page ("Stanford Makes iPhone
       | Development Course Free") is misleading, and should just be the
       | title of the page, "Stanford CS193p - Developing Apps for iOS."
       | 
       | Stanford's iPhone development course has been free online for
       | more than 10 years.
        
         | dang wrote:
         | Thanks! Fixed now.
        
       | aero- wrote:
       | What would be an advantage going for swiftui vs. React Native for
       | a startup? I feel like the cross platform nature of React would
       | be more beneficial for starting a new platform or business. Of
       | course swift will operate better for ios but is the tradeoff that
       | great with React Native?
        
         | reasonabl_human wrote:
         | Interested as well. I've heard a number of tech companies use
         | react native on iOS targets which allows for easy reuse of
         | components developed for web UI, and any mobile... certainly
         | where I'd lean given the choice based on current information.
         | 
         | There was an engineering blog post from discord a number of
         | months ago discussing their use of react native bottlenecking
         | iOS app performance, and they ended up converting some key
         | react data structures to native iOS constructs within the react
         | native app and crushed those bottlenecks. My takeaway was that
         | developer ease and reusability should be prioritized until you
         | hit a performance wall at scale such as discord did, at which
         | point you'll have the money to pay other engineers to optimize
         | the important parts of you don't have the time or know-how ;)
        
         | jamil7 wrote:
         | The advice I give roughly to clients is to go native if your
         | business heavily depends on mobile. Otherwise React Native is
         | pretty viable, especially for small teams of generalists. In
         | terms of SwiftUI, most businesses aren't building entire apps
         | in it yet.
        
         | spideymans wrote:
         | React Native will get you to an MVP way faster than
         | native/SwiftUI development. However there is the massive risk
         | that you'll find yourself shackled to React Native if you want
         | to grow the capabilities of your app to beyond what React
         | Native can accommodate. React Native make development faster,
         | but traditional native development is the safer option in the
         | long term.
        
         | samirsd wrote:
         | i've never used react native but regularly use react for the
         | web and find swift/swiftui development to be faster and less
         | complicated overall
        
       | GekkePrutser wrote:
       | Hmmm nice! I did this years ago when it was called "Coding
       | Together". Was a really good course!
       | 
       | PS: It was free even then (same course number and everything) so
       | not sure what's changed here :)
        
       | guilhermetk wrote:
       | A big shout out to Paul Hegarty, one of the best teachers I've
       | ever had, even though I've only attended his online classes.
        
       | randomifcpfan wrote:
       | Old news? These excellent videos have been posted on Stanford's
       | YouTube channel for 8 months:
       | https://youtube.com/playlist?list=PLpGHT1n4-mAtTj9oywMWoBx0d...
        
         | rudedogg wrote:
         | Yeah these have always been free. I got excited thinking maybe
         | it was a more recent class being published, but it's not.
         | 
         | Anyway, they're good!
        
           | randomifcpfan wrote:
           | Oh, I see. The new news is that the course materials other
           | than the videos have now been posted.
        
       | steve_taylor wrote:
       | Paul Hegarty does a great job of refreshing this course every
       | year so students are taught Apple's latest tech even when the old
       | stuff isn't deprecated. I've been coming back to CS193p lectures
       | for years and they're always up to date.
        
       | chewmieser wrote:
       | I learned iOS development from their courses on iTunes U many
       | years ago now... Good that they're continuing with it though.
       | 
       | Edit: here's one source from 2011 -
       | https://news.stanford.edu/news/2011/november/itunes-apps-cla...
        
       | amelius wrote:
       | Lesson 1: do exactly as Apple tells you. Don't try to build your
       | own web engine. And don't write apps that are not suitable for
       | children.
        
       | ffggvv wrote:
       | this was always free. when i first learned ios development like
       | 5+ years ago i took this course on youtube
        
         | Me1000 wrote:
         | Yeah, it seems like they make this course free a lot.
         | 
         | I remember almost 10 years ago watching Evan Doll instruct this
         | class. I think I watched it as a video podcast at the time.
         | 
         | To be fair, I'm sure the course changes from year to year.
        
         | amatecha wrote:
         | I guess the significant part now is that it's the latest Spring
         | 2020 version of the course that's now available for free?
         | Pretty cool!
        
       | wly_cdgr wrote:
       | It all looks trivial until you actually start building
        
       | newbie578 wrote:
       | Off topic, but looking at the curriculum of the course and the
       | more I read about native development, the more I love Flutter.
       | There are so many barriers to entry for native development, to
       | develop and publish a simple app is such a complex procedure that
       | I respect anyone even trying to go Native first without any prior
       | knowledge.
       | 
       | Flutter on the other hand, is a pure joy. Almost anything you
       | need UI-wise is prepared, and you can just customize it the way
       | you want (try implementing a ListView in native vs Flutter). For
       | the big majority of today's apps native is just not neccessary,
       | most apps don't need bluetooth access or some other specific
       | service.
       | 
       | Especially from the business side, Flutter is way better. You
       | need to maintain only one codebase which results in less need for
       | resources. And you are way faster, you can iterate like crazy and
       | push out an MVP...
       | 
       | And when stable Flutter Web arrived, it is game over...
        
         | dimmke wrote:
         | I agree - native development is bad. I had an iPhone app that I
         | built using native Apple stuff and it was miserable. And the
         | whole time you're struggling with their buggy UI framework you
         | can't even take solace in that you're learning useful skills
         | because it's all specific to Apple development. From the
         | programming language to the frameworks/APIs you use.
         | 
         | It's so domain specific that IMO it's not worth trying to do
         | that kind of work unless it's your main career. I ended up
         | taking the app I had built down because I kept getting support
         | requests for bugs I didn't know how to fix and the idea of
         | going into the code to add more features filled me with a sense
         | of dread. The app was doing somewhat well too, it had about
         | 1000 DAU.
         | 
         | I built another app for the CDC in React Native, which has its
         | own foibles but is overall much easier. I'm not sure how
         | successful Flutter will be overall because you can't leverage
         | outside skills and you have to learn a different language.
        
         | nezaj wrote:
         | FWIW, my buddy and I built and launched a simple iOS app
         | (Export Health!) in the App Store in two weeks using SwiftUI.
         | The whole app is basically one file and under 1MB including all
         | the iOS extras. Both of us are professional engineers but only
         | had minor exposure to iOS before building this app.
         | 
         | A few years back I built internal apps at work using React
         | Native. Warts aside, it was a great dev experience and was able
         | to re-use code 100%. However, having to ensure all was well
         | with both iOS and Android (and indeed sometimes there were edge
         | cases) slowed me down.
         | 
         | SwiftUI and the Combine framework provides a similar dev
         | experience I felt using React Native. Moreover, app previews in
         | XCode make it straightforward to paint different application
         | states and iOS settings. Building for one platform also reduces
         | the quality check surface, allowing you to spend more time
         | focusing on product.
         | 
         | If cross platform is a necessity from the onset (e.g. internal
         | app for work where all employees need access but may have
         | different phones) then starting with non-native makes sense.
         | However I personally recommend anyone looking to build a
         | product as an app to focus on iOS first and use SwiftUI. I
         | reckon you will move faster, have a smaller code base, and a
         | better app. All of which are conducive to finding PMF if you
         | intend to make a business out of your product
        
         | triztian wrote:
         | As an iOS engineer with native and flutter experience, not
         | needing access to hardware and OS specific APIs is a BIG
         | assumption, I used to not need access until I needed them and
         | it was somewhat painful most of the time, either support was
         | not there how we needed it or some APIs were awkward to use.
         | 
         | I'd also say that the write once support on all devices is
         | definitely not a 100% thing. There is definitely a lot of
         | tweaking for adding support to specific platforms and devices
         | (think iPad vs iPhone vs Android Phone vs Android Tablet). I've
         | also found it that its a lot easier (when compared to native
         | development) to create code that needs to be heavily refactored
         | out when adding support for additional devices while also
         | making sure to not braking things on other platforms. This last
         | point complicates development because then you are forced to be
         | familiar on how to test and debug on each platform, making sure
         | that changes or issues fixed on a specific one don't break the
         | other ones; this for sure adds a ton of development and testing
         | time, specially when you go beyond just android phones and
         | iPhones.
         | 
         | Where flutter has shined for us though has been for internal
         | tools that we deploy and for which the UI is not designer-
         | driven or that don't have stringent design and performance
         | requirements.
         | 
         | Now don't get me wrong; I'm well invested in flutter but it
         | does not come without its compromises, specially on iOS being
         | second in line support after Android. It definitely gets you
         | quicker to market with an MVP on more platforms compared to
         | pure native development.
        
           | gman83 wrote:
           | The idea is that over time as the ecosystem matures, you will
           | need less and less need for platform channels because there
           | will be more plugins available on pub.dev. Personally I think
           | the Flutter team is taking too much on their plate porting it
           | to Linux/Mac/Windows/Web at the same time. I would rather see
           | them make the iOS and Android implementations rock solid and
           | create great plugins for hardware & OS specific APIs.
        
         | gumby wrote:
         | Upvoting you because the downvoting was unfair.
         | 
         | Nevertheless I think your position is naive; most interesting
         | and engaging apps need more information than you can get from a
         | generic tool alone.
        
         | krts- wrote:
         | It feels like SwiftUI, and other native tools, are embracing
         | the advantages of some of these other cross platform tools:
         | declarative, rapidly-iterable, abstracted.
         | 
         | I feel SwiftUI markedly lowers the 'barrier to entry'.
         | 
         | Crossplatform tools may serve your purpose better, but I think
         | it's unfair to say that, at least for SwiftUI, native
         | development may not be as 'joyful'. A list view in SwiftUi is
         | List {}.
        
       | yardie wrote:
       | Did this course almost a decade ago when it was ObjC based. Never
       | really pursued iOS development (a big mistake on my part) but
       | with Swift and SwiftUI I'm game to give it another try.
        
         | balls187 wrote:
         | I was an ios dev via Objective-C in another life.
         | 
         | Swift and SwiftUI is such a fundamental shift in experience for
         | the better.
         | 
         | There are a few esoteric things based on full interoperability
         | with ObjectiveC and the cocoa API's, but for most apps, it's
         | really straight forward.
        
       | ABeeSea wrote:
       | Looking at the slides, this course is based on SwitftUI which
       | only came out in the last year or two while previous versions
       | used UIkit.
        
         | rangoon626 wrote:
         | Exactly! This is the best resource on SwiftUI I have found yet!
        
       | jonas21 wrote:
       | I'm so glad that Paul Hegarty is teaching this. Not only does he
       | know the material through experience (I think he was an early
       | employee at NeXT and continued on at Apple), he also explains
       | things really well and works through lots of examples. It's also
       | clear that he enjoys teaching the course, which makes a big
       | difference.
       | 
       | I watched an earlier iteration of the course, and it's the reason
       | I know iOS development today. I don't often write reviews (and
       | certainly not on HN), but I absolutely have to recommended this
       | course for anyone interested in learning mobile development.
        
         | Austin_Conlon wrote:
         | Minor nitpick, he was a VP at NeXT but not early on and didn't
         | go to Apple.
        
       | williesleg wrote:
       | I guess they need more developers, eh? Nice job Tim Apple!
        
       | LegitShady wrote:
       | I'm assuming you need a Mac computer to develop ios applications?
       | I have an iphone and ipad but I won't purchase their computers.
        
         | hamburglar wrote:
         | You can now do it on AWS MacOS instances
        
           | mcraiha wrote:
           | But in long run it is cheaper to buy used Mac Mini for XCode
           | builds.
        
         | janaagaard wrote:
         | > I'm assuming you need a Mac computer to develop ios
         | applications?
         | 
         | You do, if you want to code in Objective-C or Swift (likely the
         | languages tought in Stanford's lectures). But React Native and
         | Expo's EAS services (expo.io/eas) has made it possible to avoid
         | buying a Mac. EAS requires a subscription and you also need an
         | Apple Developer sunscription to publish to their AppStore.
        
         | jonas_kgomo wrote:
         | I guess you could use Flutter to do hybrid applications
        
         | gumby wrote:
         | A side point but as you're OK with the i* devices I'm curious
         | what it is about the macs that lead you to "won't".
         | 
         | (Not trying to start a flame war here)
        
           | LegitShady wrote:
           | My work provides me with an iphone (which i only use for
           | work). I like the hardware but the OS is super limiting.
           | 
           | I bought an ipad pro for art - mostly Procreate (is that
           | sad?) but I also use a 16" wacom display tablet attached to
           | my desktop when I'm not mobile. I also use it to play with
           | music recording on mobile with a small midi keyboard and some
           | synth apps. The ipad hardware is really nice. The OS is super
           | limiting to the point of frustration. If there were alternate
           | non-apple hardware of similar quality for what I do on ipad,
           | I would likely switch. As it is the device is just for
           | 'playing' creatively.
           | 
           | For a computer, I regularly run software with no mac ports
           | and I'm not a big fan of the way apple is fundamentally anti
           | consumer in its approach to product repair, OS design and
           | controlling what software can be run on devices. I don't want
           | to invite that sort of intrusive tech control over my life in
           | the future by buying into now as a principle computing device
           | when its more 'open' (even though apple is fundamentally not
           | open) I've seen this kind of thing coming as apple gets more
           | and more aggressive with its policies.
           | 
           | Apple's move to their own silicon only makes me think they
           | walled garden will get an even more impenetrable wall, and
           | I'm just not interested. (The hardware is good but the OS is
           | limiting, and it seems likely to me that the longer apple
           | makes their own silicon the less likely it will play nicely
           | with anyone else. Apple wants you to buy their shit and they
           | don't care if it doesn't work with anyone else's).
        
         | mikestew wrote:
         | Technically, no; my first App Store release lo those many years
         | ago was developed using a Hackintosh. That was like ten years
         | ago, though, so maybe something has changed that requires, say,
         | the Secure Enclave or something.
        
           | wing-_-nuts wrote:
           | I wonder how macs move to custom chips will impact the
           | hackentosh community going forward. I can see the day when
           | intel is simply no longer supported as a platform.
        
             | rdsnsca wrote:
             | Apple Silicon will kill the hackentosh. I expect Intel to
             | have 5 years of support left, based on the PPC to Intel
             | shift. One more system upgrade then 3 years of security
             | updates.
        
               | wing-_-nuts wrote:
               | Maybe by then mac hardware won't be required to write ios
               | apps? That's always felt rather monopolistic to me. It
               | would be like MS refusing to deploy anything that wasn't
               | written on a surface, or google refusing gcp deployments
               | from anything but a chrome book.
        
               | mikestew wrote:
               | _That 's always felt rather monopolistic to me._
               | 
               | It always felt like a smaller company that didn't want to
               | support multiple operating systems. But Apple's not all
               | that small anymore, right? Well, the fallback to that
               | argument is the long-standing habit of pretending other
               | systems don't exist (Mac vs. PC commmercials
               | notwithstanding). Best I recall, one will rarely (if
               | ever) hear Apple comparing, say, iOS to Android. Nope,
               | it's just "iOS is awesome, and here's why". Given that,
               | why port your dev tools to a system that you'd rather
               | pretend didn't exist in the first place?
        
       | frsandstone wrote:
       | I kickstarted my career 8 years ago by going through an old
       | version of this course online. Huge props to Stanford for making
       | it more easily consumable by others.
        
       | avipars wrote:
       | I took the swift course a few years ago. This is great for
       | beginners and not bad for android developers either
        
       | totaldude87 wrote:
       | i always admire the fact how the professors who teach
       | professionally, ease us into things while many youtubers struggle
       | to do so. Its not all about what you know, its more about how the
       | other person ..
        
       ___________________________________________________________________
       (page generated 2021-02-10 23:00 UTC)