Skip to main content

Tips

Swift and iOS

  • The Swift Language guide is a great resource to start reading about Swift.
  • UI building in iOS development has a brand new tool: SwiftUI. The original SwiftUI tutorial and a more recently updated tutorial are excellent resources for you to get more familiar with SwiftUI.
  • If you decide to use SwiftUI, this website provides a good cheatsheet.
  • If you decide to use Storyboards (the old way of UI building), there are a lot more tutorials on it, such as this one.
  • The WWDC videos are also useful to enrich your knowledge on general Swift or iOS programming.
  • If you are into Vim, XVim is a plugin that provides Vim keybindings for Xcode. It has mostly worked well enough.

CS3217

  • It is highly recommended for you to get a MacBook. Xcode can only run in macOS, and the Xcode build toolchain is the only way to compile iOS applications. As a last resort, the school has a few Mac minis for loan. But the numbers are limited so if demand exceeds supply, we will assign by ballot. Otherwise, you can always:
    • borrow a MacBook from someone
    • buy a refurbished model
    • buy a MacBook, return after 2 weeks, rinse and repeat (although we can't guarantee that this always works)
    • buy a second-hand model from marketplaces like Carousell
    • resourcefully acquire a macOS image and install it on a virtual machine or non-standard hardware. Note that we do not condone illegal practices.
  • Read all pages in the "About CS3217" section. (Including this one!)
  • Start early. In the past, many people have regretted not starting early. Starting earlier allows you to properly plan the design of your software. By planning well, you can avoid instances where you get wrapped up in bad design decisions, making you slow down to refactor some pieces.
  • Always read the entire problem set before starting to avoid any surprises!
  • Do not hesitate to ask the teaching staff for clarifications or general tips.
  • Having said that, if you ask about software engineering practices without any of your thoughts, you will more likely than not get hit with a "what do you think?" Software engineering depends on two-way communication, and a lot of it is subjective. If you share your thoughts first, we can help you better!

Software Engineering

  • Discuss with your peers! CS3217 is full of bright students, and bouncing design ideas around is the best way to make sure your software design is appropriate for the task. Of course, this also applies to general software engineering as well. Communication is key!
  • Read Hacker News often. That is probably the best advice the author has personally received on the subject of CS career.