Giter Site home page Giter Site logo

make-school-courses / mob-1.1-introduction-to-swift Goto Github PK

View Code? Open in Web Editor NEW
7.0 4.0 16.0 31.68 MB

Learn Swift by Building Games

License: MIT License

CSS 28.50% JavaScript 40.41% HTML 18.48% SCSS 12.41% Swift 0.20%
swift ios xcode oop enums conditionals collections swiftui debugging closures

mob-1.1-introduction-to-swift's Introduction

MOB 1.1: Introduction to Swift

Course Description

This class covers the foundations of Swift programming language. Students learn key concepts including variables, constants, keywords, conditionals, loops, data types, object oriented principles, and how to debug Swift in Xcode. Learning about these core concepts in mobile development will happen as students build games and simple apps in Swift and complete exercises online.

Course Specifics

Course Delivery: online | 7 weeks | 14 sessions

Course Credits: 3 units | 37.5 Seat Hours | 75 Total Hours

Learning Objectives or Competencies

Students by the end of the course will be able to ...

  1. Write Swift code using basic constructs and data types.
  2. Store and manipulate elements in Collections.
  3. Apply OOP & POP principles in Swift.
  4. Apply knowledge in Structs, Classes, Enums and other basic Swift types to build apps.
  5. Built basic interfaces using Apple's UI Frameworks.

Schedule

Course Dates: Wednesday, January 20 – Wednesday, March 3, 2021 (7 weeks)

Class Times: Monday, Wednesday at 2:45am–5:30pm (13 class sessions)

Class Date Topics
- Mon, Jan 18 No Class - MLK Day
1 Wed, Jan 20 Variables, Types & Functions
2 Mon, Jan 25 Optionals & Conditionals
3 Wed, Jan 27 Collection types & Control Flow
4 Mon, Feb 1 Structs & Enums
5 Wed, Feb 3 SwiftUI Pt.1
6 Mon, Feb 8 SwiftUI Pt.2
7 Wed, Feb 10 Classes + OOP
8 Mon, Feb 15 Intro to UIKit
9 Wed, Feb 17 POP
10 Mon, Feb 22 Closures
11 Wed, Feb 24 Basic Navigation
12 Mon, Mar Debugging & Review
13 Wed, Mar 3 Final Exam/Presentations

Assignment Schedule

Assignment Date Assigned Due Date Submission Form
Lab 1 Wed, Jan 20 Mon, Jan 25 Gradescope
Lab 2 Mon, Jan 25 Wed, Jan 27 Gradescope
Lab 3 Wed, Jan 27 Mon, Feb 1 Gradescope
Lab 4 Mon, Feb 1 Wed, Feb 3 Gradescope
Calculator App Wed, Feb 3 Wed, Feb 10 Gradescope
Magic 8 ball Wed, Feb 10 Wed, Feb 17 Gradescope
Pop Lab Wed, Feb 17 Mon, Feb 22 Gradescope
Final Project Wed, Feb 17 Wed, Mar 3 Gradescope

Tutorials

Projects

Class Assignments

We will be using Gradescope, which allows us to provide fast and accurate feedback on your work. All assigned work will be submitted through Gradescope, and assignment and exam grades will be returned through Gradescope.

As soon as grades are posted, you will be notified immediately so that you can log in and see your feedback. You may also submit regrade requests if you feel we have made a mistake.

Your Gradescope login is your Make School email, and your password can be changed at https://gradescope.com/reset_password. The same link can be used if you need to set your password for the first time.

Evaluation

To pass this course you must meet the following requirements:

  • Receive a passing score for all 4 labs (see each lab for rubric)
  • 100% completion of the Magic 8 ball tutorial (submit proof of working Magic 8 ball project)
  • Complete course project by receiving a passing score on the rubric
  • Receive a 70% or higher on the final summative assessment Study guide
  • Actively participate in class and abide by the attendance policy
  • Make up all classwork from all absences

Information Resources

Any additional resources you may need (online books, etc.) can be found here. You can also find additional resources through the library linked below:

Make School Course Policies

mob-1.1-introduction-to-swift's People

Contributors

amelinagzz avatar gordoneliel avatar ibirnam avatar soggybag avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

mob-1.1-introduction-to-swift's Issues

Lesson 3 Feedback

@amelinagzz - Feedback for Collection types & Control Flow

In Class Activity: I would break this into two activities: one for dictionaries/arrays, and one for sets/arrays. Put the first one after talking about Dictionaries, and the second one after talking about arrays

Would be good to show a comparison of for vs while, something like this but maybe a bit more engaging. happy to come up with this with you if you'd like

Lesson 8 Feedback

@amelinagzz - Feedback on Intro to UIKit

Keep us Updated: Instead of hard-coding versions in there you need to update each term (or each year, rather), tell them how to download the updates and where to go. That way you dont need to update the slides each time

Scenes: provide a visual aid here. You're talking about a very visual topic in this lesson, and there's a lot of text-only slides. show them what a scene is, rather than explaining it.

VC: Make it clear that VC means View Controller. For example, instead of saying "VC", say "View Controller (VC)", and then refer to it as VC after that

Views: These slides need visuals. It would be great to have one per slide to showcase what's going on, or a GIF may work even better if a static image isn't enough. Happy to talk through this with you more

Interface Essentials: What's going on here? Are you just going over docs? May be better to have an activity that requires them to implement it themselves using the docs

MVC: This probably needs more than 1 slide to explain, but maybe you're doing more in class? A cool idea would be to project this slide onto a whiteboard and then fill in the boxes with info! Curious what your thoughts on here as to what's worked.

Autolayout: again, needs images!! Show them the things, don't just talk about it!

Lesson 9 Feedback

@amelinagzz - feedback on POP

the lesson called POP in the syllabus, but called Protocols in slides. Which should it be? Stay consistent

put some comments on the FullName code slides

The car mini-challenge is the same as the one in the playground. consider removing from one of them

Otherwise great use of mini-challenges and jigsaw!

Lesson 4 Feedback

@amelinagzz feedback on Classes, Structs & Enums

Struct: Relate these to classes/objects they see in CS 1.1 (or later in the lesson), give them a good reference point

Methods: again relate that these are the same methods they use in classes in Python for CS 1.1

Classes: May want to start by introducing Classes first since they've seen these before. Then introduce Structs as a related topic

RAW VALUES IN ENUMS: No initialization of typeOfTea in the example. Make sure to show that to reduce confusion

Lesson 1 Feedback

@amelinagzz - feedback for Variables, Types & Functions

Swift Intro: Throw an image in here so it's not just text. Swift logo is fine

Playground Sections: Put screenshots of the different sections. Make one slide per section if you can't fit them all on one slide

Swap order of Variables and Constants slides. They know what variables are, so start them with something familiar and then show the new thing that's slightly different (constants)

Variable Naming: Show an example of camel case, don't just talk about it. Show the equivalent name in Python syntax (i.e. waterBottle vs. water_bottle)

Constants: explain what the let keyword means/what it's purpose is.

Variables - Swift Playground

  • Good to have a reminder of steps they need to take in order to properly open playgrounds (install xcode, install developer tools, how to "run" a playground, etc.)
  • for Crushing the block!, don't give them the code, just tell them what to do. Make them write the code themselves so they get practice
  • To me, this is really repetitive of the stuff you went over before. I like the practical aspect of it though, so this should either go before the TT, or interleave it with the TT (like do a chapter of the activity, brief TT, repeat). Can discuss this further if you'd like

Functions: Lots of text here, break it up with a basic function image. Something like this, or something a bit more creative

We can make it more readable if we use external names: need a better example, this one isn't distinct enough to make that big a difference to students

Return Values: good question here would be to ask them what the difference between print and return is.

Function Playground the first Experiment block is referring to something that doesn't exist, and the same with the paragraph after. Needs to be fixed.

Playground Activity: Similar to the above suggestion, instead of saving all the playgrounds until the end, I would interleave them. So for example, give your TT on tuples, then give them the Tuples playground to work through, then TT on type, playground on Type to follow, etc. Mix things up to keep engagement

Lesson 10 Feedback

@amelinagzz - feedback on POP 2 lesson

POP still not explained as an acronym, needs to be on the first lesson on this

RPG Game - README needs to actually become a README, but instructions. Also, answers are given away on each new page of the playground. Wonder if there's a better way so they dont just copy/paste or read through it but force them to work through it. May be better to hold the solutions and go over them in class instead of just giving to them. Can think on this, open to other ways to do this

Lesson 12 Feedback

@amelinagzz - feedback on Closures lesson

BACK TO THE GIFT - this could benefit from some visuals outlining the path! better than just reading the text, make some visuals outlining this analogy

Otherwise, lesson seems solid :)

Lesson 6 Feedback

@amelinagzz - Feedback on Building an iOS Game

** SKLabel:** Provide comments in the code snippets explaining what's going on

Combining Nodes and Touches: May want to switch this to an activity to get them to try it themselves. Give them hints like the documentation of which methods to use, but have them try it first before showing them the answer

FOR THE REST OF TODAY'S LESSON - be clear on what project you're referring to, link to the spec

Lesson 13 Feedback

@amelinagzz - Feedback on Debugging and Review lesson

Debugging Steps: provide examples of each of these steps. Maybe you do this on the board already, but if not, highly recommend making this more concrete for students

Concepts: same as above, give concrete examples to make it more memorable

Lesson 7 Feedback

@amelinagzz - Feedback on OOP

OOP: Instead of "attributes" say "properties" so that we're consistent with where they hear it elsewhere. Unless this is Swift nomenclature, in which case, say that attributes are the equivalent of properties in Swift. Same question/suggestion applies to "instance variables"

Creating an Instance: Make sure to explain that the Person() call is the actual instantiation. let eddy = is just assignment, and NOT part of instantiation. This was a big point of confusion in CS 1.1 in Term 1, so would be good to double down and drill in that point here

Super: Be clear that it calls the super-class method and then ALSO does the code below it in the function

Required / Convenience Initializers: provide more explanation to what these are and how we'd use them

Managing a Hotel - I'm curious how this activity went. Did students need lots of help/further explanation? If so we should make the instructions clearer. Secondly, I would make sure you dedicate time to go over the answer to the activity. Don't need to include it in your slides, but go over it during class to make sure everyone understands the application of the concepts.

Lesson 11 Feedback

@amelinagzz - Feedback on Basic Navigation lesson, mostly taken from lesson delivery feedback doc:

Note: Could only observe the first ~1hr of class

Liked the “forgetting what we went over” at the beginning, fun tactic to get them to participate in what they did last class

Liked that you went over and opened all the links, rather than just showing them!

UINAVIGATIONCONTROLLER could use a diagram, instead of you doing hand-motions. Will make it more visual/memorable

Suggestion: instead of reaching/pointing to things on the screen, consider highlighting elements with circles or some other shape that you can step through with animations or something like that

Suggestion: Still saying things are “easy” or “simple’!! Change your words to utilize ones more like the suggestions given in the MOB 2.2 feedback!

UNWIND SEGUE could benefit from some images outlining each step for reference. But you live-demoed it, so not essential

Suggestion: use short-links for things students need to download so they can easily get the code and not have to go to the slides

Suggestion: put a README for the starter code. Allows students to reference the requirements, and makes it so you don’t have to repeat yourself

Suggestion: throw in some smaller, bite-size activities during the teacher talk to give them some hands-on work before the big activities like rock/paper/scissors

Lesson 2 Feedback

@amelinagzz - Feedback on the Optionals & Conditionals lesson

Same feedback as Lesson 1, break out the Playgrounds and interleave them with the TT

If Statement Put some images in to break up the text. Utilize them for analogies as well. Like this one

Conditional Repl.it vs Playground there's some overlap between these two (i.e. they both do the FizzBuzz variation). Worth keeping both in here? Maybe just one or the other. Or make one of them different, not much variety right now

Optionals: this first slide doesn't really show how optionals are different from variables. Maybe showing the difference more clearly, show something like String?

Images can help here too, like this one

and the images in this blog post are great for showing unwrapping in addition to optionals in general

Unwrapping Optionals: Not clear that we're using the same fosterDog variable from before, so I forgot its name was Lentil. Needs a reminder somewhere here

Guard: Possible image you could use here

After Class:
Give links to Toggle: https://developer.apple.com/documentation/swift/bool/2994863-toggle
and to Pyramid of Doom: https://en.wikipedia.org/wiki/Pyramid_of_doom_(programming)

Lesson 5 Feedback

@amelinagzz - Feedback on Intro to Spritekit

Check-in - I like this a lot, I would encourage you to put these throughout more of your lessons. Not all of them, but keep them regular enough so that people get a chance to review

Nodes (Sprites): you describe what a Node is, but not what a scene is. Give that a 1 sentence description

Node Properties: Instead of having a giant wall of text, I would take each property with its name + description, and add a GIF showing how changing that property affects the Sprite. It would be a slide per property to avoid crowding (though maybe you could get 2 on a slide)

Creating a Sprite: Throw some images in there, you're building something entirely visual, show a picture of the sprite you create in the example

Running Actions: Show a video/image/GIF of this in action

Combining Actions: Shows GIF examples of each of these groupings, rather than just the diagram

Activity: No explanation or README for this activity. I have no idea what to do unless you or a TA is telling me. Make this more accessible by providing some direction/guidance

Starting our First Game: Same as above, though there are some directions given on the second slide. Provide a bit more context here, or at least build out a README for the starter code.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.