Intro to modern programming tools and techniques. Fall ‘17 - Spring ‘18
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:
- git — version control system,
- Anaconda — a software package that includes Python and all necessary tools for data analysis and visualization,
- RStudio и 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.
Each solution must contain: Submission rules
- 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.
Zeroeth assignment must be done individually. Other assignments can be done in a group of 2 to 3.
All solutions must be submitted in a 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
Useful resources
Python
- Codecademy — online platform with introductory courses on many programming languages including Python.
- SciPy — a library for scientitic computing including numerical integration and optimization.
- NumPy — a library for matric compotations.
- Pandas — a library for working with and manipulating structured data.
- Matplotlib — a charting library.
- Jupyter — an interactive Python environment.
R
- Datacamp — online platform with courses on R, starting with the basics or the language, to data manipulation, to analysis and visualization.
- RStudio — an IDE for R.
MOOCS
- Coursera – Computer Science — a selection of courses and specializations around Computer Science.
- Coursera – Data Science — a selection of courses and specializations around Data Science.