/prac-2017-2018

Intro to modern programming tools and techniques for CMC MSU students. Fall ‘17 - Spring ‘18

Primary LanguageJupyter Notebook

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.

Submission rules

Each solution must contain:
  • Working code and all other resources required to solve an assignment.
  • File README.md or README.org with:
    1. a short description of the problem and your approach for solving it,
    2. an instruction on how to run the code,
    3. (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:

  1. The date by which the code must be read and the Pull Request submitted.
  2. 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