Apple's iTunes U course on Swift is watershed in high school computer science education

Posted:
in iPhone edited July 2015
In a groundbreaking first, Apple at this year's WWDC conference in June published an iTunes U course that provides educators with first party tools to teach the Swift programming language to high school students.




As CEO Tim Cook highlighted during the keynote, student interest in developing for the iOS platform has continued to grow over the past few years. At last year's WWDC, the youngest developer to win a student scholarship to the developer conference was 13 years old, and this year Cook noted that the youngest developer was 12 years old. For high school iOS instructors, this momentum is exhilarating.

However, until now those in the field have lacked a common set of learning outcomes, curriculum sequence and set of projects to use in teaching students how to develop apps. "Teaching App Development with Swift for High School Instructors" will prevent teachers from having to reinvent the pedagogical wheel and provide standardization in Swift programming instruction, which will benefit the entire developer community.

As an educator, I can't overstate how significant this is for me and other teachers who have been putting curriculum together from scratch. With this new course, Apple has systematized and provided materials for various aspects of app development, and all of those resources are now available to anyone for free.

Lesson plans, project files and GitHub sample code will now all be conveniently located in the iTunes U section of iTunes on the Mac or in the iTunes U app on iOS. And because it is an official Apple course, both teachers and students can be confident that best programming practices will be emphasized.




Reflecting the most successful trends in S.T.E.M. (science, technology, engineering and math) education today, this course has been designed around a pedagogical method known as "project-based learning." The curriculum is divided into five levels of instruction, with each aimed at a different and specific learning outcome.

Each level has several projects from which instructors can choose according to their own particular class needs. At the end of the course -- designed to be taught in one semester over 15 weeks -- students will be able to achieve 10 specific learning outcomes, from defining basic terminology to building a fully functional iOS app written in Swift. These goals are progressively achieved as students progress through each level's projects, which each have dedicated lessons that are designed to teach particular concepts through hands-on learning with Xcode.

In adfition, the lessons and exercises support particular College Board AP Computer Science standards as well as the ACM Computer Science Teachers Association.

Apple's course assumes that the teacher is familiar with building basic iOS apps and is comfortable with Swift. It also assumes that students have had some experience with object-oriented programming, such as Java, Python, or C++. Students are not, however, required to have prior experience with Swift. Yong Bakos, Professor of Computer Science at Southern Methodist University, is the iTunes U instructor.

Apple's release of a high-school focused iOS app development curriculum for Swift dovetails with its more recent educational partnership with IBM and signals that Cupertino is not only strengthening its commitment to student education, but ensuring that high school iOS teachers are well-equiped to train the next generation of developers.
«134

Comments

  • Reply 1 of 61
    scotty321scotty321 Posts: 313member
    Oh, okay, Apple... because soooooo many high school kids have prior experience with Java, Python, or C . SMH.
  • Reply 2 of 61
    asciiascii Posts: 5,941member

    I think it's important to first teach the concepts of computer science apart from any toolset. Then the student will have a clear separation in their mind between the science, and any particular vendor tools. If I was teaching high school CS I probably wouldn't use Apple tools, I would use a plain open-source text editor, and a teaching-oriented procedural programming language.

  • Reply 3 of 61
    Quote:
    Originally Posted by scotty321 View Post



    Oh, okay, Apple... because soooooo many high school kids have prior experience with Java, Python, or C . SMH.

     

    My school district and the three surrounding me all have CompSci STEM tracks focusing on Java. During a social gathering a few months ago, one of the principals asked me my opinion on what language they should add. I recommended Python since I tend to observe that more as the lightweight, entrepreneur option as compared to "enterprise-y" Java.

  • Reply 4 of 61
    rob53rob53 Posts: 2,007member
    Quote:
    Originally Posted by ascii View Post

     

    I think it's important to first teach the concepts of computer science apart from any toolset. Then the student will have a clear separation in their mind between the science, and any particular vendor tools. If I was teaching high school CS I probably wouldn't use Apple tools, I would use a plain open-source text editor, and a teaching-oriented procedural programming language.


    This might be nice but it won't keep a student's attention for very long. This is the instant gratification generation. Knowing what happens behind the scenes doesn't really matter. All that matters if getting the product out. Robots and canned applications rule so why use a text editor to learn programming (makes sense for someone called @ascii) when you can bypass all the basic stuff and get create an app right away? (only a little sarcasm but think about it a little...) If you're going to teach someone about computer design, do you give them a box of resistors, transistors, and capacitors (like I tinkered with growing up) or do you give them a computer simulator of some kind since very few devices are actually built using discrete components anymore? Computers build computers and robots build everything else. Kids nowadays are getting one to two years of college credit in high school, going into colleges as sophomores and juniors. The traditional methods for education are so last century (sorry, had to say it that way) so why shouldn't Apple present a programming class differently than it's been done in the past?

  • Reply 5 of 61
    rob53rob53 Posts: 2,007member

    I'm going to sound like a typical student here but I can't find this iTune U course. iTunes only lists the Stanford and Higher College of Technologies courses while nothing is listed under the Swift developer site. Any ideas?

  • Reply 6 of 61
    asciiascii Posts: 5,941member
    Quote:
    Originally Posted by rob53 View Post

     

    This might be nice but it won't keep a student's attention for very long. This is the instant gratification generation. Knowing what happens behind the scenes doesn't really matter. All that matters if getting the product out. Robots and canned applications rule so why use a text editor to learn programming (makes sense for someone called @ascii) when you can bypass all the basic stuff and get create an app right away? (only a little sarcasm but think about it a little...) If you're going to teach someone about computer design, do you give them a box of resistors, transistors, and capacitors (like I tinkered with growing up) or do you give them a computer simulator of some kind since very few devices are actually built using discrete components anymore? Computers build computers and robots build everything else. Kids nowadays are getting one to two years of college credit in high school, going into colleges as sophomores and juniors. The traditional methods for education are so last century (sorry, had to say it that way) so why shouldn't Apple present a programming class differently than it's been done in the past?


    I disagree that the theory of computer science is necessarily less interesting than concrete app development. I think for the smart students, dealing with the abstract ideas would be more arresting than writing one particular app for one particular platform.

     

    But I agree that the way education is done is in need of an overhaul, and iTunes U in general is a good idea. I guess the whole benefit of iTunes U is that it doesn't have to be one size fits all any more.

  • Reply 7 of 61
    wallymwallym Posts: 4member
    Theory is great to learn. It is great to understand what is happening under the covers. I find that people want to learn to solve their problems first and then learn what is happening under the covers. Take sorting for example, most people do sorting via an order by Claus oin a database query. Some will need to query on some objectrs locally. Start by sorting some records easily. Must start with a bible sort. Then show why the sorting algorithm matters, then show other sorting algorithms. Now you've shown several sort algorithms why the various algorithms matter.

    At the end of the day, teaching theory by itself is worthless. Teaching how to by itself is worthless. You have to know both how and why.
  • Reply 8 of 61
    Quote:
    Originally Posted by rob53 View Post

     

    I'm going to sound like a typical student here but I can't find this iTune U course. iTunes only lists the Stanford and Higher College of Technologies courses while nothing is listed under the Swift developer site. Any ideas?


    Go to iTunes Store and search "App Development: Teaching Swift" it's a top search and will get you there.  Then click on the blue booklet icon to get to the subscribe page.

  • Reply 9 of 61
    stevehsteveh Posts: 480member
    Quote:

    Originally Posted by scotty321 View Post



    Oh, okay, Apple... because soooooo many high school kids have prior experience with Java, Python, or C . SMH.

    As of, oh, 15-20 years ago high school programming classes where my son attended used Java as its main programming language. And it was a plain-vanilla suburban high school, nothing special.

  • Reply 10 of 61
    danielswdanielsw Posts: 905member
    Quote:
    Originally Posted by rob53 View Post

     

    I'm going to sound like a typical student here but I can't find this iTune U course. iTunes only lists the Stanford and Higher College of Technologies courses while nothing is listed under the Swift developer site. Any ideas?




    Just go to the iTunes store and type "Swift" in search. Scroll down to "Courses."

     

    Or download the iOS app "iTunes U" and then click on "Featured".

  • Reply 11 of 61
    danielswdanielsw Posts: 905member

    I've made numerous attempts over the years to learn Objective-C, but keep bumping up against unfamiliar terminology and the distinct lack of "action" definitions of such. Sure, there are verbose descriptions of parameters and properties, etc., but few or no clear explanations of what the hell you do with these damn "things." I'd like to see simple code examples with extensive annotations explaining exactly why and how you create a delegate, for example.

     

    Swift seems tantalizing, but if I still need to know Objective-C, then I'm still stuck there.

  • Reply 12 of 61
    solipsismysolipsismy Posts: 5,099member
    rob53 wrote: »
    I'm going to sound like a typical student here but I can't find this iTune U course. iTunes only lists the Stanford and Higher College of Technologies courses while nothing is listed under the Swift developer site. Any ideas?


    edit: I feel certain that linked to the Apple Education site since I found it with a Google Search, but it certainly does bring up the Stanford site, which is also an excellent course.
  • Reply 13 of 61
    rob53 wrote: »
    ascii wrote: »
     
    I think it's important to first teach the concepts of computer science apart from any toolset. Then the student will have a clear separation in their mind between the science, and any particular vendor tools. If I was teaching high school CS I probably wouldn't use Apple tools, I would use a plain open-source text editor, and a teaching-oriented procedural programming language.
    This might be nice but it won't keep a student's attention for very long. This is the instant gratification generation. Knowing what happens behind the scenes doesn't really matter. All that matters if getting the product out. Robots and canned applications rule so why use a text editor to learn programming (makes sense for someone called @ascii) when you can bypass all the basic stuff and get create an app right away? (only a little sarcasm but think about it a little...) If you're going to teach someone about computer design, do you give them a box of resistors, transistors, and capacitors (like I tinkered with growing up) or do you give them a computer simulator of some kind since very few devices are actually built using discrete components anymore? Computers build computers and robots build everything else. Kids nowadays are getting one to two years of college credit in high school, going into colleges as sophomores and juniors. The traditional methods for education are so last century (sorry, had to say it that way) so why shouldn't Apple present a programming class differently than it's been done in the past?

    Oddly, I kinda' agree with both of you ...

    @ascii, I agree with teaching the concepts separately form the toolset ... however, not in that order.

    @rob53, I agree that you need to grab and hold the student's attention from the gitgo ... then flesh out their knowledge with the concepts supporting it.


    For example, If you were going to teach hammers, I would begin by demonstrating how a hammer can:
    • break a piece of wood into two pieces
    • connect the pieces with nails
    • separate the pieces by removing the nails

    Then, I would flesh that out by discussing/demonstrating the jobs a hammer can do and the reason for the design of various specialty hammers:
    • ball peen for hammering/decorating metal
    • sledge hammer for knocking down walls
    • pick hammer for rock climbing

    And, of course, how to use a pliers -- when no hammer is available ;)


    I looked at the course materials including the code, Keynote presos, and course notes/prep for each module ...

    I spent about an hour, and was totally unimpressed. My grandkids would pay attention for 10 minutes, max ... then move on to something (anything) interesting.


    The absolute best Swift * training I've seen is Paul Hegarty's Stanford series!

    * Likely, Paul could teach any programming language. He has a great personality/presentation that includes cause and effect (reinforcement) sprinkled with supporting theory (when appropriate) ... He leaves you wanting more -- wanting to experiment, wanting to read/research on your own, wanting to create!


    My last thought re: this subject is that almost every lesson in the course should begin with a Swift Playground -- something reminiscent of Lattner's preso introducing Sift at WWDC 2014.

    Swift 2, and Xcode 7 offer many new features that could revolutionize the education process.
     
  • Reply 14 of 61
    danielsw wrote: »
    I've made numerous attempts over the years to learn Objective-C, but keep bumping up against unfamiliar terminology and the distinct lack of "action" definitions of such. Sure, there are verbose descriptions of parameters and properties, etc., but few or no clear explanations of what the hell you do with these damn "things." I'd like to see simple code examples with extensive annotations explaining exactly why and how you create a delegate, for example.

    Swift seems tantalizing, but if I still need to know Objective-C, then I'm still stuck there.

    You don't need to know Obj-C to write Swift code.

    There are cases where you might need to know both -- say getting a job maintaining/converting legacy Obj-C code ...

    The Apple/IBM Mobile First partnership appears to be totally New Swift code.
  • Reply 15 of 61
    SpamSandwichSpamSandwich Posts: 30,862member
    danielsw wrote: »
    I've made numerous attempts over the years to learn Objective-C, but keep bumping up against unfamiliar terminology and the distinct lack of "action" definitions of such. Sure, there are verbose descriptions of parameters and properties, etc., but few or no clear explanations of what the hell you do with these damn "things." I'd like to see simple code examples with extensive annotations explaining exactly why and how you create a delegate, for example.

    Swift seems tantalizing, but if I still need to know Objective-C, then I'm still stuck there.

    I attempted for several years to learn Objective-C and just couldn't grasp the concepts. I've determined that programming is just too abstract for me.
  • Reply 16 of 61
    alandailalandail Posts: 689member
    Quote:
    Originally Posted by ascii View Post

     

    I think it's important to first teach the concepts of computer science apart from any toolset. Then the student will have a clear separation in their mind between the science, and any particular vendor tools. If I was teaching high school CS I probably wouldn't use Apple tools, I would use a plain open-source text editor, and a teaching-oriented procedural programming language.


     

    Those are the last things I'd ever do.  You might as well start them with keypunch cards.

     

    Object oriented programming is the first thing any new programmer should learn.  Why start them with bad habits (procedural programming) that the next class has to break.

     

    And what is the point in using less than state of the art tools.  Xcode shows errors as you type them, playground lets you execute the code as you type it.

  • Reply 17 of 61
    alandailalandail Posts: 689member

     

    you realize that sends them to the Stanford course, not the course mentioned in the article, right?  Maybe I missed it, but I didn't see a link in the article.

  • Reply 18 of 61
    ybakosybakos Posts: 2member

    Thank you for the pretty accurate article describing Teaching App Development with Swift. Although many of the materials are on iTunes U, everything is available online at swifteducation.github.io, and all course materials are open source (repositories are on Github).

     

    Keep in mind that these are instructor-facing materials, and are designed for teachers who have some minimal experience with iOS app development and Swift, and for students that have some prior programming experience but who are new to Swift and iOS app development.

     

    There are many ways to learn, and there are many ways to teach.

     

    These materials take a "constructionist" approach to learning: you want to build an app, and I want to teach you programming, so let's build an app and we'll learn about programming along the way.

     

    It's just one approach.

     

    Instructors will find that the materials are designed with a significant amount of nuances that reveal many, many opportunities for teaching and learning. I'm really looking forward to hearing critical feedback from instructors and students who have worked with these materials in the classroom, to help continuously improve them. It's important for these materials to be a valuable, usable, fun and effective resource for educators and students. And this is just the start. ;)

     

    ----

    There are a few folks on this thread who have mentioned the challenges in getting started learning programming using the Apple stack. I would recommend working through a good book (my favorites are from Big Nerd Ranch). Or, try taking a look at the Level 1 WordCollage and SpaceAdventure lesson plans, and try working through them. Although these are for instructors, there's some value there for self-learners too.

     

    ----

    Disclaimer: These are just my own personal opinions written on a Sunday afternoon.

  • Reply 19 of 61
    ybakosybakos Posts: 2member
    Thank you for the pretty accurate article describing Teaching App Development with Swift. Although many of the materials are on iTunes U, everything is available online at swifteducation.github.io, and all course materials are open source (repositories are on Github).

    Keep in mind that these are instructor-facing materials, and are designed for teachers who have some minimal experience with iOS app development and Swift, and for students that have some prior programming experience but who are new to Swift and iOS app development.

    There are many ways to learn, and there are many ways to teach.

    These materials take a "constructionist" approach to learning: you want to build an app, and I want to teach you programming, so let's build an app and we'll learn about programming along the way.

    It's just one approach.

    Instructors will find that the materials are designed with a significant amount of nuances that reveal many, many opportunities for teaching and learning. I'm really looking forward to hearing critical feedback from instructors and students who have worked with these materials in the classroom, to help continuously improve them. It's important for these materials to be a valuable, usable, fun and effective resource for educators and students. And this is just the start. ;)

    ----
    There are a few folks on this thread who have mentioned the challenges in getting started learning programming using the Apple stack. I would recommend working through a good book (my favorites are from Big Nerd Ranch). Or, try taking a look at the Level 1 WordCollage and SpaceAdventure lesson plans, and try working through them. Although these are for instructors, there's some value there for self-learners too.
  • Reply 20 of 61
    I attempted for several years to learn Objective-C and just couldn't grasp the concepts. I've determined that programming is just too abstract for me.

    I was fine with Visual Basic. C++ was absolutely awful and I dropped out of the course (it didn't help I would get the programs right and their stupid "autograder" software would mark it wrong because it didn't fit "the right way") and really don't have a desire to continue.
Sign In or Register to comment.