Welcome to the University of Pittsburgh Department of Industrial Engineering Pre-MS preparation page. In order to enhance your experience in the program, we suggest a few technical areas that you might want to brush up on – **these are optional**, but our experience is that they would be a great way to get ready for the MS program if you have some time on your hands between now and August! Specifically, you should review scientific programming, statistics, and linear algebra.

**Computer Programming**

Choose one of these three technical computing languages to learn/review. Python (SciPy), R, and Matlab are all built on well established linear algebra and other numerical libraries. After you learn one, it is not difficult to move to another of these three. Each of these has a base language, but the true capabilities of each language platform are the libraries and packages that are available. In practice, the choice of language should be based on how available packages match the specific task. Note that Python and R packages tend to be free, while Matlab packages need to be purchased separately.

For each language, we recommend an online workshop (Software Carpentry, which focuses on technical computing), a freely available book for reference (can be used if the online course is not available), and we provide additional references for using the language with linear algebra and statistics. We also suggest a fuller course if you have time.

Other than Matlab, the software and the books listed are freely available for a variety of operating systems. Python is used in a wide range of technical and non-technical areas including optimization, numerical methods, statistics, data manipulation and analysis, and many specialized areas of mathematics. Matlab/Octave is used in areas of numeric computation, such as optimization and other numeric methods (Note that Matlab is limited in statistics compared to R or Python without additional purchased libraries). R is principally used in statistics and data analysis. (Note: R is used in IE 2005, 2007, 2064)

If your programming background is deficient or unsure, we suggest you learn one language this summer as it will help get your mind used to learning on your own outside of class instruction, which is the biggest difference between graduate school and your undergraduate education.

For the language you select, you will need to (a) obtain the language and integrated development environment (IDE), and (b) go through a short workshop on scientific programming. We also identify some references that you can download.

- Python (Scipy). Note that Python is heavily used in a number of different scientific and mathematical domains in addition to the general computing that it is most known for. You should get Python and learning materials from sources that focus on the needs for technical computing (as opposed to general or internet applications). Get version 3.x (2.x is still available, but is only in use where applications were developed from before 3.x.). Make sure that the resources you use are geared towards scientific and technical computing, as the needs of scientists and engineers are different from an IT worker or general programmer.
- Obtaining Python. Choose one of these for use in technical computing.

Continuum Anaconda (recommended) - https://www.anaconda.com/download/

Alternative - Enthought Canopy - https://www.enthought.com/products/canopy/

- Development environment. Canopy comes with its own IDE. Anaconda includes Spyder. This link has instructions for Visual Studio or Eclipse if you already use these. (https://docs.continuum.io/anaconda/ide_integration).
- Software Carpentry Workshop – Plotting and Programming in Python. https://swcarpentry.github.io/python-novice-gapminder/reference/
- Other reference: Python for Everybody by Charles Severance https://www.py4e.com/book.php
__.__This is a university level CS0/CS1 textbook written for Python. Available in a range of electronic formats as well as in English, Spanish, Korean, and Chinese. Note: on this page, this is the only true introduction to programming reference provided. If you have never taken a computer programming course (all engineering curriculum globally include such a course and it was a requirement for the Pitt IE program), you may have to start here. - R – R is primarily a data analysis and statistical language, but it has many capabilities that are needed for data analysis, such as data manipulation. It also benefits from having documentation written by and aimed at scientists and engineers who are not necessarily professional programmers.
- Obtaining R. The preferred source for R is Microsoft R Open (https://mran.microsoft.com/open)
- You can also get this from the CRAN sites: https://cran.r-project.org/bin/

- For an IDE, install the R Studio IDE. Note that the web site has an introductory tutorial. http://www.rstudio.org. If you use Eclipse or Visual Studio, there are R extensions available for both.
- Software carpentry workshop – Programming with R https://swcarpentry.github.io/r-novice-inflammation/
- Further resources:
- R for Reproducible Scientific Analysis. A two-day workshop by the software carpentry group. https://swcarpentry.github.io/r-novice-gapminder/
- R for Data Science - http://r4ds.had.co.nz/ Textbook that focuses on data manipulation needed for data preparation.

- Matlab
- Mathworks works with vendors globally to sell Matlab. https://www.mathworks.com/. Matlab comes with its own IDE. Note: additional functionality in packages generally need to be paid for separately from the primary Matlab license for must functions.
- Octave is an opensource (freely available) language that uses the Matlab syntax and the base functions. Matlab scripts that do not require additional packages will generally work in Octave. https://www.gnu.org/software/octave/
- Software Carpentry workshop. https://swcarpentry.github.io/matlab-novice-inflammation/
- Book - Physical Modeling in Matlab by Allan Downey http://greenteapress.com/matlab/index.html

**Statistics**

This text focuses on using probability and computer simulation to motivate and explain fundamental concepts, in contrast to the arithmetic equations that most of you were taught in statistics. You should do all exercises using your technical computing environment of choice. The references in Python, R, or Matlab will help you. Note that Matlab has limited statistics capability without purchasing the Statistics and Machine Learning Toolbox.

- Introductory Statistics with Randomization and Simulation by Diez, Barr, and Çetinkaya-Rundel https://www.openintro.org/stat/textbook.php?stat_book=isrs
- References

**Linear Algebra **

This should be a review for most of you. Your goal should be to understand the concepts then solve the numerical exercises in Python, R, or Matlab. Note that learning how to learn is one of goals of this review. The references below will help you implement the linear algebra methods in Python, R, or Matlab.

- Linear Algebra by Hefferon - http://joshua.smcvt.edu/linearalgebra/
- References