Goals for everyone in the course
- Make a pull request (PR) into a widely used open source repository
- Write a manuscript with your group
If you feel your goals/desires don’t fall under either category, please talk to us so we can see if something else would be feasible.
Neuro Data Design (NDD) is a year-long project-based course where students work in teams of four to six. We offer two different levels: 4xx and 6xx. The 4xx is designed for undergraduates with background in engineering and data science and the 6xx is designed for more advanced undergraduates and graduate students. Teams are encouraged to include students at both levels, as each level brings a unique and valuable perspective. The goal of the course is to create an inspirational environment in which each of the students works on a team to build a data science product “soup to nuts”, starting with ideation and ending with publication. Specifically, we aim for every student in NDD to complete a research artifact (code package, data analysis, manuscript, publication) that they are responsible for by the end of the year. Along the way, students learn skills that will serve them well in industry, academia, or government. To facilitate these goals, the course is divided into Sprints.
Goals by Sprint
The course is focused on contributing easy-to-use, well tested, well documented code to open source software repositories (repos). The instructors will provide a list of repos to contribute to and a list of issues that need tackling. We will fork the public version of these repos, and students will make pull requests (PRs) into those forks. After iterating with the instructors, students will submit their PRs to the public repos, and iterate with the developers to get their PRs merged.
The duration and major goals of each sprint is detailed below:
- Sprint 0 (fall semester until September 30, 2020) is devoted to self-understanding.
- Pick an issue in your team’s forked repo to work on.
- Make an issue in the corresponding real repo detailing the changes you intend to make.
- Make a semester-long plan / list of deliverables detailing how you will solve this issue.
- Start making progress on you issue.
- Note: Sprint 0 is meant to be a little confusing! Fully understanding and scoping a yearlong project is hard. It’s important to take this time with your team and instructors to synthesize as much background as you can.
- Sprint 1 (fall break until the day of the NDD fall final) is devoted to learning basic data science skills. You will implement or fix some algorithm, or demonstrate its capabilities and limitations.
- Successfully merge your PR into our fork of a repo. This means that the TAs must approve the code you have written (see PR guidelines). This process requires time and multiple iterations! Be prepared to submit your first draft of the PR at least 3 weeks before the final for NDD.
- Submit your PR to the real repo.
- Sprint 2 (spring semester until spring break) is devoted to applying basic data science knowledge.
- PR merged into real repo.
- AND (optionally) running your newly-developed methods on real data!
- Sprint 3 (spring break until the day of the NDD spring final) is devoted to technically communication and knowledge transfer.
- Manuscript submitted to arxiv detailing your contributions to the open-source scientific software ecosystem.
- OR another PR merged into a real repo.
Teams will be formed prior to joining the course. Students will rank projects in a public survey (meaning all students will be able to see the project preferences of their peers). Based on these results, students will self-organize into teams. Once a team has been finalized, I will approve all members to enroll in NDD.
We have class three times per week. The bulk of the classroom time, however, is spent with student presentations. Each week each student presents their progress from the previous week, and their plan for the next week. Please see this slide deck for an example of what slides are expected to look like, along with written explanations of why these are good slides.
These presentations are specifically for instructors to provide students feedback on how students can improve. Presentations are not intended to be status updates or final reports — they are meant to encourage iteration and progression to the correct goal. Feedback is provided in written form to each student for each presentation, and verbal feedback is provided whenever it seems generally useful for other students. Please note that the feedback we voice is intended for everyone. Students are encouraged to take notes during presentations directly on the slides so that instructors/team/student are all on the same page.
Each team also meets at least once more per week to prepare their presentation, and work together. About once per week we provide a lecture on some relevant data science content, typically content not available otherwise online. This year, for Fall 2020, the teams will present on the following days:
- Mondays: brainlit, graspy
- Wednesdays: ndforest teams
This course is based on my experience as an academic, and entrepreneur, an advisor, and an instructor. It is designed to be the best class you’ll ever take. You will learn (by doing and getting feedback) the skills that I have found particularly useful in my endeavors. It will be organized into weekly sprints. Weekly progress will be reported documenting goals towards your team sprints, with sprint demo’s to happen at the close of each sprint. Each team will be graded jointly on the basis of meeting the sprint goals, as well as providing clear and concise weekly progress reports.
The main “skills” you will learn in this class include:
- How to choose a project significant for the world, feasible for you, and that you are intrinsically motivated to complete (see my blog post).
- How to scope work so that you can achieve weekly progress towards quarterly goals (see smart goals).
- How to effectively communicate technical content.
- How to generate publication quality figures (see figure checklist).
- How to complete a wide set of data science tasks, spanning from data wrangling to statistical modeling.
- How to peacefully and productively work with a diverse team of passionate individuals.
The 4xx and 6xx course will provide 4 credits in both the Fall and Spring. For BME undergraduates, these count towards your Design requirements.
Admittance to this course requires approval from the instructor, to ensure the students in the course are sufficient diverse along a number of dimensions. To gain admittance, you must:
- Be more excited about this course than any other academic endeavor for the year. Nobody is required to teach or take this course, and since so many people want to take it each year, preference is given to those that are most passionate about the material.
- In practice, people commonly spend up to 20 hrs per week in this class, or more. It is often rated one of the most challenging courses, so please consider that when making your course schedule. Priority will be given to students that certainly have room to be successful in the course.
- Background in numerical programming is required. Particularly, the more experience a student has in numerical programming, the better. Prior experience with GitHub is highly encouraged.
- See the Join page for more information on how to get enrolled.
Code of Conduct
Everyone taking the course is required to abide by the Neurodata Code of Conduct. If you have questions or suggestions for making the code of conduct better, let us know.
This class communicates largely in Slack. Please join our Slack workspace at to get involved. Regular updates are provided in Slack, and the instructors will assume you have received them. TA will answer questions from slack approximately within 48 hours.
- We encourage students to come to class on Fridays for additional feedback.
- On days when teams are not presenting, we encourage students to meet (either with or without their TA) and discuss their project.
- TAs may be available outside of class for office hours.
In general, it is expected that all students will be most excited about this class, and therefore invest a minimum of 12 hours of effort per week in the fall and spring. Assuming you at least convince Jovo and TAs of this level of effort, and address their weekly feedback, you should expect an A. Anybody in danger of not receiving an A will be told so by Jovo, and given clear requirements in order to bring your grade back up to an A. Anybody not receiving an A in the first semester will not be invited back for the second semester.
Each week students will be graded on the degree of completion of their deliverables, typically including both a qualitative and quantitative result. After your presentations, instructors will provide detailed feedback on your slides, with instructions on how to improve them. Grades will be provided on the basis of your ability to complete the tasks you set out to perform, and update slides on the basis of other’s input. In addition, slides should have research artifacts for each task (whether completed or not).
Open Source Projects
The list of projects for the 2020-2021 academic year can be found here. The repos we typically contribute to include
Steven Covey, author of “Seven Habits”, states that the 7th habit is “sharpening our sword”, which means (for this class), getting feedback and seriously considering it. Every person involved in the class will therefore be required to provide feedback to others, including the instructor. Students will also identify properties of the class which gruntle or disgruntle them, so that we may make adjustments.
So far, the students have determined that the class is quite good, with an average overall quality of 4.71, as compared to the department’s average of 3.95, and the schools average of 4.09 (see Table 1 for details). This is despite the fact that course is also typically ranked one of the most difficult and time-consuming courses.
Quantitative teaching evaluations for all NeuroData Design courses is shown below. Numbers represent “overall quality” of the course. Scores out of 5 (4 = “good”; 5 = “excellent”). Response rates: All but 2 students ever responded. The mean number of students is per semester (ignoring winter session and joining across multiple course levels if they met during the same time. Note that course evaluations for several course numbers are not available online, including 638.SP18 and 497.FA18.
|Semester||# Students||Quality (NDD)||Quality (Dept)||Quality (School)||Challenge (NDD)||Challenge (Dept)||Challenge (School)|
Reviews for every course that Jovo has ever taught can be found here.
ABET Student Outcomes
- (a1) Apply knowledge of advanced mathematics (calculus, differential equations, linear algebra, statistics) to problems at the interface of engineering, biology and medicine
- (a5) Mathematically model and simulate biological systems using computers
- (b1) Formulate hypothesis for experiments, including those on living systems
- (b4) Display, describe, summarize and interpret experimental results in a lab report
- (c1) Identify a desired need and define the biomedical engineering problem to be solved
- (c2) Determine the constraints to the problem and assess the successful likelihood for different approaches
- (d1) Communicate opinions, viewpoints and expertise with other team members
- (d2) Understand team goals and assume and fulfill individual responsibilities within the team
- (e3) Solve problem using experimental, mathematical and/or computational tools
- (g1) Synthesize, summarize and explain technical content in a written report
- (g2) Synthesize, summarize and explain technical content in an oral presentation
- (k1) Gain proficiency in computer simulations and mathematical analysis tools