KIN 482E Advanced Seminar in Neuromechanics ("Programming and Data Science for Kinesiology"); 2023 Winter Term I; 3 credit hours
Mon and Wed, 9:30 - 11:00 am, UBC Life Building (Room 2214)
Learn how to write code and use data science tools for processing, analyzing, and interpreting data.
Long version: This course provides hands-on experience with learning to program in Python. Students will learn how to think algorithmically in order to process, visualize, and analyze data related to all types of research questions. Through a combination of readings, lectures, tutorials, and problem sets, students will learn some of the most important tools and techniques in the Python data science ecosystem. This course will be especially useful for undergraduate students interested in getting actively involved in research at UBC. In addition, this course provides a strong background for future advanced undergraduate and graduate work in computational approaches to kinesiology, including modeling. However, even for students who do not plan to do scientific research in the future, this course will still provide a solid foundation in core computing and data science skills that will serve them well whether going into industry, healthcare, or another technical field.
We will be using an open-source textbook available for free on the Web: https://hyosubkim.github.io/datasci-for-kin/intro.html.
Students are required to bring a laptop to both lectures and tutorials. Students who do not own a laptop may be able to borrow a laptop from the UBC library.
All other required software will be provided by the instructors. Students will learn to perform their analysis using the Python programming language. Tutorials and assignments/problem sets will be completed using Jupyter Notebooks accessed via UBC's JupyterHub.
Completion of two of the following courses:
- KIN 310 "Human Functional Musculoskeletal Anatomy"
- KIN 311 "Sensorimotor Control of Human Movement"
- KIN 313 "Neuromuscular Integration of Human Movement"
- KIN 316 "Biomechanical Properties of Tissues"
- KIN 411 "Neuroanatomy of Human Movement"
- KIN 419 "Laboratory Investigations in Neuromechanical Kinesiology"
IMPORTANT: This class is targeting beginners, so no prior programming experience is expected or required. However, if you do have prior programming experience, especially in another language, you may still benefit from this course.
By the end of the course, you will be able to:
- Write code in a high-level programming language (i.e., Python).
- Process, visualize, and analyze data using some of the most powerful (and popular) tools in data science (e.g., pandas, NumPy, Jupyter).
- Effectively visualize and present the results of your data analyses.
- Apply your computing and data science skills towards working with and understanding neural and kinematic data.
- Approach and solve novel problems in a logical, step-wise (algorithmic) manner.
- Leave the class well-prepared to advance your programming and data analysis skills, whether in advanced undergraduate or graduate courses (e.g., statistics, modeling, machine learning, etc.), academic research, or industry.
Professor: Hyosub Kim, DPT, PhD
Email: [email protected]
Office Hours: By appointment.
Please read the course policy (e.g., late registration, missing quiz/assignment due to sickness) below before contacting the instructor.
We are here to guide and instruct you, and you will be best served by being engaged in class and engaging your teaching team in person. The best time to ask questions is during class time. Regarding questions that come up outside of class time, please follow these steps prior to requesting an appointment or emailing the instructor:
- Check the syllabus
- Check the course materials, including the textbook and your notes
- Check the course Canvas page
- Ask your classmates, including by posting questions to each other on the Discussions page on Canvas. Ideally, this can serve as an additional platform for you to help, and learn from, each other. Your teaching team may occasionally check the boards, but do not expect feedback over Canvas (i.e., these discussions are for you, the students).
Due to the difficulties in aligning everyone's schedules, there are no formal office hours; however, if you still have questions after following the steps outlined above, please contact me, and we can schedule a meeting. Please be advised that I will not do any teaching over email, and if the answer to your question can be readily found through one of the steps outlined above, it is unlikely that you will receive a direct reply to your message.
This course will generally follow a schedule of one lecture, one tutorial/lab per week. One thing that you may find different about the course format is that we will employ a flipped classroom approach for > 50% of the time. This means that class time, even during "lecture" days, is not used primarily for conveying information, the way a normal lecture-based class operates. Rather, there will be mini-lectures at the start of class that highlight key concepts, and the remaining time will be used for practicing the new coding skills you will be learning. This has been shown to be a highly effective way to teach beginners how to program (see here). The lecture days will generally have more lecture content than tutorial days, which are mostly devoted to continued application of the skill/concept taught during the Monday lecture. Therefore, there is a strong emphasis placed on being prepared for each class session, usually through staying on top of readings and assignments, as well as keeping track of questions that arise and asking them during class. Class time is an opportunity for students to discuss the course material, practice their skills, and ask questions to the teaching team and each other. Remember that coding is a skill, and like any skill, it requires significant practice within and outside of class.
Category | Percent Grade |
---|---|
DataCamp assignments | 5 |
Tutorials (labs) | 15 |
Assignments | 20 |
Quizzes (3) | 60 |
- Quiz 1 (in-person): Wed, October 4
- Quiz 2 (in-person): Wed, November 8
- Quiz 3 (in-person): TBD
These assessments require a thorough understanding of the course material. You will be required to demonstrate your ability to write code and problem solve through answering a combination of multiple choice, short answer, and conceptual questions. You may also be asked to process, visualize, and/or analyze data. The final quiz will be scheduled for sometime during December 11 - 22. Do not book any travel plans for this time until the final quiz has been scheduled.
An assignment/problem set will be assigned roughly every other week. Due dates will be posted on Canvas. To open the assignment, click the link provided on Canvas to get to JupyterHub. We will go over in detail the proper steps to submiting your assignments during the first class session. Briefly, to submit your assignment, make sure your work is saved (File -> Save and Checkpoint to be sure) on the JupyterHub server, download the notebook to your personal computer, and then upload it to the appropriate Assignment on Canvas. It is critical that you check your notebook before submitting by clicking "Kernel -> Restart Kernel and Run All" and making sure that it runs properly from top-to-bottom without any errors. This is the first step we will take in grading your assignments and if it does not run error free, no credit will be given for the assignment.
Assignment 0 will be worth 1%. Assignments 1-6 will be worth between 3-4% each.
We will also drop your lowest score from Assignments 2-6 when calculating your final grade.
Each week, there will be a tutorial/lab notebook that must be completed, typically before the start of the next week (exact dates will be posted to Canvas). Follow the same steps as you would for a problem set in order to access the tutorial and submit your completed version to Canvas. Tutorial notebooks must also run from top to bottom without any errors to receive any credit.
In this course, we will leverage the significant resources that DataCamp, a massive open online course (MOOC) platform for data science education, can provide. The teaching team will add all students registered in this class to the class DataCamp "group", using the email address you provide to us*. You will receive an invitation email from DataCamp with a link that will allow you to set a password. Once you have logged in for the first time, you will get to your assignments by clicking on "Learn" in the upper left menu, and then "Assignments" in the lef-hand menu that follows. On the right, there is a trophy icon to see the leaderboard. This is a DataCamp-specific feature that tracks all students' progress, but it has no bearing on your grade---so keep the competition friendly!
*DataCamp is a US-based company and the data they collect are stored in the US. Although you do not have to provide them any information besides an email address, if you still have privacy concerns, you may wish to create an email account specifically for this service that is not tied to your UBC identity.
Each DataCamp assignment has a due date, which conveys when you need to have covered that material in order to keep up with the work in KIN 482. Each one has an estimated duration that you'll see when you start it, and these seem fairly accurate. DataCamp will remember your progress, so you don't have to complete an assignment all in one sitting. You can work in smaller or larger chunks at your preference, log off, and log back on to resume the course later. Note that with DataCamp you have as many opportunities as you need to provide the correct solution. This part of your grade is essentially making sure you are practicing the skills you need to succeed in the course and write functional code.
This schedule is subject to change during the semester. However, you will always be notified in advance (through a Canvas announcement) of any upcoming changes.
Week | Topic | Description |
---|---|---|
0 | Introduction to Course | Learn the tech stack used in the course, especially Jupyter notebooks |
1 | Introduction to Python | Learn about variables and assignment, converting variable types |
2 | Python built-ins, lists, dictionaries | Learn how to store data in two key Python types, lists and dictionaries |
3 | Flow control | Learn about loops and conditional (i.e., "if-then") statements |
4 | Quiz 1 | Cover concepts from preceding weeks |
4 | Functions | Learn how to write your own custom functions for repeated tasks |
5 | Functions (continued), File I/O and pandas | Learn how to read in and manipulate data with the powerful Python library pandas |
6 | Data visualization with Matplotlib | Learn the principles of effective visualizations with Matplotlib |
7 | More data visualization with seaborn | Learn how to effectively visualize statistical relationships with seaborn |
8 | Intoduction to Exploratory Data Analysis | Learn how to effectively extract information from your data; also learn about repeated measures design studies |
9 | Introduction to Basic Stats with Python | Learn how to conduct familiar statistical analyses in Python |
9 | Quiz 2 | Covers concepts from preceding weeks |
Midterm Break | ||
10 | Single Unit Data & Spike Trains | Apply your programming skills to neural data; also learn about numerical computing using the famous Python library NumPy |
11 | Signal Processing | Learn the principles of signal processing and apply them to analyzing kinematic data |
12 | Leveling Up Your Data Science Skills | Everything you ever wanted to know about installing the scientific Python ecosystem on your computer/the terminal/version control but were afraid to ask |
TBD | Quiz 3 | Covers concepts from preceding weeks. Do not make travel plans for anytime between December 11 - 22 until quiz has been scheduled. |
Students who register for the class late have 1 week from their registration date on Canvas to complete all prior assignments.
Students must be present at the invigilation venue (in class, examination centre, etc) to take exams; otherwise, they will be considered to have missed the exam and will be assigned a grade of zero.
Students who miss a quiz/exam will receive a grade of zero for the quiz/exam unless there is an acceptable reason and/or supportive documentation provided to the instructors. You must apply for deferred standing (academic concession) online here. Only your faculty advising office can grant deferred standing in a course. Your instructor will let you know when you are expected to write your deferred exam. Deferred exams will ONLY be provided to students who have applied for and received deferred standing from their faculty.
There will be no extensions for the tutorials and assignments; late assignments will receive a grade of zero.
Students are responsible for using a device and browser compatible with all functionality of Canvas. Chrome or Firefox browsers are recommended; Safari has had issues with Canvas quizzes in the past.
Please see UBC's concession policy for detailed information on dealing with missed coursework, quizzes, and exams under circumstances of an acute and unanticipated nature.
The academic enterprise is founded on honesty, civility, integrity, and accountability. As members of this enterprise, all students are expected to know, understand, and follow the codes of conduct regarding academic integrity. At the most basic level, this means submitting only original work done by you and acknowledging all sources of information or ideas and attributing them to others as required. This also means you should not cheat, copy, or mislead others about what is your work. Violations of academic integrity (i.e., misconduct) lead to the breakdown of the academic enterprise, and therefore serious consequences arise and harsh sanctions are imposed. For example, incidences of plagiarism or cheating may result in a mark of zero on the assignment or exam and more serious consequences may apply if the matter is referred to the President's Advisory Committee on Student Discipline. Careful records are kept in order to monitor and prevent recurrences.
A more detailed description of academic integrity, including the University's policies and procedures, may be found in the Academic Calendar.
Cases of plagiarism may include, but are not limited to:
- the reproduction (copying and pasting) of code or text with none or minimal reformatting (e.g., changing the name of the variables)
- the translation of an algorithm or a script from one language to another
- AI-generated code (e.g., ChatGPT, GitHub Co-Pilot)
Plagiarism of any form will result in serious penalties, up to and including failure of the course.
UBC provides resources to support student learning and to maintain healthy lifestyles but recognizes that sometimes crises arise and so there are additional resources to access including those for survivors of sexual violence. UBC values respect for the person and ideas of all members of the academic community. Harassment and discrimination are not tolerated nor is suppression of academic freedom. UBC provides appropriate accommodation for students with disabilities and for religious observances. UBC values academic honesty and students are expected to acknowledge the ideas generated by others and to uphold the highest academic standards in all of their actions.
Details of the policies and how to access support are available on the UBC Senate website.
UBC's Vancouver Campus is located on the traditional, ancestral, and unceded territory of the xʷməθkʷəy̓əm (Musqueam) people. The land it is situated on has always been a place of learning for the Musqueam people, who for millennia have passed on their culture, history, and traditions from one generation to the next on this site.
To learn more about the relationship between the Musqueam people and UBC, you may find this webpage helpful.
Portions of this syllabus, most notably the Policies section, have been adapted from the syllabus for UBC's DSCI 100 course, which in turn is based on UBC MDS Policies and UBC's Campus-wide Policies and Regulations. Information regarding DataCamp was adapted from Prof. Aaron Newman of Dalhousie University's Neural Data Science course.