Databinge Guidelines for choosing a first programming language and learning to code:
Preamble: Coding is becoming an essential tool in 21st century research due to the volume of data being generated by new technologies and openly shared on the internet as more and more adoption of Open Science occurs. Databinge continues to offer help with coding both impromptu and more structured “intro to programming” sessions in R, python and MATLAB. Those new to coding often ask which language to start with and we offer these suggestions after a group discussion at Databinge on June 24, 2022:
- Research Community: Look at what those in your field are using. It is seldom worth reinventing the wheel even if the language is not your top choice. Almost certainly you will code in several languages in your career, and learning an additional coding language is far easier than the first.
- Goal Oriented: Having a clear objective (often a dataset you are interested in exploring) is great for motivation. Like learning another language to communicate, programming requires regular practice and it can be difficult to maintain your motivation and interest solving toy examples or working with abstract concepts.
- Expect Frustration: It takes time to hone problem solving skills so that your solutions are readily programmed. As much so, it takes time to figure our how to find the info needed in documentation or on the internet to troubleshoot when you get stuck (e.g. understanding error messages, locating software and functions for specific tasks and piecing information together from many sources). This is not unusual. Be patient with yourself.
The Databinge team is an indispensable resource to assist in your acquisition of programming skills. Those on the team have arrived at programming proficiency in a variety of ways, some are self-taught, others formally trained; but all are ready to offer assistance and help you get the most out of your efforts.
DYNAMIC BRAIN CIRCUITS “INTRO TO PROGRAMMING” COURSES
As part of our Digital Research Alliance of Canada Data Champions Pilot Project, we have organized introductory courses for MATLAB, Python, and R. These will be led by the Databinge graduate student peer tutors. No prior experience is required. Rough outlines of topics are listed below. Start date: Oct 14, 2022. Please email firstname.lastname@example.org to be added to the Slack channel.
R tutorial: We will use materials from the UBC Master of Data Science program. Material can be found on our GitHub Page. Rough schedule:
- Week 1: Intro to R, setting up a programming environment, data types, getting help
- Week 2: Intro to R, reading data into R, data cleaning and pre-processing
- Week 3: Intro to R, control flow (if-else, loops, pipes, etc.)
- Week 4: Intro to R, writing functions, best practices
- Week 5: Working with R, visualizations using ggplot
- Week 6: Working with R, differential expression analysis using Limma-voom (or maybe DESeq2)
- Week 7: Working with R, dimensionality reduction
- Week 8: Working with R, statistical analysis: sampling, bootstrapping, hypothesis testing, etc
- Week 9: Working with R, developing interactive web apps using R Shiny
- Week 10: Working with R, how to handle big data
MATLAB tutorial: We will use the MATLAB materials from the DMCBH NINC MATLAB course available on the DBC Github organization. Rough schedule:
- Week 1: Install and Intro
- Week 2: Matrices & Basic Indexing
- Week 3: Basic & Logical Indexing
- Week 4: Strings
- Week 5: Figures & Plots
- Week 6: Review & Worked Image processing example
- Week 7: Loops 1
- Week 8: Loops 2
- Week 9: If Statements
- Week 10: Functions
- Week 11: Files
- Week 12: Input from Keyboard and Mouse
- Week 13: Intro to User Interfaces
Python tutorial: We will use the material from the Allen Institute for Brain Science/University of Washington Summer Workshop on the Dynamic Brain Python bootcamp. These are available on Github.
- Week 1: Notebooks 00_introduction & 01_Basic_Python_I_Object_and_Data_Structures
- Week 2: 02_Basic_Python_II
- Week 3: 03_Intro_to_Scientific_Computing & 04_Intro_to_numpy
- Week 4: 05_Custom_Modules_and_Version_Control
- Week 5: 06_Introduction_To_Matplotlib
- Week 6: 07_Introduction_To_Pandas