**E28: Mobile Robotics** **ENGR 028/CPSC 082** **Fall 2020** **[Matt Zucker](../index.html)** | Lecture: | Tue/Thu 2-3:15PM ET on [Zoom](https://swarthmore.zoom.us/j/91558537154?pwd=cSs4c3F2MmtidGtvdXZ4dW1ERnoxZz09) | |-----------------|--------------------------------------------| | Office Hours: | Mon 2-3PM, Wed 3-4PM ET on [Zoom](https://swarthmore.zoom.us/j/91845438869), or by appointment | This course addresses the problems of guiding robots to act intelligently in dynamic, unpredictable environments. Major topics will include robot design, perception, kinematics, navigation and control, optimization and learning, and robot simulation techniques. Projects will focus on programming simulated robots to execute tasks and to explore and interact with their environment. # Requirements **Prerequisites:** Either [ENGR 019](http://catalog.swarthmore.edu/preview_course.php?catoid=7&coid=8092) or [ENGR 056](https://catalog.swarthmore.edu/preview_course.php?catoid=7&coid=63600), or permission of the instructor. [MATH 027](https://catalog.swarthmore.edu/preview_course.php?catoid=7&coid=8463) or [MATH 028](https://catalog.swarthmore.edu/preview_course.php?catoid=7&coid=8464) is recommended. **Skills:** In practice, I expect you to be conversant in elementary programming concepts in Python, including basic loops, functions, and array processing. You should also be comfortable with the process of converting a set of mathematical equations into a working Python program. I also expect you to be comfortable with [linear algebra concepts](../linalg-reintroduction.pdf) such as matrices, vectors, linear transformations, transposes, and inverses. We will also be using related geometric concepts such as the dot product and vector norms. **Time:** I expect students to spend approximately 8 hours per week on this class (4 classes × 8 hours per class + [8 hours for paid student work](https://www.swarthmore.edu/student-employment/employment-faqs) = 40 hours). Although this figure will vary from individual to individual and week to week, you should plan to commit several hours outside of class to homework, reading, and projects each week. # Resources There is no textbook for the course; however, there will be assigned readings, and notes and pointers to external resources will be provided by student scribes and researchers ([see below](#toc4)). This course webpage at https://mzucker.github.io/swarthmore/e28_f2020 will be regularly updated with assignments, scribe notes, and reading, so please keep aware of the materials posted here. We will use the Piazza group at https://piazza.com/swarthmore/fall2020/engr028cpsc082 throughout the semester to communicate course announcements and answer questions. Please use Piazza for all communications related to course content, homeworks, or projects -- this allows students to see common problems and to engage in discussions about course material. (For requests for appointments or personal inquiries, feel free to email me directly.) # Assignments Homework consisting of math, short answer questions, and small programming exercises will be assigned roughly weekly. Typically, homework will be assigned on Tuesday, and be due online before the start of class the following Tuesday We will also have regular quizzes to be completed on Thursdays. Each quiz will generally be based on the homework due the previous Tuesday, and potentially course material prior to that as well. There will be several regularly scheduled projects based on programming simulated robots, as well as an open-ended, self-directed final project. Ideally, projects will be completed by pairs of students, although I am willing to allow singletons if difficulties arise due to time zones or technological limitations. Grading will follow approximately the divisions shown below: * Homeworks: 20% * Weekly quizzes: 30% * Regular projects: 35% * Final project: 10% * Participation: 5% The majority of your homework grade will be based upon completion, not correctness. Each student may miss one homework or one quiz with no penalty; if a student completes all homeworks or quizzes, I will drop the lowest grade in that category. Although we will not have a final exam, I may administer one final quiz during the exam period. We will use our scheduled final exam time for short final project presentations. Your participation grade encompasses involvement in class discussions, preparing thorough and readable scribe notes/researcher links, and posting constructively on Piazza. ## Collaboration and attribution * Feel free to collaborate with your classmates on homework; however, you must submit your own work. Duplicating others’ assignments verbatim (especially code!) is prohibited. * If you do discuss homework with your classmates, I expect you to disclose any such collaboration clearly in your submitted work. Err on the side of caution – it’s the best way to avoid awkward conversations about suspicious similarities between assignments. * Cite any external sources used, including the textbook, internet, discussions with other professors, etc. * Collaboration or communication with other students about quizzes is prohibited. * Aside from raising technical and procedural questions on the course Piazza, do not collaborate on projects with others besides your partner. * Do not post homework, quiz, or project solutions on Piazza. Questions or answers that discuss solutions too closely will be deleted. Aside from the course-specific policies above, you are expected to understand and abide by the college's [policy on academic misconduct](https://www.swarthmore.edu/student-handbook/academic-policies#academic_misconduct). ## Late policy, extensions, etc. I expect students to do their best to complete all graded work on time, but I also understand we are in a global pandemic. If you need an extension or some other type of support due to extraordinary circumstances during this remote semester, please let me know and I'll do my best to figure out a plan with you. In the absence of any communication about extensions, grade penalties for unexcused late work will be assessed as follows: |Work type | Credit up to one week late | Credit after one week late | |----------|----------------------------|----------------------------| |Homework* | 50% | 0% | |Quizzes* | 75% | 50% | |Projects | 75% | 50% | *Students are allowed one free late homework submission and one free late quiz sumission (up to one week each) with no grade penalty. My philosophy in providing no-penalty contingencies for both missing and late homeworks and quizzes is to recognize that unforseen events happen and to provide some slack for when they do. Accordingly, I expect students to take advantage of these built-in opportunitites before I grant extensions or other extraordinary support. Swarthmore has a hard deadline for professors to submit grades after the end of the semester, which means that without special permission, all student work must be submitted to me by the end of finals on December 15 to count for a grade. And remember, the more notice and communication I have from you about your academic needs, the more help I can provide! # Scribes/researchers Each week two or three students will collaborate to both capture the lecture material and provide pointers to further resources. Each student will work as either a *scribe*, whose role is to digest and synthesize the lecture material in a clear manner, or as a *researcher*, whose role it is to find outside resources related to the week's course material. The scribe and researcher students should collaborate to produce a single digital document (Google Doc or PDF are both acceptable) which should be sent to me by noon on Tuesday. You will be able to find a link to sign up for scribe and researcher slots on our [Piazza page](https://piazza.com/swarthmore/fall2020/engr028cpsc082). ## Scribes Since lectures are being recorded, what's critical for the scribe role is not to make an exact transcript of the class, but to offer some distillation and analysis. It may be helpful to focus on these questions: * What were the big ideas presented in class? * Why are they important? * What are the most vital definitions/equations/schematics? * How does this build on or relate to topics from previous weeks? Scribes may also find it useful to review the recorded lectures and tag parts of their notes with timestamps from the video. ## Researcher Outside materials from the researcher could be slides from a course at a different institution, YouTube videos, publications from robotics conferences or journals, or another type of online learning resource. Please avoid Wikipedia. Aim for five or so links each week, along with a couple of sentences for each item explaining why it was selected. # Software You will need an up-to-date installation of Python 3 on your computer. It's available through multiple distribution channels: * Mac or Windows: * [Anaconda](https://www.anaconda.com/products/individual#Downloads) - suggested for ease of installation and utility for other scientific computing. Use the Python 3.8 downlader for your platform. * Mac OS (note you will need to have XCode Developer Tools installed): * [Macports](https://www.macports.org/install.php) - `sudo port install python37` * [Homebrew](https://docs.brew.sh/Installation) - `brew install python` * The XCode Command Line Tools include Python 3.7 as of Mac OS Catalina * Windows: * [Python 3.7 on the Microsoft App Store](https://www.microsoft.com/en-us/p/python-37/9nj46sx7x90p?activetab=pivot:overviewtab) - super easy installation! * Ubuntu Linux 18.04 or above: * `sudo apt install python3` We will be using my own robotics simulator for many of the projects, [available on GitHub](https://github.com/swatbotics/ursim). To set up environments for the simulator, you will also find it useful to be able to edit [Scalable Vector Graphics (SVG)](https://en.wikipedia.org/wiki/Scalable_Vector_Graphics) files. For this, I recommend [Inkscape](https://inkscape.org/release/inkscape-1.0/) (free on multiple platforms). You can also use Adobe Illustrator, CorelDRAW and several other paid and free packages. # Accommodations If you believe you need accommodations for a disability or a chronic medical condition, please email Student Disability Services at studentdisabilityservices@swarthmore.edu to arrange an appointment to discuss your needs. As appropriate, the office will issue students with documented disabilities or medical conditions a formal Accommodations Letter. Since accommodations require early planning and are not retroactive, please contact Student Disability Services as soon as possible. For details about the accommodations process, visit the Student Disability Services website. You are also welcome to contact me privately to discuss your academic needs. However, all disability-related accommodations must be arranged, in advance, through Student Disability Services. # Schedule Please note that topics and dates are subject to change. Check this page frequently for updates, assignments, readings, etc. Sep. 8 2020: Introduction Topics: * Syllabus, labs, Piazza * Big ideas and goals for the course * Robotics history Resources/assignments: * [Robotics key points timeline](../robotics-history.html) * [E28 robot simulator on GitHub](https://github.com/swatbotics/ursim) - follow instructions in README * [Homework 1](homework1.html) Recording/notes: * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=b83d737d-7a37-4911-901a-ac30016226f7) Sep. 10 2020: Rigid transformations Topics: * Math review: matrices, etc. * Orthogonal and rigid transformations * Relating coordinate frames Resources/assignments: * [A practical (re-)introduction to linear algeba](../linalg-reintroduction.pdf) * [Python/numpy/matplotlib tutorial](http://cs231n.github.io/python-numpy-tutorial/) * [Code from today](live_coding/rigid_xforms_2020-09-10.py) * [Project 1: Line following and state machines](project1.html) Recording/notes: * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=4d781249-cc7d-4921-a902-ac32015185e9) * [Whiteboard notes](class_notes/2020-09-10.pdf) * [Week 1 scribe/researcher notes (Ando + Massari)](https://moodle.swarthmore.edu/pluginfile.php/598602/mod_resource/content/1/notes_week1_ando_massari.pdf) (2020-9-10): P1: Line following Sep. 15 2020: Simulator tour; state machines Topics: * Rigid transforms, cont'd. * A brief tour of the simulator code * State machines for robot behaviors Resources/assignments: * [In-class discussion questions](discussion_questions_week2.html) * [Homework 2](homework2.html) * [Code from today](live_coding/rigid_xforms_contd_2020-09-15.py) Recording/notes: * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=d2d3cc7d-9b65-4db3-a7f7-ac370149e4ea) * [Whiteboard notes](class_notes/2020-09-15.pdf) Sep. 17 2020: Differential drive kinematics Topics: * Relating linear and angular velocities * Estimating robot motion from wheel motion * Integrating motion over time Recording/notes: * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=9e437f73-5a1a-4751-9625-ac3901478247) * [Whiteboard notes](class_notes/2020-09-17.pdf) * [Week 2 scribe/researcher notes (Bouhadiba + Lubetkin)](https://moodle.swarthmore.edu/pluginfile.php/598784/mod_resource/content/1/notes_week2_bouhadiba_lubetkin.pdf) Sep. 22 2020: Sensors Topics: * Transducers * Analog to digital conversion * Passive vs active sensing * Proprioception Resources/assignments: * [Siegwart et al. 2011: Sensors](https://moodle.swarthmore.edu/pluginfile.php/598638/mod_resource/content/1/siegwart_sec4.1.pdf) * [Homework 3](homework3.html) * Code from today: [`callbacks_globals.py`](live_coding/callbacks_globals.py) and [`mymodule.py`](live_coding/mymodule.py) Recording/notes: * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=c3044fb0-f1ff-4abe-80c4-ac3e01473159) * [Whiteboard notes](class_notes/2020-09-22.pdf) Sep. 24 2020: Motors Topics: * Mechanics intro/recap: SI units, forces, and torques * Intro to brushed DC motor * Steady-state ciruit model * Torque-speed curves and torque-power curves Resources/assignments: * [Hughes & Drury 2013: Motors](https://moodle.swarthmore.edu/pluginfile.php/598637/mod_resource/content/1/hughes_ch3.pdf) Recording/notes: * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=2c4346fa-e1de-43d9-b378-ac400143c789) * [Whiteboard notes](class_notes/2020-09-24.pdf) * [Week 3 scribe/researcher notes (Adams & Meyer)](https://docs.google.com/document/d/1P1GVvtOypxm07JSRI9nkEgrDmz5h0IvSJ3BuUFJ0wec/edit?usp=sharing) Sep. 29 2020: Motors, cont'd Topics: * HW 2 recap * Gearing and motor efficiency * Digital control of DC motors: * H-bridge * Pulse-width modulation Resources/assignments: * [Project 2: Soccer](project2.html) * [Homework 4](homework4.html) Recording/notes: * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=46ef6732-58e0-40d0-a78a-ac4501448ab6) * [Whiteboard notes](class_notes/2020-09-29.pdf) (2020-9-29): P2: Soccer Oct. 1 2020: Navigation: Dijkstra's and A* Topics: * Robot navigation as graph search * Dijkstra's algorithm and A* * Application: footstep planning for legged robots Resources/assignments: * [Slides from class](fsp-astar.pdf) Recording/notes: * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=dea85e6a-2456-416d-b2b6-ac47014750de) * [Week 4 scribe/research notes (Adjei & Strachan)](https://docs.google.com/document/d/1XQE9NimSr5_MRW3-R9k_JwMyIjn1_9jajnuCne6aB48/edit?usp=sharing) Oct. 6 2020: HW 2 Review & Reading discussion Topics: * Code review for HW2 * Discuss Asaro readings Resources/assignments: * [Discussion questions for tomorrow's reading](discussion_questions_week5.html) * HW2 code [before](https://gist.github.com/mzucker/5c2ec29bc0f10683edea2d1e00c313c7) and [after](https://gist.github.com/mzucker/eb629759b1e2dfd21c38b132b820c751) optimization * [Homework 5](homework5.html) Recording/notes: * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=dde2b41a-017f-4bc6-8bde-ac4c0145eb1e) Oct. 8 2020: Introduction to Robot Ethics Readings/resources: * [Asaro & Wallach 2017: An Introduction to Machine Ethics & Robot Ethics](https://peterasaro.org/writing/Asaro%20Wallach,%20Machine%20Ethics%20Intro.pdf) * Note the breakdown of machine ethics & robot ethics into constituent areas of inquiry * Pay close attention to the four issues listed under "Growing attention" * [Asaro 2006: What should we want from a robot ethic?](https://peterasaro.org/writing/Asaro%20IRIE.pdf) * How are the ethical systems built into robots related to the ethics of people who design & use robots? Recording/notes: * Sorry, forgot to record today 🙁 * [Researcher links (Bartoshesky)](https://docs.google.com/document/d/1yHgv5RNZL5siF0lbB3PJrdiro_neYAOGM-EX63HqhRA/edit?usp=sharing) * [Scribe notes (Geselowitz)](https://moodle.swarthmore.edu/pluginfile.php/604270/mod_resource/content/1/E28%20Scribe%20Week%205.pdf) Oct. 13 2020: Intro to Kinematics Topics: * Intro to kinematic systems * Common configuration spaces Resources/assignments: * [Project 3: Maze navigation](project3.html) Recording/notes: * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=e511c867-2a3d-49ce-802a-ac5301440b58) * [Whiteboard notes](class_notes/2020-10-13.pdf) (2020-10-13): P3: Maze Oct. 15 2020: Tricycle and car kinematics Topics: * Wheeled vehicle kinematics * Instantaneous center of curvature * Example systems: tricycle and car Resources/assignments: * [In-class discussion questions](discussion_questions_week6.html) Recording/notes: * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=ccca632e-58d0-4af0-bc0c-ac550140806a) * [Whiteboard notes](class_notes/2020-10-15.pdf) * Scribe/researcher notes (Crawford and Curtis): [Tuesday](https://docs.google.com/document/d/1R1WTQqKGbSGXrkJgY9dkHLC2hjLvEYTQa5SGKye4Uxg/edit?usp=drive_web), [Thursday](https://docs.google.com/document/d/16Or1CG07qjRcYxsSJy23Mswk2VP99-LNAhUeuxyvqmU/edit?usp=drive_web) Oct. 20 2020: AI and AVs: An Overview of Ethical Challenges Topics: * Guest speaker: [Jason Borenstein, Georgia Tech](https://spp.gatech.edu/people/person/jason-borenstein) - "AI and AVs: An Overview of Ethical Challenges" Readings/research: * [Borenstein et al. 2019: Self-Driving Cars and Engineering Ethics: The Need for a System Level Analysis](https://moodle.swarthmore.edu/pluginfile.php/600677/mod_resource/content/1/Borenstein2019_Article_Self-DrivingCarsAndEngineering.pdf) Resources/assignments: * [Homework 7](homework7.html) Recording/notes: * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=865a5078-84a7-4445-abb4-ac5a01455631) Oct. 22 2020: Dynamics & feedback control Topics: * Mechanics intro/recap: Newton's second law * Simple dynamical systems Recording/notes: * [Whiteboard](class_notes/2020-10-22.pdf) * [Recording (second half only, sorry!)](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=99833660-e2a5-4685-a480-ac5c0144745a) * [Week 7 Scribe/researcher notes](https://moodle.swarthmore.edu/pluginfile.php/606918/mod_resource/content/1/E28_Week7.pdf) Oct. 27 2020: Pure pursuit, PD and PID control Topics: * Open-loop vs closed-loop control * Control of dynamical systems * Robot path following via pure pursuit * P, PD, and PID control Resources/assignments: * [Homework 8](homework8.html) * [Project 4: Slalom course](project4.html) Recording/notes: * [Whiteboard](class_notes/2020-10-27.pdf) * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=1cd380d1-c905-4221-b79d-ac610149d83c) (2020-10-27): P4: Slalom course Oct. 29 2020: Intro to probabilistic robotics Topics: * Probability basics * Bayes rule * Localization and probabilistic filtering Resources/assignments: * [Probability fundamentals](probability_cheatsheet.html) * [In-class exercise](week8_exercise.html) Recording/notes: * [Whiteboard](class_notes/2020-10-29.pdf) * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=190d24d9-ac42-4cfe-9194-ac630144b759) * [Week 8 scribe/researcher notes (Adjei & Hoganson)](https://moodle.swarthmore.edu/pluginfile.php/608172/mod_resource/content/1/Scribe%20notes_%20Week%208.pdf) (2020-11-3): No class - election day holiday Nov. 5 2020: Bayes filter Topics: * Discrete Bayes filter * Example application: hallway demo * Complexity analysis Recording/notes: * [Whiteboard](class_notes/2020-11-05.pdf) * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=b0f87932-cdbf-4fdb-9bff-ac6a015055a0) * Week 10 [scribe notes (Curtis)](https://docs.google.com/document/d/1o3YlARvciShjaLKtyhsn88EVgyAvrPxriHl0krtrLPc/edit?usp=sharing) and [researcher links (Crawford, Massari)](https://moodle.swarthmore.edu/pluginfile.php/609477/mod_resource/content/1/Week%209%20Researcher%20Links.pdf) Nov. 10 2020: Continuous random variables and sampling Topics: * Real-valued random variables * Probability density functions * Sampling continuous distributions Resources/assignments: * [Week 10 discussion questions](discussion_questions_week10.html) * [Homework 10 / final project proposal](homework10.html) Recording/notes: * [Whiteboard](class_notes/2020-11-10.pdf) * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=a0cb04a0-dbc5-404b-806d-ac6f01523b65) Nov. 12 2020: Particle filter Topics: * Particle filter * Example application: range-only measurement against beacons Recording/notes: * [Whiteboard](class_notes/2020-11-12.pdf) * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=b2b0f6fb-2285-4c62-8de3-ac710157783a) * [Week 11 scribe/researcher notes](https://docs.google.com/document/d/149fWBSNVaVpV4D2SRGaNWfZBS7jH8Uu8WQqLiDg2iyA/edit?usp=sharing) Nov. 17 2020: Particle filter applications Topics: * Particle filter applications * Beam sensor models * Odometry motion models Resources/assignments: * [Beam sensor models (Abbeel)](https://people.eecs.berkeley.edu/~pabbeel/cs287-fa11/slides/beam-sensor-model.pdf) * [Odometry motion models](http://ais.informatik.uni-freiburg.de/teaching/ss11/robotics/slides/06-motion-models.pdf) * [Homework 11](homework11.html) Recording/notes: * [Whiteboard](class_notes/2020-11-17.pdf) * [Finished beam simulation code](https://github.swarthmore.edu/gist/mzucker1/5ef21e9d1db68213af42aff4293a6bd1) * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=afd620fe-36a4-4643-b7cc-ac76014da9eb) Nov. 19 2020: Intro to manipulators Topics: * Serial chain manipulators * Problems in manipulation: FK, DK, IK * Forward kinematics * Analytical inverse kinematics Resources/assignments: * Matt's blog series on Sympy: [part 1](https://mzucker.github.io/2018/04/06/why-every-gfx-cv-robotics-programmer-should-love-sympy.html), [part 2](https://mzucker.github.io/2018/04/11/sympy-case-studies-part-2-derivatives.html), [part 3](https://mzucker.github.io/2018/04/12/sympy-part-3-moar-derivatives.html) Recording/notes: * [Whiteboard](class_notes/2020-11-19.pdf) * [Symbolic matrix multiplication code](https://github.swarthmore.edu/gist/mzucker1/523abb56e9e4142ded6ba36202099073) * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=47abdfc5-e52b-45e7-bd7d-ac780157af89) * [Week 11 scribe/researcher notes](https://moodle.swarthmore.edu/pluginfile.php/616102/mod_resource/content/1/E28_Week12%20%281%29.pdf) (2020-11-19): Final project begins (2020-11-24): No class (2020-11-26): Thanksgiving Dec. 1 2020: Differential and inverse kinematics Topics: * Formalization of manipulator kinematic systems * Algebraic vs geometric Jacobians * Force/torque relationships * Nonlinear least squares * Numerical inverse kinematics Assignments/resources: * [Homework 12](homework12.html) Recording/notes: * [Whiteboard](class_notes/2020-12-01.pdf) * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=f444e867-2de3-42de-964f-ac840156dc09) Dec. 3 2020: Final project check-ins Topics: * Final project check-ins * Course recap Recording/notes: * [Whiteboard](class_notes/2020-12-03.pdf) * [Recording](https://swarthmore.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=9e1197b6-db00-4f3e-9e48-ac86015118da) * [Week 12 scribe/researcher notes](https://docs.google.com/document/d/1hgihNz69Z3zogVUFP9Abo70eokH43wubHON93Se9N10/edit?ts=5fd5191c) Dec. 11 2020: Original final project deadline Dec. 12 2020: Post final project videos ***Deadlines:*** * Post your final project video presentation as a new note on the class Piazza (one post per group) **before midnight on Saturday, December 12**. The Piazza post should include: * A link to your presentation as a YouTube video (could be Public or Unlisted but not Private) or a Google Drive link viewable from swarthmore.edu logins. * A link to a publicly-viewable GitHub repository containing your code and any data files needed to replicate your project results. * A link to your presentation slides on Google Slides or a PDF attachment with your slides. * Reply to your classmates' posts with questions to earn class participation points (credit for up to three questions per student). Questions should be posted **before noon on Monday, December 14**. * Informative answers to questions from peers (and me!) will count towards your project grades. Answers should be posted by the final deadline to submit work for grading: before midnight on Tuesday, December 15. ***Presentation should address these points/questions:*** 1. Project title, team members 2. What's the central task or idea? 3. What are the criteria for success, or what hypothesis did you test? 4. What code did you write? 5. Include simulator screen shots, video capture, or live demonstration 6. Were you able to meet your criteria, or confirm your hypothesis? 7. What problems did you run into and how did you solve them? 8. What further work would you do if you had more time? ***Recording your presentation:*** * I suggest you record your presentation as a Zoom meeting between the group members. You can use Zoom screen sharing to put your slides up while you speak. * Try doing a quick test recording before your full run-through to make sure the technology works. * Please let me know ASAP if you're having technical difficulties -- it's hard for me to help debug at the last minute. ***Rough grading breakdown:*** * 30% code + functionality (NB: I must be able to reproduce your results!) * 40% presentation content (substantively address points above) * 20% presentation clarity, visuals, polish, delivery * 10% answers to post-presentation questions on Piazza Dec. 15 2020: Last day to submit graded work