#+TITLE: Intro to modern programming tools and techniques (1 semester version). Spring '17 #+AUTHOR: Artem Pianykh #+LATEX_HEADER: \usepackage[T2A]{fontenc} #+LATEX_HEADER: \usepackage[english, russian]{babel} #+LANGUAGE: en #+OPTIONS: ':t toc:2
The grading is available on [[https://docs.google.com/spreadsheets/d/1MakTaaqodRknx8lWdCKXM8wLHNZgIX82_tCZSBKDkoM/pubhtml][this page]].
- Goals The main objective of this course is to get familiar with modern software development tools and techniques including:
- working with a version control system,
- collaborative development through Github,
- working with dynamically types programming languages (R, Python),
- using Jupyter and RStudio for quick prototyping and visualization,
- using automated code testing,
- etc.
- Required software To start working on the course assignments you need to install:
- [[https://git-scm.com][git]] --- version control system,
- [[https://www.continuum.io/downloads][Anaconda]] --- a software package that includes Python and all necessary tools for data analysis and visualization,
- [[https://www.rstudio.com/products/rstudio/download3/][RStudio]] и [[https://cran.rstudio.com][R]] --- similar to the above, but for R programming languge.
The sotware is available for all major platforms: Windows, Linux, and Mac OS. However, Windws users may experience weird problems, so it's recommended to use a Unix-like system to work on the assignments.
Certain assignment may require additional software. Instructions will be provided as part of the assignment.
- Submission rules :PROPERTIES: :CUSTOM_ID: submission-rules :END: Each solution must contain:
- Working code and all other resources required to solve an assignment.
- File README.md or README.org with:
- a short description of the problem and your approach for solving it,
- an instruction on how to run the code,
- (for group assignments) a list of members and a short description of each member's contribution.
Assignments must be done in a group of 2 to 3.
All solutions must be submitted in a [[https://help.github.com/articles/creating-a-pull-request/][Pull Request]] to this repository.
The root directory for N-th assignment submission is submissions/taskN/names-of-participants.
Pull Request's branch should be named taskN-names-of-participants.
Example.
Studends Alice and Bob decided to work together on assignment #2.
First, they clone the current repository and create a new branch task2-alice-bob off of master.
The they create a directory submissions/task2/alice-bob where they put all files related to their solution.
When they have finished working on the solution, they commit their changes and send a Pull Request to master with a title Assignment 2. Alice, Bob.
From this moment on, their submissions is under review. The assignment is considered solved after successful review.
- Logistics and grading
There are 2 dates for each assignment:
- The date by which the code must be read and the Pull Request submitted.
- The data by which the review must be done (usually, +1 week after the first date). This extra time is given to students to address review comments and update their submissions.
Late submissions get a 50% penalty.
- Questions and discussions Each repository on GitHub has an Issues section. It is recommended to submit your questions as issues rather than by email because:
- issues are accessible by all,
- discussions are easier to follow,
- students can help each other.
- Assignments
- [[./tasks/task1.org][Assignment 1]]
- [[./tasks/task2.md][Assignment 2]]
- Useful resources ** Python
- [[https://www.codecademy.com/][Codecademy]] --- online platform with introductory courses on many programming languages including Python.
- [[https://www.scipy.org/][SciPy]] --- a library for scientitic computing including numerical integration and optimization.
- [[http://www.numpy.org/][NumPy]] --- a library for matric compotations.
- [[http://pandas.pydata.org/][Pandas]] --- a library for working with and manipulating structured data.
- [[http://matplotlib.org/][Matplotlib]] --- a charting library.
- [[https://jupyter.org/][Jupyter]] --- an interactive Python environment. ** R
- [[https://www.datacamp.com/][Datacamp]] --- online platform with courses on R, starting with the basics or the language, to data manipulation, to analysis and visualization.
- [[https://www.rstudio.com/][RStudio]] --- an IDE for R. ** MOOCS
- [[https://www.coursera.org/browse/computer-science?languages=en][Coursera -- Computer Science]] --- a selection of courses and specializations around Computer Science.
- [[https://www.coursera.org/browse/data-science?languages=en][Coursera -- Data Science]] --- a selection of courses and specializations around Data Science.