The UBC Scientific Software Seminar is inspired by Software Carpentry and its goal is to help students, graduates, fellows and faculty at UBC develop software skills for science.
- What are the learning goals?
- To develop software skills for managing data files and collaborative software projects with the Bash shell and Git/GitHub
- To learn Python programming for scientific computing
- To learn mathematics and statistics applied to data science and machine learning
- To meet and collaborate with other students and faculty interested in scientific computing
- What software tools are we going to use?
- Bash Shell: working with the file system from the command line
- Git/GitHub: managing projects locally from the command line using Git and collaborating online with GitHub
- Python: datatypes, logic, loops, functions, classes and objects
- Jupyter Notebooks: execute code with accompanying text, markdown and LaTeX all in the browser
- SciPy Stack: scientific computing with NumPy, SciPy, matplotlib and pandas
- scikit-learn: machine learning in Python
- What scientific topics will we study?
- Calculus, linear algebra, probability and statistics
- Data wrangling, analysis and visualization
- Basic machine learning
- Where do we start? What are the prerequisites?
- Basic calculus, linear algebra, probability and statistics
- Basic programming experience in any language (in particular, familiarity with logic, loops and functions)
- No prior experience with the command line is required
- No prior experience with Git/GitHub is required
- Who is the target audience?
- Everyone is invited!
- If the outline above is at your level, perfect! Get ready to write a lot of code!
- If the outline above seems too intimidating, come anyway! You'll learn things just by being exposed to new tools and ideas, and meeting new people!
- If you have experience with all the topics outlined above, come anyway! You'll become more of an expert by participating as a helper/instructor!
Summer 2016 will consist of six 2-hour seminars held weekly from mid-July until the end of August:
- Week 1 - Wednesday July 20 - 10am-12pm - IBLC 261 [Notes]
- JupyterHub
- Jupyter Notebooks
- Git/GitHub
- Week 2 - Wednesday July 27 - 10am-12pm - IBLC 261 [Notes]
- Git/GitHub: clone, push and pull, and collaborate
- Bash commands for navigating the Linux file system
- Python datatypes:
int
,float
,str
,list
,bool
- Week 3 - Wednesday August 3 - 10am-12pm - IBLC 261 [Notes]
- Bash commands and scripts
- Python: logic, loops and functions
- A quick intro to NumPy and matplotlib
- Week 4 - Wednesday August 10 - 10am-12pm - IBLC 261 [Notes]
- A tour of the SciPy stack: NumPy, SciPy, matplotlib and pandas
- Week 5 - Wednesday August 17 - 10am-12pm - IBLC 185 [Notes]
- SciPy Example: Fitting Wind Speed Distributions to the Weibull Distribution
- A tour of scikit-learn (following example notebooks by Gael Varoquaux)
- Week 6 - Wednesday August 24 - 10am-12pm - LSK 201 [Notes]
- A basic machine learning example:
- Digits dataset
- Our own k-nearest neighbors classifier
- Evaluating the classifier
- Implementing
sklearn.neighbors.KNeighborsClassifier
- A basic machine learning example: