diff --git a/.gitignore b/.gitignore index 78df71b..7a54c72 100644 --- a/.gitignore +++ b/.gitignore @@ -130,4 +130,8 @@ dist .pnp.* out -.contentlayer \ No newline at end of file +.contentlayer + +# IDEs +.idea +.vscode \ No newline at end of file diff --git a/content/pages/index.mdx b/content/pages/index.mdx index 9c541c6..db5eb9e 100644 --- a/content/pages/index.mdx +++ b/content/pages/index.mdx @@ -6,7 +6,13 @@ customLayout: true Welcome} margin> - *\[insert course description here\]* + This project-oriented course focuses on application development for current iOS mobile + platforms using SwiftUI. In the initial stages, students will explore the fundamentals of + mobile app development, including iOS and Xcode basics, Swift programming, and SwiftUI + interface building. The curriculum progresses through advanced concepts like state management, + app lifecycle, sensor integration, networking, and data persistence. In the latter part of the + course, students work in teams to conceptualize and develop a significant mobile application. + Creativity and originality are highly encouraged! @@ -38,9 +44,13 @@ customLayout: true { name: "Yuying Fan", section: "202", + flavorText: "Food, Music, Plants, Coding", pennkey: "yuyingf", school: "seas", pronouns: "she/her", + github: "fyy26", + website: "https://www.linkedin.com/in/fanyuying/", + avatar: "https://lh3.googleusercontent.com/a/ACg8ocLFVWxE2df478AegQvN72qniqSQ5i-M9aUOYOLOlz1iyU8=s576-c-no", }, ]} /> diff --git a/content/pages/syllabus.mdx b/content/pages/syllabus.mdx index cf3a16c..6c5e72d 100644 --- a/content/pages/syllabus.mdx +++ b/content/pages/syllabus.mdx @@ -3,20 +3,138 @@ title: Syllabus activeMenuItem: syllabus --- -## Grading +## Course Structure +- **Lectures:** Once a week, 1.5 hours each. +- **Homework Assignments:** 5 assignments spread over Weeks 1-11. +- **Final Project:** Week 11 brainstorming, Weeks 12-14 working; teams of 3. + +## Weekly Plan +### Week 1: Introduction to iOS Development and Xcode +- Overview of the iOS platform and its evolution. +- Installing Xcode and understanding its interface. +- Creating a simple "Hello, World!" app in Xcode. +- Introduction to the Swift Playgrounds for experimenting with Swift code. + +**Homework 0 Assigned:** Download and set up XCode. Due in Week 2. + +### Week 2: Swift Basics +- Swift language fundamentals: variables, constants, data types. +- Control Flow: if-else statements, loops, switch cases. +- Functions: declaration, parameters, return types. +- Structs, classes, and protocols. +- Basic error handling in Swift. + +**Homework 0 Due.** + +**Homework 1 Assigned:** Create a basic Swift playground that includes various data types, control flows, and a custom function. Due in Week 4. + +### Week 3: SwiftUI Fundamentals +- Introduction to SwiftUI and its declarative syntax. +- Building basic user interfaces: Text, Image, Button. +- Understanding the SwiftUI layout system: VStack, HStack, ZStack. +- Modifiers: applying basic modifiers to SwiftUI views. +- Lists and scrolling views. +- **Sidebar:** Debugging tools in Xcode: breakpoints, console, memory graph debugger. + +### Week 4: SwiftUI State Management +- Data passing and state management in views. +- State management in SwiftUI: @State, @Binding, @ObservedObject, @EnvironmentObject. +- Building forms and handling user input. +- Basic animations and transitions in SwiftUI. + +**Homework 1 Due.** + +### Week 5: App Lifecycle and Structure +- Understanding the iOS App Lifecycle: AppDelegate, SceneDelegate. +- Lifecycle events: onAppear, onDisappear. +- Navigation in SwiftUI: NavigationView, NavigationLink. +- Other structural views: TabView. +- Modal presentations: .sheet, .alert. + +**Homework 2 Assigned:** Develop a SwiftUI application with multiple views and navigation, utilizing state management. Due in Week 7. + +### Week 6: Custom Views & Event Handling +- GeometryReader, safe area. +- SwiftUI shapes, .fill/.stroke. +- Understanding event propagation and handling in iOS. +- Keyboard handling and text input events. +- Custom gesture recognition in SwiftUI. + +### Week 7: Working with Sensors +- Accessing device sensors: GPS, accelerometer, gyroscope. +- Using Core Motion to access motion data. +- Handling location data with Core Location. +- Practical use cases of sensor data in apps. -Lorem ipsum dolor sit amet +**Homework 2 Due.** -Blah: +**Homework 3 Assigned:** Create an app that utilizes at least one device sensor, displaying relevant data to the user. Due in Week 9. -```swift -print("Hello, world!") -``` +### Week 8: Networking in iOS +- Making HTTP requests and handling responses (async/await). +- Working with URLSession for network tasks. +- Parsing JSON data and integrating it into the app. +- Error handling and network best practices. -* sdf -* werqwer -* 123 +### Week 9: Data Persistence +- Introduction to UserDefaults for simple data storage. +- Using Core Data for complex data models and persistent storage. +- CRUD operations in Core Data. +- File management: reading and writing files on the device. +- Other data storages: Keychain, SwiftData -1. sdfqwer -2. werqwer -3. qwerqwer \ No newline at end of file +**Homework 3 Due.** + +**Homework 4 Assigned:** Create an app that interacts with an API to fetch data and store the data in a local persistent storage. Due in Week 11. + +### Week 10: UIKit & UIKit Integration with SwiftUI +- UIKit basics: MVC architecture in iOS. +- Integrating UIKit in SwiftUI: using UIViewRepresentable. +- User interaction in UIKit: event and input management. +- Combining UIKit & SwiftUI: navigation and data sharing strategies. + +**Start Final Project Team Formation & Brainstorming.** + +### Week 11: App Design and User Experience +- Design principles for mobile apps: clarity, efficiency, consistency. +- Designing for different screen sizes and orientations. +- Accessibility in iOS: making apps accessible to all users. +- Implementing dark mode support. +- Permission priming. + +**Homework 4 Due.** + +**Final Project Proposal Due.** + +### Week 12: App Distribution and the App Store +- Code signing and provisioning profiles. +- Preparing an app for distribution: icons, launch screens, app metadata. +- App Store submission process and guidelines. +- Understanding the review process and managing app releases. + +### Week 13: Bonus Lecture (TBD) +Potential Topics: +- Advanced UI/UX Design Concepts (Animations, Transitions, AR/voice-based Interfaces) +- Integrating Machine Learning with Core ML +- Augmented Reality with ARKit +- Designing Home Screen Widgets with WidgetKit +- Apple Watch and Wearable Integration +- Internet of Things (IoT) and HomeKit +- … + +### Week 14: Final Project Presentations + +**Final Project Demo Slide Deck Due.** + +## Final Project +- **Duration:** Last 4 weeks. +- **Team Composition:** 3 students per team. +- **Objective:** Develop a fully functional and creative iOS app. +- **Presentation:** Demonstrate the app and discuss design and development challenges. + +## Grading +- **Attendance and Participation:** 10% +- **Homework Assignments:** 60% +- HW0: 20 points +- HW1-4: 100 points each +- **Final Project:** 30% \ No newline at end of file