Java程序辅导

C C++ Java Python Processing编程在线培训 程序编写 软件开发 视频讲解

客服在线QQ:2653320439 微信:ittutor Email:itutor@qq.com
wx: cjtutor
QQ: 2653320439
Syllabus for Introduction to Mobile Application Development Using Swift and iOS You need to have JavaScript enabled in order to access this site. Dashboard CSCI S-65g Section 1 (33540) Syllabus Skip To Content Dashboard Login Dashboard Calendar Inbox History Help Close My Dashboard CSCI S-65g Section 1 (33540) Syllabus 2022 Summer Syllabus Library Reserves Course Syllabus Jump to Today  Syllabus CSCI S65-G Introduction to Mobile Application Development Using Swift and iOS   Instructor:                              Ronald V. “Van” Simmons (rvs606@g.harvard.edu) Course Dates/Times:            Monday/Wednesday 6:30-9:30, Jun 27 – Aug 3, 2021                                                  Friday June 24 6:30-930 (First class session only) 
Location:                                 Online via Zoom   PREREQUISITES: While this is an introduction to mobile development, it is not an introductory programming course.  Accordingly, students need to have: working knowledge of at least one object-oriented programming language such as Java, Javascript, Python or C++  a semester course in data structures or equivalent a firm understanding of how to compile code, use libraries, use a debugger, and the ability to use a source control tool such as git.  This is a class about Apple's iOS platform, so the student must have a Macintosh laptop running a current version of the operating system with the most recent version of Apple's Xcode IDE installed. (In particular  students will need to have the latest versions of Mac OS 12 "Monterrey" installed).  Please note that it is not possible to use a Windows or Linux computer for this course as code written on those platforms cannot be deployed to either an iOS simulator or device. PRE-TEST A pre-test has been made available.  All students should verify that they meet the course prerequisites by taking the pretest. Assignment 0 Assignment 0 consists of preparatory readings and setting up the student's code repository for assignments. GitHub classroom will be used for all assignment repositories and will require an invitation from the Instructor (and hence completed registration by the student) in order to join the class along with a demo of how to set up student's repository.   Assignment 0 will be posted to the course website the week of Jun 13th, 2021.  All students should have Assignment 0 completed before first class meeting. COURSE OUTLINE:
 This course introduces the basics of contemporary mobile application development using Apple’s iOS technology as the development platform. In particular, this will require us to develop familiarity with concepts and terminology associated with functional programming, as this is the emerging standard form of development on Apple platforms.  As a result, the readings in the first portion of the course will be substantial and will cover topics that may be unfamiliar to students whose only exposure has been to the Object-Oriented style. Students are encouraged to do some of these readings before class begins. The objective of the course is to enable to the student to build an iOS application using the standard Apple tool chain. Requirements for the course will be met by the student demonstrating an ability to develop an application which implements a coherent data model, a view with layout, drawing and touch handling, asynchronous network access and timer management, animation and proper unidirectional data flow design along with usage of a number of the standard Apple-provided user interface components. We start with the Swift programming language and portions of its system library. Language features which will be most focused on will include: the Swift type system (tuple/enum/struct/class/func/protocol), closures, optionals, and generics. This basis will then lead to discussion of various functional programming techniques in Swift centered around the map/reduce and other higher order functions. As part of our survey of Swift, we will cover in great detail both the theory and use of Apple’s Combine functional reactive programming layer, in particular its usage to perform network access and timed event handling.  We then proceed to study the architecture of an application which uses Apple’s new SwiftUI toolchain.  The emphasis will be on creating a unidirectional dataflow architecture from many small elements which can be composed into an overall architecture for the application. Specific attention will be paid to proper practices for coding each of the various portions of an app and techniques for communicating between them using a (State, Action) -> (State, Effects) paradigm.  Additional Swift language features such as protocol extensions and their proper use will be added to the student’s skill set during this section. We continue by surveying the major features of the XCode IDE focusing on building interfaces with the Xcode Preview tool. Specific techniques to be explored will include layout, view hierarchies, and Apple’s SwiftUI DSL.  We continue by exploring various drawing functions in SwiftUI Views, event handling, and Bezier Path handling in SwiftUI.  Finally we explore various techniques in the implementation of touch handling. We also discuss integration of custom views within Xcode Preview. As an aside during this section, time permitting, we will discuss Apple’s run time analysis tool, Instruments. This will be used to explore the details of the Apple memory model and performance debugging.  Topics to be covered in order:   Course Section (~2 classes each) Focus Section topics 1 Introduction to Xcode and Model Development with Swift Policies; Xcode Intro: Demo of a basic iOS App & Playgrounds;  Navigating Xcode to create a real project. Swift language essentials: Arrays, Dictionaries, functions, Optionals, Control Flow, Structs Enums and Classes, Playgrounds.  Elements of The Swift Foundation classes, CocoaTouch Foundation Framework. Major emphasis will be on the Swift type system (base types, tuples, enums, structs, classes, function, and protocols), generics, optionals and closures.  This will then be extended to include the higher order functions as developed in the map/reduce and similar functions of the Swift Standard Library’s Sequence type.  Assignment 1 due: July 1st 2 Functional Reactive Programming (FRP) with Combine. Advanced higher-order functions, functions-returning-functions, function composition and its use in Combine. Algebraic data types and the way in which the Swift type system implements them. Introduction to FRP concepts, Publishers, Subscribers, Subjects.  Survey of basic publisher types, Map, Zip, FlatMap, Collect, etc.  Concurrency and Asynchrony in Combine.  The Future Publisher type. Use of Combine in networking and timer management. Assignment 2 due: July 8th 3 Composable Application Architecture Introduction to and use of the Apple property wrappers including EnvironmentObject, Published, State, and Binding.  Organizational concepts: separate model classes, the event loop, application state, events as actions, use of multiple environments, effects as publishers of actions, reducers as functions of state, action, environment to new state, and effects, higher-order reducers, cancellable effects.  The use of the above in a composable “comonadic” UI architecture. Assignment 3 due: July 15th 4 Drawing and Layout with SwiftUI The SwiftUI Framework, essential debugging tools, the View protocol, Basic View types, the relationship between the backing code and the UI, custom drawing through View composition, touch and gesture handling, Color models, Alpha, Images, and Text Assignment 4 due: July 22nd 5 Animations Animation modifiers in SwiftUI, animating color, frame, rotation, and opacity explicitly and implicitly. Driving complex animations. 6 Scrollable Views, Tabs and Navigation  List, ForEach  Navigation views and their use, Tabbed Views and their controllers. 7 XCTest, Memory Management and Instruments, and Final Project Support Using XCTest to write Unit Tests and UI tests.   Final Project due at last class meeting: August 3rd  ASSIGNMENTS AND READINGS: Frequent small assignments progress from basic programming to realistic app development with a focus on responsive device graphics and algorithms. We will build a working app covering all topics as a final project.  The final project will reuse code from each of the assignments, so please be aware: the final project is cumulative over all of the material discussed in the class, failure to absorb any of the basic concepts mentioned above will be very detrimental to the student’s outcome. Readings will come from a combination of: The Apple Developer Library; Chapters from e-Books; and online blog posts and tutorials, and materials developed by the instructor. GRADING: Each of the 4 regular assignments is valued at 100 points, the final project at 200 points. It should be noted that the eventual grade of the student will depend most heavily on building the application for the final project. If the student can demonstrate mastery of all of the techniques in the final project they may have their grade be based solely on the final project.  The instructor will grade on the higher of the overall average across all assignments, including the final project or of the final project grade alone.  When grading programming assignments, a strong emphasis is placed on good coding practices, code design and correct implementation of platform-specific architectural principles.  These criteria are to some extent subjective but expectations for them will be clearly specified in class. LATE POLICY: As the course builds on previous material and students will receive a working version of code immediately following the due date for each assignment, there has to be a zero-tolerance late policy for all assignments.  TOOLS: Xcode and git. Class assignments (which include readings) will be hosted on Canvas and lecture materials will be hosted on the instructors GitHub account which will be publicly available. As part of Assignment 0 to be completed before the first class, each student will need to set up an individual repository, with a username and password, into which they will submit all assigned work. The naming conventions will be spelled out so that all submissions have the same directory structure. The first class will review how to obtain all materials to verify that students have successfully completed Assignment 0. For more information on git and GitHub see:  https://services.github.com/on-demand/  https://guides.github.com/activities/hello-world/  https://guides.github.com 
  ONLINE DISCUSSION: We will use the discussion forums as provided in the Canvas platform and a dedicated Slack organization to allow students to communicate with the instructors, TA's and each other.  All questions about the course material should be directed to these fora: for maximum visibility to staff and students  to assure that all students are doing their own work  to make sure that everyone has equal access to all resources. While you are welcome to read additional material on the internet, asking questions using outside sources for assistance such as StackOverflow will be considered an honors violation and treated accordingly. LECTURES AND WORKLOAD: Lectures will be heavily example driven. Students are advised to code along with the instructor.  For a well-prepared student, the workload should be about 2-3 hours of reading and about 10-12 hours/week of programming, with the final project being roughly 15-20 hours of effort.   ATTENDANCE: Attendance is not part of the grade, however, assignments and the final project require information drawn from disparate sources which are presented seamlessly in lecture and non-attendance can result in missing important topics.  Accordingly, the student must attend all classes at the scheduled time.  Note: students wishing to take the course from remote time zones may email the instructor to discuss possible special arrangements to support that situation. GRADUATE CREDIT EXPECTATIONS: If you are taking this course for graduate credit, there will be specific additional programming requirements for your final project. Assignments 1-4 will be the same for all students, the specific graduate credit requirements will be detailed in the final project definition. ACCESSIBILITY: The Summer School is committed to providing an accessible academic community. The Accessibility Office offers a variety of accommodations and services to students with documented disabilities. Please visit http://www.summer.harvard.edu/resources-policies/accessibility-services for more information. ACADMIC INTEGRITY AND STUDENT RESPONSIBILITY: As with all Harvard courses, you are responsible for understanding Harvard Summer School policies on academic integrity (http://www.summer.harvard.edu/policies/student-responsibilities) and how to use sources responsibly. Not knowing the rules, misunderstanding the rules, running out of time, submitting the wrong draft, or being overwhelmed with multiple demands are not acceptable excuses. To support your learning about academic citation rules, please visit the Resources to Support Academic Integrity (http://www.summer.harvard.edu/resources- policies/resources-support-academic-integrity) where you will find links to the Harvard Guide to Using Sources (https://usingsources.fas.harvard.edu) and two free online 15-minute tutorials to test your knowledge of academic citation policy. The tutorials are anonymous open-learning tools.    Course Information   Student Support Tips Instructor Support Tips The syllabus page shows a table-oriented view of the course schedule, and the basics of course grading. You can add any other comments, notes, or thoughts you have about the course structure, course policies or anything else. To add some comments, click the "Edit" link at the top. Syllabus Description: Show Course Summary Cancel Update Syllabus Course Summary: Date Details Due Prev month Next month June 2022 6 Calendar Sunday Monday Tuesday Wednesday Thursday Friday Saturday 29 May 2022 29 Previous month Next month Today Click to view event details 30 May 2022 30 Previous month Next month Today Click to view event details 31 May 2022 31 Previous month Next month Today Click to view event details 1 June 2022 1 Previous month Next month Today Click to view event details 2 June 2022 2 Previous month Next month Today Click to view event details 3 June 2022 3 Previous month Next month Today Click to view event details 4 June 2022 4 Previous month Next month Today Click to view event details 5 June 2022 5 Previous month Next month Today Click to view event details 6 June 2022 6 Previous month Next month Today Click to view event details 7 June 2022 7 Previous month Next month Today Click to view event details 8 June 2022 8 Previous month Next month Today Click to view event details 9 June 2022 9 Previous month Next month Today Click to view event details 10 June 2022 10 Previous month Next month Today Click to view event details 11 June 2022 11 Previous month Next month Today Click to view event details 12 June 2022 12 Previous month Next month Today Click to view event details 13 June 2022 13 Previous month Next month Today Click to view event details 14 June 2022 14 Previous month Next month Today Click to view event details 15 June 2022 15 Previous month Next month Today Click to view event details 16 June 2022 16 Previous month Next month Today Click to view event details 17 June 2022 17 Previous month Next month Today Click to view event details 18 June 2022 18 Previous month Next month Today Click to view event details 19 June 2022 19 Previous month Next month Today Click to view event details 20 June 2022 20 Previous month Next month Today Click to view event details 21 June 2022 21 Previous month Next month Today Click to view event details 22 June 2022 22 Previous month Next month Today Click to view event details 23 June 2022 23 Previous month Next month Today Click to view event details 24 June 2022 24 Previous month Next month Today Click to view event details 25 June 2022 25 Previous month Next month Today Click to view event details 26 June 2022 26 Previous month Next month Today Click to view event details 27 June 2022 27 Previous month Next month Today Click to view event details 28 June 2022 28 Previous month Next month Today Click to view event details 29 June 2022 29 Previous month Next month Today Click to view event details 30 June 2022 30 Previous month Next month Today Click to view event details 1 July 2022 1 Previous month Next month Today Click to view event details 2 July 2022 2 Previous month Next month Today Click to view event details 3 July 2022 3 Previous month Next month Today Click to view event details 4 July 2022 4 Previous month Next month Today Click to view event details 5 July 2022 5 Previous month Next month Today Click to view event details 6 July 2022 6 Previous month Next month Today Click to view event details 7 July 2022 7 Previous month Next month Today Click to view event details 8 July 2022 8 Previous month Next month Today Click to view event details 9 July 2022 9 Previous month Next month Today Click to view event details Course assignments are not weighted.