• Swift Accelerator Application 2023

  • Key Dates

    • Online briefing: 4 February (Sat), 10am. If you missed this, a recording is available at tk.sg/swift2023briefing.
    • Application deadline: 26 February (Sun), 11pm* 
    • Results release by email: 6 March (Mon) (by the end of the day)
    • First lesson (F2F at Apple): 11 March (Sat), 9am
    • Remaining lesson schedule is here.

    Please note that applications are officially closed. If you have a valid reason for submitting late, please email hello@swiftinsg.org to let us know, preferably before submitting. 

    Please read the information page before starting, as you may wish to gather your materials before beginning the application. Once you're ready, the form should take you under an hour to complete.

    About this form

    There are three parts to this application form:

    1. Aptitude assessment. This is the part where we test your programming knowledge, particularly in Swift.
      • Don't worry about becoming super familiar with Swift. You should be able to attempt the test as long as you have some knowledge of basic coding concepts.
      • If you'd like to brush up your knowledge of Swift before attempting this, you can download Swift Playgrounds on iPad or Mac, and try the Learn To Code puzzles.
      • Please attempt this section under exam conditions — do not discuss, look up the answers, or share your answers. Thank you for ensuring the integrity of the selection process.
    2. Self-Assessment and Video. You will be asked to submit a short video to introduce yourself.
    3. Portfolio (optional). Please submit any supporting documents or links that you think will help in your application, e.g. certificates, websites, videos, projects, or writing. You can submit these as file uploads or on a publicly-accessible website. 

    Please also note: This is a multi-page form. You may wish to sign up for a JotForm account to save your work and/or save your responses in the Notes app.

    Questions? Please email us at hello@swiftinsg.org.

    * The form will remain open past its official submission deadline, to allow for anyone facing technical difficulties to submit. Please email us (individually, or through your teacher) if you need to explain a late submission. To be fair to all applicants, we reserve the right to impose a penalty on late submissions.

  • About You

    The next few questions involve your personal information.

  • Schedule and Availability

    The course is about 180 hours long, including 100+ hours of content and 60+ hours of in-class project work. Please ensure that you are able to commit to at least 80% of the sessions, as you'll need that much time to build and publish your app.
  • The schedule below is tentative and subject to change. The items highlighted in light orange are weekdays; the timings highlighted in light red are afternoons. 

    We've tried our best to accommodate school schedules — if you can't make it for a few lessons based on school commitments, that's OK; just let us know. The key is to be caught up (we'll provide selected recordings), and to attend as many classes as you can before the project at the end of the year.

    This schedule is planned based on having all our classes in-person. We will also live-stream classes, so you can attend up to 50% of the lessons online if circumstances require (and if the session allows). Depending on safe distancing measures, or venue availability, we may also have to move lessons fully online. 

    Download a copy of the schedule: https://tk.sg/swift2023publicschedule 

  • Image
  • Part 1. Aptitude Assessment

  • This application form comprises 3 parts:

    1. Aptitude Assessment
    2. Self-Assessment & Video
    3. Portfolio (optional)

    Please attempt this part under exam conditions — do not discuss, look up the answers, or share your answers. Thank you for ensuring the integrity of the selection process.

    This part is further broken down into 2 distinct sections.

    • Logic-Based Questions
    • Design

    This is the part where we test your programming knowledge, particularly in Swift. Don't worry about becoming super familiar with Swift. You should be able to attempt the test as long as you have some knowledge of basic coding concepts. If you'd like to brush up your knowledge of Swift before attempting this, you can download Swift Playgrounds on iPad or Mac, and try the Learn To Code puzzles. 

    The test includes Single-Choice, Multiple-Choice, and Short Answer questions.

    • Single-Choice questions can only accept one answer.  
    • Multiple-Choice questions can accept one or more answers. You will lose marks for every correct option omitted or incorrect option included.
    • Short Answer questions will require you to type in a short text-based answer.
      • Certain questions may have multiple valid answers. You will only be required to enter one possible answer unless otherwise stated by the question.
    • Long Answer questions will have a word limit.
      • It is perfectly fine to be well below the word limit. The word limit is designed to ensure answers are concise.
      • You should not be trying to hit or get as close as possible to the word limit.

    The questions below are examples of the aforementioned question types. They are not meant to be filled in.

  • Part 1. Aptitude Assessment

  • Logic-Based Questions

    Part 1 • Aptitude Assessment • Questions 1 to 4
  • Question 1

    Edward, Oliver, Penny, Bambi, and Wally are planning to open a Hot Chocolate Cafe called Caffe Franke. The caffe serves hot chocolate with various different toppings that customers can pick out. 

    Bambi would like to create a price calculator to help automatically calculate the costs of each drink.

    Each drink costs $2 and each topping adds onto the price. A customer can select any number of toppings.

    Topping Price
    Whipped Cream $0.50
    Marshmallows $0.50
    Chocolate Chips $0.50
    Caramel Sauce $1.00
    Chocolate Syrup $1.00
    Nutella $1.00

    Bambi wrote the price calculator below, however, he realised that he is repeating a lot of code and wants to optimise it.

  • Image
  • Question 2

    To better understand how to make a perfect mug of hot chocolate, Wally is doing a research project to understand the ideal temperature for hot chocolate consumption. 

    He gathered 5 friends and served them hot chocolate at 10 different temperatures (ranging from 45℃ to 90℃). After which, he surveyed them to understand which one they liked best. Their responses are reflected in the table below.

    Name Ideal Hot Chocolate Temperature (in Celsius)
    Pommy 60.0
    Tommy 70.0
    Timmy 60.0
    Rommy 65.0
    Cookie 60.0

    Wally wants to write some Swift code to get the average ideal hot chocolate temperature in order to serve the best hot chocolate to his guests.

    In order to get the average temperature, he would have to sum all the temperature readings, and divide that by the number of readings, in this case, 5.

    He has written some code to do that below.

  • Image
  • Question 3

    Wally's research project concluded that the ideal hot chocolate temperature is 63.0℃ as the temperature is hot enough to release the rich flavors of the chocolate, but not so hot that it burns the tongue or causes discomfort to drink.

    Upon seeing the results, Penny wants to create a simple Swift app to allow the staff at Caffe Franke to determine if a mug of hot chocolate is good to drink based on the temperature. 

    However, Penny has encountered an issue with her code. For some reason, when the hot chocolate temperature input is exactly 63.0, it seems to say that it's too hot even when the temperature is perfect. 

    Penny has written some comments along the way to describe what each line of her code does. Take a look at Penny's code below and spot the line with the error.

  • Image
  • 0/50
  • Question 4

    Edward and Oliver are creating an automated reciept printer.

    In order to keep track of receipts, he is creating a data structure (struct) called Order. The struct allows him to create a "template" for each Order. However, he is unsure about which data types he should be using for each field in his reciept. 

    The receipt has 5 fields:

    • Customer's name
    • Order number, a running number with 1 being the first order and 100 being the 100th order
    • Whether or not there were customisations to the order
    • Subtotal, the cost of the hot chocolate with customisations
    • Total after GST: After adding GST, the final amount the user paid.

    Edward and Oliver know there are four data types in Swift they can use to store each variable, but they are unsure which they should use. Going online, they found the following information about data types in Swift:

    Data Type What Examples
    String A piece of text "Swift", "123", "text"
    Int A whole number 12, 20, 0, -1
    Double A decimal 3.14, 3.0, -100
    Bool True or false value true, false
  • Fill in the blanks below.
    struct Order {
    var customerName: *   
    var orderNumber: *   
    var hasCustomization: *   
    var subtotal: *   
    var totalAfterGST: *   
    }

  • Design

    Part 1 • Aptitude Assessment • Questions 5 to 6
  • Question 5 to 6

    Caffe Franke is planning to encourage customers to come back by building a brand new mobile app—Frankly. Frankly is designed to allow customers to order hot chocolate and earn points.

    Here are the list of features in the Frankly app.

    • View nearby Caffe Franke locations on a map
    • Order in advance and schedule a pick-up
    • Customise a hot chocolate order with a variety of toppings
    • Submit reviews and share hot chocolate creations with others on the app

    Caffe Franke showed the design to a focus group of 5 regular customers and found that customers did not like the app as they found it hard to use. A screenshot of the interface is provided below.

  • Image
  • 0/100
  • 0/50
  • Part 2: Self-Assessment and Video

  • This application form comprises 3 parts:

    1. Aptitude Assessment
    2. Self-Assessment & Video
    3. Portfolio (optional)

    Self-Assessment

    Rate your skills in the following areas—coding, design, and entrepreneurship.

    Important: You will not be penalised for any rating you give yourself here. Please be honest with your ratings and what you honestly believe. We will only be using this metric to create a good mix for the Class of 2023.

    In the video, you will be asked to justify the ratings you've given yourself.

  • Your task is to create a video introducing yourself. The video should:

    • Introduce yourself
      • Who you are
      • Why do you want to join the programme
    • Why did you give yourself the ratings above
      • Talk about any prior experience you may have had 
      • Talk about why you're passionate/interested in app development and coding

    Your video should be about 1 minute long, and the absolute maximum duration is 3 minutes. We will not watch, review, or take into consideration anything beyond the 3-minute mark of a submitted video.

    Our focus will be on the content of the video and not the video production quality — there's no need to edit your video in Final Cut to make it production-worthy. However, please ensure the video and audio are clear enough that we are able to understand what you say.

    You may need to look up the following to achieve this — take these challenges as part of the assessment:

    • How to record your screen on iPad/Mac, using the built-in recording tool or third-party tools, with sound
    • How to ensure your voice is clear and audible
    • How to record your iPad screen while on a Mac (optional) 
    • How to record your camera so we can see you narrate (optional)
    • How to export your movie file
    • How to compress your movie file for upload (our limit is 1GB, which should suffice, but feel free to compress if it doesn't affect quality)
  • function SvgDhtupload2(props) { return /* @__PURE__ */ react.createElement("svg", dhtupload_svg_extends({ width: 54, height: 47, xmlns: "http://www.w3.org/2000/svg" }, props), dhtupload_svg_path || (dhtupload_svg_path = /* @__PURE__ */ react.createElement("path", { d: "M40.213 10.172c1.897.21 3.68.738 5.35 1.58a15.748 15.748 0 0 1 4.374 3.242 15.065 15.065 0 0 1 2.951 4.533c.72 1.704 1.08 3.522 1.08 5.455 0 1.827-.28 3.654-.843 5.48-.562 1.828-1.379 3.47-2.45 4.929A13.39 13.39 0 0 1 46.669 39c-1.599.948-3.452 1.458-5.56 1.528H37.26a1.62 1.62 0 0 1-1.185-.5 1.62 1.62 0 0 1-.501-1.186c0-.457.167-.852.5-1.186.334-.334.73-.5 1.186-.5h3.848c1.44 0 2.75-.37 3.926-1.108a10.851 10.851 0 0 0 3.03-2.846 13.53 13.53 0 0 0 1.95-3.9 14.23 14.23 0 0 0 .686-4.321c0-1.582-.316-3.066-.949-4.454a11.623 11.623 0 0 0-2.582-3.636 12.857 12.857 0 0 0-3.742-2.478 11.054 11.054 0 0 0-4.48-.922l-1.212-.053-.37-1.159c-.878-2.81-2.292-4.998-4.242-6.562-1.95-1.563-4.594-2.345-7.932-2.345-2.108 0-4.005.36-5.692 1.08-1.686.72-3.136 1.722-4.348 3.005-1.212 1.282-2.143 2.81-2.793 4.585-.65 1.774-.975 3.68-.975 5.718h.053l.105 1.581-1.528.264c-1.863.316-3.444 1.317-4.744 3.004-1.3 1.686-1.95 3.584-1.95 5.692 0 2.39.8 4.462 2.398 6.219 1.599 1.757 3.488 2.635 5.666 2.635h4.849c.492 0 .896.167 1.212.5.316.335.474.73.474 1.187 0 .456-.158.852-.474 1.185-.316.334-.72.501-1.212.501h-4.849a10.08 10.08 0 0 1-4.374-.975 11.673 11.673 0 0 1-3.61-2.661 13.173 13.173 0 0 1-2.478-3.9A12.073 12.073 0 0 1 0 28.301c0-2.706.755-5.148 2.266-7.326 1.511-2.178 3.444-3.636 5.798-4.374.14-2.354.658-4.542 1.554-6.562.896-2.02 2.091-3.777 3.584-5.27 1.494-1.494 3.25-2.662 5.27-3.505C20.493.422 22.733 0 25.193 0c1.898 0 3.637.237 5.218.711 1.581.475 3.004 1.151 4.269 2.03a13.518 13.518 0 0 1 3.268 3.215 18.628 18.628 0 0 1 2.266 4.216Zm-11.964 13.44 6.22 6.85c.245.247.368.537.368.87 0 .334-.123.642-.369.923l-.421.263c-.211.246-.484.343-.817.29a1.544 1.544 0 0 1-.87-.448l-3.69-4.11v16.97c0 .492-.166.896-.5 1.212-.334.316-.729.474-1.186.474-.492 0-.896-.158-1.212-.474-.316-.316-.474-.72-.474-1.212V28.25l-3.584 4.005a1.544 1.544 0 0 1-.87.448.959.959 0 0 1-.87-.29l-.42-.264c-.247-.28-.37-.588-.37-.922 0-.334.123-.624.37-.87l6.113-6.746v-.052l.421-.422a.804.804 0 0 1 .396-.29c.158-.053.307-.079.448-.079.175 0 .333.026.474.079.14.053.281.15.422.29l.421.422v.052Z", fill: "none" }))); }
    Browse Files
    Drag and drop files here
    Choose a file
    Cancelof
  • Part 3: Portfolio (optional)

  • This application form comprises 3 parts:

    1. Aptitude Assessment
    2. Self-Assessment & Video
    3. Portfolio (optional)

    In this part, we'll ask you to substantiate your application by telling us more about yourself. You may wish to gather your best achievements, certs, portfolio projects, or anything else that will help your application.

    If you submit any links you submit, please ensure they are publicly viewable by testing them in a private/incognito window. If we cannot access any links you submit at time of evaluation, we will disregard them. 

    This section is optional. Don't stress out if you don't have anything to submit.

  • Supporting Documents

    Feel free to attach any supporting documents you think would be relevant when we review your application. This could include your portfolio, certificates, letters of recommendation, or any document you feel may be relevant.
  • function SvgDhtupload2(props) { return /* @__PURE__ */ react.createElement("svg", dhtupload_svg_extends({ width: 54, height: 47, xmlns: "http://www.w3.org/2000/svg" }, props), dhtupload_svg_path || (dhtupload_svg_path = /* @__PURE__ */ react.createElement("path", { d: "M40.213 10.172c1.897.21 3.68.738 5.35 1.58a15.748 15.748 0 0 1 4.374 3.242 15.065 15.065 0 0 1 2.951 4.533c.72 1.704 1.08 3.522 1.08 5.455 0 1.827-.28 3.654-.843 5.48-.562 1.828-1.379 3.47-2.45 4.929A13.39 13.39 0 0 1 46.669 39c-1.599.948-3.452 1.458-5.56 1.528H37.26a1.62 1.62 0 0 1-1.185-.5 1.62 1.62 0 0 1-.501-1.186c0-.457.167-.852.5-1.186.334-.334.73-.5 1.186-.5h3.848c1.44 0 2.75-.37 3.926-1.108a10.851 10.851 0 0 0 3.03-2.846 13.53 13.53 0 0 0 1.95-3.9 14.23 14.23 0 0 0 .686-4.321c0-1.582-.316-3.066-.949-4.454a11.623 11.623 0 0 0-2.582-3.636 12.857 12.857 0 0 0-3.742-2.478 11.054 11.054 0 0 0-4.48-.922l-1.212-.053-.37-1.159c-.878-2.81-2.292-4.998-4.242-6.562-1.95-1.563-4.594-2.345-7.932-2.345-2.108 0-4.005.36-5.692 1.08-1.686.72-3.136 1.722-4.348 3.005-1.212 1.282-2.143 2.81-2.793 4.585-.65 1.774-.975 3.68-.975 5.718h.053l.105 1.581-1.528.264c-1.863.316-3.444 1.317-4.744 3.004-1.3 1.686-1.95 3.584-1.95 5.692 0 2.39.8 4.462 2.398 6.219 1.599 1.757 3.488 2.635 5.666 2.635h4.849c.492 0 .896.167 1.212.5.316.335.474.73.474 1.187 0 .456-.158.852-.474 1.185-.316.334-.72.501-1.212.501h-4.849a10.08 10.08 0 0 1-4.374-.975 11.673 11.673 0 0 1-3.61-2.661 13.173 13.173 0 0 1-2.478-3.9A12.073 12.073 0 0 1 0 28.301c0-2.706.755-5.148 2.266-7.326 1.511-2.178 3.444-3.636 5.798-4.374.14-2.354.658-4.542 1.554-6.562.896-2.02 2.091-3.777 3.584-5.27 1.494-1.494 3.25-2.662 5.27-3.505C20.493.422 22.733 0 25.193 0c1.898 0 3.637.237 5.218.711 1.581.475 3.004 1.151 4.269 2.03a13.518 13.518 0 0 1 3.268 3.215 18.628 18.628 0 0 1 2.266 4.216Zm-11.964 13.44 6.22 6.85c.245.247.368.537.368.87 0 .334-.123.642-.369.923l-.421.263c-.211.246-.484.343-.817.29a1.544 1.544 0 0 1-.87-.448l-3.69-4.11v16.97c0 .492-.166.896-.5 1.212-.334.316-.729.474-1.186.474-.492 0-.896-.158-1.212-.474-.316-.316-.474-.72-.474-1.212V28.25l-3.584 4.005a1.544 1.544 0 0 1-.87.448.959.959 0 0 1-.87-.29l-.42-.264c-.247-.28-.37-.588-.37-.922 0-.334.123-.624.37-.87l6.113-6.746v-.052l.421-.422a.804.804 0 0 1 .396-.29c.158-.053.307-.079.448-.079.175 0 .333.026.474.079.14.053.281.15.422.29l.421.422v.052Z", fill: "none" }))); }
    Browse Files
    Drag and drop files here
    Choose a file
    Cancelof
  • Should be Empty: