CS代考 CDM 830

Real-Time Multithreaded Architecture
Spring 2022
instructor:
office hours:

Copyright By PowCoder代写 加微信 powcoder

Desired to Learn (D2L): Version Control:
All Communication:
Description:

REMOTE: Wed 9:00-10:30pm Zoom Meeting or by appointment CDM 830
(312)362-6747
piazza.com/depaul/spring2022/csc388588 (Preferred communication) REMOTE: Wed 6-9:00pm Zoom Meeting
d2l.depaul.edu (Grades, Viewing lectures, Announcements)
perforce: perforce.dpu.depaul.edu:1666
Piazza for all communication, reply within 24 hrs during school week
Real-time constrained multithreaded architecture. Topics include multithreaded handle development,
inter-thread communication, creating systems for user-defined callbacks, asynchronous loading and streaming of resources, non-blocking threading synchronization, design patterns and data driven messaging with time delivery constraints. Design and implementation of thread safe data management with atomic non-blocking synchronization. Exploration of real-time data driven messaging to allowing the run-time object data to control the behavior an application. Students will design, develop and implement a multithreaded real-time application (i.e. Audio engine) that integrates existing single and multithreaded middleware libraries.
Prerequisites:
• CSC 461 and (SE 456 or SE 450)
Learning Goals:
• Students will design, development and implement a multithreaded application with real-time constraints.
• Students will design and implement custom Handles to control resource contention.
• Students will explore inter-thread communication with safe data queuing.
• Students will design and implement user callbacks passed and tunneled between threads.
• Students will implement asynchronous loading and streaming of runtime resources.
• Students will explore thread safe data management with atomic non-blocking synchronization.
• Students will learn how to create real-time data driven messaging to allowing the run-time
object data to control the behavior and flow of an application.
Real-Time Multithreaded Architecture Syllabus – 30 March 2022 v 1.0

Sprint Programming Assignments
20% – Weekly Code/Video Submissions (approx. best 6/8 assignments)
30% – Milestone 1: Prototype: Basics Audio Engine
50% – Milestone 2: Finished Audio Engine, Demo, and Documentation
Textbooks and printed resources
Course material will be many supplied through class notes, handouts or online links.
• Will be provided by the instructor
• Lectures, links, SDKs and other corresponding material Software
• Microsoft Visual Studio 2019 Enterprise Edition (not Community) o MSDNAA Depaul – Visual Studio 2019 Enterprise
 C++ and C# install (future classes)
o Any other variants are not used in this class
o Students are responsible keeping their development tools working
• Perforce Server
o Download and configuration instructions will be provided in class o Perforce – Helix Visual Client (p4v)
 https://www.perforce.com/downloads/helix-visual-client-p4v  Server address: perforce.dpu.depaul.edu:1666
Topics will include: Threads
• Concurrency
• Spawning and coordinating threads in C++
• Process, thread, stack data ownership
• Inter-process and inter-thread resource contention
• Atomic identification for resource pooling
• Thread safety and exception safety
Inter-Thread communication
• By direction queuing between threads
• Circular queues without conditional wrapping
Real-Time Multithreaded Architecture Syllabus – 30 March 2022 v 1.0

• Updating and processing request between threads Commands Passing
• Commands originated on main thread being services on other threads
• Tunneling commands
• Access data and relationship of commands variable output passing in a queue
XAudio2 Drivers
• Microsoft Audio driver
• Multithreaded audio system with its own threads, voices, callbacks, data marshaling
• Audio basics – sample rate, format, IFF file format, etc.
• Audio Driver callbacks interfacing to Main thread
• User define callback architecture – extending base classes
• Marshalling callbacks between threads and thread hopping
Asynchronous loading
• Spawning multiple threads for file loading
• Coordinating loading between threads with signaling
• Zero blocking atomic data structure for loading
Thread Management
• Thread pooling and reuse management
• Controlling data on the stacks
• Ownership issues
Design Patterns
• Complexity added with multithreaded environment on Design Patterns
• Multiple threads interactions for Visitor, Command, Observer, and Singletons
Timer Coordination
• Single coordinating clocked based events on Main thread
• Adaptive scripting with a resolution Audio thread
Debugging / Tracking
• Debugging and tracking with I/O and printing
• Demos and interactive scenario development
• Resource tracking
Real-Time Multithreaded Architecture Syllabus – 30 March 2022 v 1.0

Milestone 1: Prototype Basics Audio Systems (30%)
Students will design and build simple audio systems with fundamental multithreaded components. The goal of this milestone is to understand the primitive features in the XAudio2 API and building blocks for a more complex full feature multithreaded system (final project). Students will explore the internal features and resource usage of the XAudio2 API such as Audio playback, data management, Callbacks and event sequence synchronization. In addition to the Audio system basics, students will develop multithreaded components such as custom Handles, inter-threading queuing system, thread tracking, and multithreaded testing environment. This milestone is a shake out many mini-demos to prove that the completed audio engine is achievable. Engine in C++, with video and summary of each component.
• Several Mini-demo prototypes: o Playback
 Attributes (Volume, Pan, Pitch, etc.) control  Looping
 Loading/unloadingsourcewavedata
 XAudio2 Callbacks
o Audio Management  Handles
 Buffer reuse/control/tracking
 Voicemanagement o Scripting
 Timer events
 Coordinating between threads o Stitching
 Seamless transitions between voices
• Complete Code base
o 100% working game stored in perforce o Needs to compile and run
o Not compiling or working (FAIL)
• Feature List
o Self-grading feature checklist (supplied PDF) o Link to Video Demo
• Video Demo
o YouTube Video Demo
o Demo of the game
o Identifying features in the game
o 5-10 minutes with clear audio commentary
Real-Time Multithreaded Architecture Syllabus – 30 March 2022 v 1.0

Milestone 2: Finished Audio Engine (50%)
Students will design and build a single multithread runtime audio game engine library written in C++. This system has many complex real-world features and constraints to all single threaded applications to interface with multithreaded engine. Required features of this engine are asynchronous real-time loading/streaming, dynamic preemptive priority system, seamless transitioning between discrete sound calls without application intervention, application define user callbacks, data driven script playback and more. In addition, a compelling demo to show off the newly constructed engine.
• Single integrated C++ library
o Incorporates the components fully working from Milestone1 o Static Library or DLL
• Required Features
o Basics audio features (milestone 1)
o Priority system
o User Callbacks
o Asynchronous file loading / streaming o Interpretive Scripting management
o Queue Stitching
• Compelling Demo
o Show off your work
• Documentation
o UML diagramming of the system
o Description of the features
o Architecture design document (TBD)
• Complete Code base
o 100% working game stored in perforce o Needs to compile and run
o Not compiling or working (FAIL)
• Feature List
o Self-grading feature checklist (supplied PDF) o Link to Video Demo
• Video Demo
o YouTube Video Demo
o Demo of the game
o Identifying features in the game
o 5-10 minutes with clear audio commentary
Real-Time Multithreaded Architecture Syllabus – 30 March 2022 v 1.0

Textbooks are used for references and learning new topics. It is suggested that you research and investigate material and ancillary topics covered in the class through these books as needed. High performance programming requires both breadth and depth knowledge in the C++ language, therefore everyone’s needs and research will vary based on their own experience and evolving mastery of the material.
Grading Scale:
93-100: A 87-89: B+ 77-79: C+ 67-69: D+ 0-59: F 90-92: A- 83-86: B 73-76: C 60-66: D
Perforce Submissions
80-82: B- 70-72: C-
• Everyone is expected to submit several submissions to perforce a week.
o Minimum of five significant (real) submissions on three separate days. o To promote incremental development and prevent last day rush.
o Grade deduction will occur if not followed
• The biggest reason students get into trouble with software design: o Not starting the project early
o Not working on the material frequently enough
o Taking too large of a bite(byte) of the design
• Both are minimized with this Perforce RULE
• Even my simplest programs take 10-20 submissions.
o For these project assignments, my average is 40-400 submissions, so five will be no problem. • Detailed perforce changelist comments are expected
• Statistics show: students who participate more and help other students do better! o The correlation is ridiculous!
• Poor understanding / poor participation.
• Great understanding / Great participation o As you master the material, help others learn!
• Want to be a Master programmer so master it!
• Everyone is expected and encouraged to participate on the Piazza discussion forum. All class-related discussion here this term.
o At least one real question or response per week from every student.
• Everyone is expected to keep up with the material on Piazza and are responsible for its content.
Critical class updates and directions will be presented there.
o Not participating or reading the material on Piazza is NOT an Excuse.
• All correspondence that is not personal in nature should be vectored through Piazza
Real-Time Multithreaded Architecture Syllabus – 30 March 2022 v 1.0

o Sensitive material, use Piazza private note, not email.
• The quicker you begin asking questions on Piazza (rather than via emails), the quicker you will benefit from the collective knowledge of your classmates and instructors. I encourage you to ask questions when you are struggling to understand a concept.
• Keep the forum professional and positive, help each other out. o Karma really pays off here.
o Help each other whenever you can.
• There will be a time when you will need help from the class (trust me).
NOTE: Do NOT post until you have watched the entire lecture FIRST (in class or online) This will prevent frustration on all sides (members asking or answering questions)
Collaborating together on programming assignments
• You are encouraged to work together o Use the Piazza forums heavy
o Even share your material with others in the common directory  Obviously not the answers
• Everyone is 100% responsible for the work they do. o If you get help with a section of code,
o Please refactor the code the snot out of it
 Commentandunderstandthatmaterial
 Transform the code to make it yours
o Be able to answer any question regarding the code you commit
• System for Detecting Software Plagiarism
o We will be using MOSS – Measure of Software Similarity (Stanford University)
 Indicates possible code infringements (plagiarism)
 MOSS – will detect the similarity independent of naming convention, indentation
style or formatting, it compares abstract syntax tree of your code.
o I will pursue any plagiarism/integrity violations aggressively, arguing for full expulsion from
the university for the offenders.
 Don’t put me or you in this scenario
• If you gain significant support / help from another student or website
o Fully disclose the support / help you had in a Readme.txt file submitted with your
assignments.
 Disclosing the help, is not permission for copying the code.
 Only there to clarify and acknowledge help you were given from a fellow student.
• Modifying any Unit Test or Project setting to alter the outcome results is also an Academic Integrity
• If you are stuck and find yourself even tempted to plagiarize o Askforhelp!!!!
 Use on Piazza -> Visit during offices hours, make an appointment
 Don’t ever compromise your integrity! • Material was uniquely created for this Class.
Real-Time Multithreaded Architecture Syllabus – 30 March 2022 v 1.0

o By the process of tuition, you “paid” for the contents and material of this class.  Do not share this copyrighted material in any form
 It is design for your personal use, while enrolled in the Class.
o Do NOT post any content or revealing material to any external website or forum outside of this class.
 The Class Piazza forum is provided for this service, ask questions there, not on the internet (i.e. StackOverflow and other software forums)
• After you leave this class
o You are expressly FORBIDDEN to provide or share the content with others.
o Academic Integrity Violations can still be applied to students who provide material support
to other students even after completion of the class. • Just follow the golden rule:
o “I have neither given, nor received, nor have I tolerated others’ use of unauthorized aid.”
Real-Time Multithreaded Architecture Syllabus – 30 March 2022 v 1.0

Miscellaneous
• Late Policies
o Due dates and times are verified by the submission record on the Perforce Server
 Noextensionsareallowed
o All assignments need to compile without warnings
 Failuretocompile“as-is”resultsina0forthegrade • Memory Leaking
o For assignments that have memory tracking enabled
 Ifanassignmentisdeterminedthatitsleakingmemory
• A deduction of 20% is applied to the grade of that assignment o Leaking status is provided during development
• Crashing and Building
o All assignments are expected to build/compile “as-is”
 Failure to build for any reason – grade of 0 o Assignments are expected to work for a set duration
 A grade of 0 is given to any project that throws an exception, ends unexpectedly, crashes or hangs (not proceeding forward).
(long enough to demo all the features)
 Crash – program locking up or quitting unexpectedly • Integrity Violation
o Any form of integrity violation will receive an “F” letter grade for the course, no exceptions o All material submitted is from this current offering of class, any material from the outside is
considered a violation
Real-Time Multithreaded Architecture Syllabus – 30 March 2022 v 1.0

Tentative Class Schedule
Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9 Week 10 Week 11
Course Overview Audio Engine Features
XAudio2 Threads
Sample Game Handles Exception Safety
Inter-Thread Communication Callbacks
Testing Audio Command Passing
Audio Threads Thread Management
Asynchronous loading Multithreaded Patterns
Priority System Scripting systems
Timer Coordination Debugging / Tracking
Sprint1 – Xaudio2 play Sprint2 – Audio Voices Sprint3 – Handles
Sprint4 – XAudio Callbacks Sprint1 – Milestone 1 Sprint5 – Audio Threads Sprint6 – Async Loading Sprint7 – Priority
Sprint8 – Scripting Final Project
Compiler Perforce
Sprint1 Sprint2 Sprint3 Sprint4 MS1 Sprint5 Sprint6 Sprint7 Sprint8 Final Project
University Dates (Drop, Withdrawal, Audit, Exam)
• https://academics.depaul.edu/calendar/Pages/default.aspx
Real-Time Multithreaded Architecture Syllabus – 30 March 2022 v 1.0

Course Policies
Changes to Syllabus
This syllabus is subject to change as necessary during the quarter. If a change occurs, it will be thoroughly addressed during class, posted under Announcements in D2L and sent via email.
Respect for Diversity and Inclusion at De as aligned with our Vincentian Values
At DePaul, our mission calls us to explore “what must be done” in order to respect the inherent dignity and identity of each human person. We value diversity because it is part of our history, our traditions and our future. We see diversity as an asset and a strength that adds to the richness of classroom learning. In my course, I strive to include diverse authors, perspectives and teaching pedagogies. I also encourage open dialogue and spaces for students to express their unique identities and perspectives. I am open to having difficult conversations and I will strive to create an inclusive classroom that values all perspectives. If at any time, the classroom experience does not live up to this expectation, please feel free to contact me via email or during office hours.
Online Course Evaluations
Evaluations are a way for students to provide valuable feedback regarding their instructor and the course. Detailed feedback will enable the instructor to continuously tailor teaching methods and course content to meet the learning goals of the course and the academic needs of the students. They are a requirement of the course and are key to continue to provide you with the highest quality of teaching. The evaluations are anonymous; the instructor and administration do not track who entered what responses. A program is used to check if the student completed the evaluations, but thee valuation is completely separate from the student’s identity. Since 100% participation is our goal, students are
sent periodic reminders over three weeks. Students do not receive reminders once they complete the evaluation. Please see https://resources.depaul.edu/teaching-commons/teaching/Pages/online- teaching-evaluations.aspxfor additional information.
Academic Integrity and Plagiarism
This course will be subject to the university’s academic integrity policy. All students are expected to abide by the University’s Academic Integrity Policy which prohibits cheating and other misconduct in student coursework. Publicly sharing or posting online any prior or current materials from this course(including exam questions or answers), is considered to be providing unauthorized assistance prohibited by the policy. Both students who share/post and students who access or use such materials are considered to be cheating under the Policy and will be subject to sanctions for violations of AcademicIntegrity.
More information can be found athttps://resources.depaul.edu/teaching-commons/teaching/academic- integrity/Pages/default.aspx.
Posting work on online sites, such as GitHub
All students are expected to abide by the University’s Academic Integrity Policy which prohibits cheating and other misconduct in student course work. Publicly sharing or posting online any prior current materials from this course (including exam questions or answers), is considered to be providing unauthorized assistance prohibited by the policy. Both students who share/post and students who access or use such materials are considered to be cheating under the Policy and will be subject to sanctions for violations of Academic Integrity.
Real-Time Multithreaded Architecture Syllabus – 30 March 2022 v 1.0

Academic Policies
All students are required to manage their class schedules each term in accordance with the deadlines for enrolling and withdrawing as indicated in the University Academic Calendar. Information on enrollment, withdrawal, grading and incompletes can be found at: http://www.cdm.depaul.edu/Current%20Students/Pages/PoliciesandProcedures.aspx
Incomplete Grades
An incomplete grade is a special, temporary grade that may be assigned by an instructor when unforeseeable circumstances prevent a student from completing course requirements by the end of the term and when otherwise the student had a record of satisfactory progress in the course. All incomplete requests must be approved by the instructor of the course and a CDM Associate Dean. Only exceptions cases will receive such approval

程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com