UI building in iOS development has a brand new tool: SwiftUI. The
SwiftUI tutorial is an
excellent resource 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 Programming Lab 1 has a bunch of iMacs
that you can use, but it is known to be very slow. You can always:
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.