Syllabus

  • Course Slack Channel: atls-4120-fall-2024
  • My Slack Profile: @Bryan Costanza

I prefer Slack for communication with the class. Use the course channel for general topics, anything that might be relevant to the class, or might be answered by your peers.

You can send me a direct message for anything that is not applicable for others in the class or that should otherwise be private, like grades or other concerns.

See my profile on Slack for my email address.

Non-general questions and communication that is not relevant to others in the class can be sent to me through a direct message on Slack or by email.

Official announcement will come through Canvas, so make sure you have notifications turned on.

  • Wednesdays 1:30-2:00
  • Fridays 1:30-2:00
  • Zoom link in Slack channel description

I'm open to finding other days or times if these conflict with your schedule.

This is also an open time for you to bring discussion ideas, career questions, or get general feedback. You are never obligated to attend, but I would think that if you don't attend at least a couple of times in the semester then you will have passed up an opportunity for advancing your knowledge, perspective, and career.

You MUST have access to a computer running macOS Ventura 13.5 (July 2023) or later. The OS names after Ventura are Sonoma (September 2023) and Sequoia (currently Beta, full release expected in September 2024).

I have heard mixed responses about whether there may be loaner laptops through ATLAS, so that will be up to you to find out. It might also work to use a mac in the computer lab.

Additionally, you MUST be able to install Xcode 15 or 16 on the computer that you will use. Xcode 15.4 was released in May 2025 and it is the latest release as of 11 August 2024. Xcode 16 is currently on its 5th beta release, with its expected final release in September 2024.

There are a few different ways to get Xcode, and we will cover that in class, but if you have a macOS version listed above and you have permission to install apps on your device, then you should have everything you need. I would generally recommend that you use the latest stable release (15.4 right now) but I am always running the latest beta on my machine so you may choose yourself between 15.4 or 16.0.

Expectations:

  • The work is overall your own.
  • Up to 10% of your code can be from elsewhere, if you cite it.
    • A comment in your code with a link to the source and a note about how much code you used is required.
  • You must be able to explain ALL of your code.
    • If you are using code you don't understand then you need to flag it for discussion by making a clear comment in your code and/or writing to me.

This is an evolving topic, of course. I have a license for GitHub Copilot at work and I have a personal subscription for home as well. I think it is a powerful tool, especially when I am working on the early phases of a project in an area that I am not very familiar with.

Expectations:

  • You may use AI, and you may use it extensively
  • You must be able to fully explain the code it generates
  • You must be able to develop app code from scratch without assistance

Suggestions:

  • Do not rely on it being available
  • Focus on figuring out code, not figuring out the AI
  • Use it to learn, ask questions, develop faster, generate ideas

Consider:

  • AI only knows SwiftUI at an OK level, it's going to be wrong at times
  • Swift Intelligence (similar to Copilot) will soon be generally available to all Apple developers and it wil be trained on proprietary information from Apple's framework code.
  • Future success as a developer probably means working well with AI
    • Cal Newport's book Deep Work: "In this new economy, three groups will have a particular advantage: (1) those who can work well and creatively with intelligent machines, (2) those who are the best at what they do, and (3) those with access to capital. (p. 28)

If you follow the guidance above while proactively communicating your sources, process, and uncertainties, you will not find yourself unexpectedly facing penalties or other administrative action.

If you conceal dishonest intentions behind your work then I will reduce or zero out scores for relevant assignments and report my findings to the ATLAS Institute.

You would be much better off doing something simple that to cheat.

Do not not use outside coding tutorials as your assignment submissions.

This is the tentative list of assignments and points for each. Weighting is determined only by the points available for each assignment. There is no category weighting.

Homework and projects will be submitted through GitHub Classroom.

Quizzes could be on specific knowledge knowledge or writing pseudocode to show your understanding without using a computer.

You should expect to spend twice as much time working outside of class as you spend in class.

AssignmentPointsDescriptionDue Date
Quizzes (2)20Two quizzes, 10 points eachVarious, TBD
Project 120Your Dev Story AppClass 3 4
Project 230Calculation AppClass 6
Project 340API-Based AppClass 10
Project 450Framework-Based AppClass 14

I can be fairly flexible on due dates in advance but I will be very inflexible with due dates on short notice. Let me know as soon as possible if you think you should have a due date adjusted.

  • Up to 24 hours late: reduction of 20% of the possible points
  • Up to 48 hours late: reduction of 40% of the possible points
  • After 48 hours: assignment will not be accepted

Reducing the score relative to the possible points instead of the earned points means that if work is turned in late, then doing it well means losing a smaller percentage from the work you completed.

Example: Rubric score of 85/100 point turned in 1 hour late. 

Starting score: 85
Possible score: 100
Penalty: 20% of Possible score (20 points)

StartingScore - PenaltyPoints = FinalScore
85 - 20 = 65

Final score 65/100

We have 14 class sessions this semester. My goal for the first half of the semester is to get through all of the most important views, modifiers, and basic data management concepts. In the second half of the semester we will cover more advanced topics and frameworks to round out your app development knowledge. The second half of the class will also have you exploring some material on your own, based on your interests and personal app goals.

Class WeekTopics
Section 1Getting Started
Class 1Environment Setup, Git Basics, Basic Views (part 1)
Section 2SwiftUI Views and Modifiers
Class 2Basic Views and Modifiers (part 2), Interactive Views (part 1)
Class 3Interactive Views (part 2), Layout Views
Class 4Container Views, Shapes and Styling
Class 5Navigation and Presentation Views
Section 3Data Flow and Management
Class 6Property Wrappers, Environment Variables, Protocols
Class 7User Defaults, JSON Parsing, SwiftData
Section 4Advanced SwiftUI
Class 8Animations, Transitions, Gestures, Searchable
Class 9Accessibility, Internationalization
Section 5Frameworks, Networking, Deployment
Class 10Testing, Widgets,
Class 11App Intents
Class 12Networking, Syncing, Login
Class 13Cross-Platform Development, Deployment
Class 14Final Presentations, Course Review, Next Steps

This course counts as an elective toward the Digital Humanities Graduate Certificate, an interdisciplinary nine-credit program that prepares students to implement computational or digital approaches to humanities inquiry and/or develop humanities perspectives on technology. It is open to any CU Boulder graduate student in good standing, regardless of discipline. For more information visit https://www.colorado.edu/crdds/dhgc or email digital.humanities@colorado.edu.


Pitching Your Project

Try this prompt:

For [target audience], [app name] [solves a specific problem or meets a specific need] by [key feature or unique selling point].


Work In Progress Add to schedule

  • App review guidelines
  • App submission process
  • Human Interface Guidelines