UofTCoders / grad-course

0 stars 1 forks source link

Lectures/Course Outline Discussion #3

Open linamnt opened 5 years ago

linamnt commented 5 years ago

Some quick brainstorming after taking into account what @lwjohnst86 @SaraMati discussed in https://github.com/UofTCoders/council/issues/286

  1. Programming in Python:
    • Basics (data structures, functions, looping, if/else, booleans etc.)
    • OOP (when to use classes, benefits of modularity, methods, attributes)
    • Exploratory Data Analysis (including visualization)
      • pandas, seaborn, matplotlib
    • high dimensional biomedical data: best practices
    • Statistics (scipy.stats, numpy)
    • look through video lectures from bioinformatics.ca for more ideas
  2. Version Control + Project Management Workflow
    • using Git and GitHub generally
    • working collaboratively + reproducibly using version control and other good practices
    • set up their project repo
    • testing their code
  3. Making a scientific product (paper, poster, jupyter notebook for blogs or supplement to technical papers):
    • LaTeX, Markdown, Pandoc etc. (note, we know we should focus on only one of these and stay consistent for the course, just listing options)
  4. Guest Lectures for second half of course professors or post-docs/grad students with established scientific workflows for specific cases (e.g. fMRI image analysis, neuronal image segmentation, network analysis/connectomics, biophysical/electrophysioogical modelling (single cell, networks etc), RNAseq analysis, EEG analysis)
lwjohnst86 commented 5 years ago

Great that this is getting going!

I think there should also be topics on the lifecycle of an analysis project, from inception to publication... and how to do it in a reproducible and openly scientific way. This relates to some things I want to develop more, so I'll add more thoughts when I've get more into these topics, probably more later in the month.

linamnt commented 5 years ago

As an aside, on the topic of OOP: We should probably not do a lecture on OOP too early on. If this is a neural data science course, I don't see many actual use cases when dealing with data exploration and stats etc. It of course comes in handy when you're building models or doing very specific analyses with unconventional datatypes but these are going to come later in the course anyways.

We can first introduce it in terms of using packages like pandas or scikit-learn which are object oriented, they have methods, attributes etc, we can mention it, but not sure we need to teach separately.

I would rather first focus on the data workflow than teach the entire concept of OOP which can get a bit hairy. When/if we do introduce classes, methods, inheriting from parent classes etc. we should come up with very specific but understandable examples where we have good reasoning for why we're using OOP for our analyses/simulations.