Fall 2014

This new one-hour credit course is designed to be taken concurrently with ECE 313 Probability in Engineering Systems. The course will strengthen your understanding of the concepts in ECE 313 through computer simulation and computation, and expose you to a variety of applications. It will help prepare you for follow on courses using probability, computation, and analysis of data.


  • Introduction to simulation using Python. Using random number generators to generate discrete random variables with specified pmfs, plotting histograms, exploring law of large numbers, simulating random walks, simulating experiments such as random poker hands or Monty Hall's three door problem.
  • Bernoulli processes, Poisson distribution, standardized random variables, parameter estimation, confidence intervals
  • Bloom filter/hashing, min hashing, power of two choices in load balancing
  • Markov chains with application to random text generation, PageRank algorithm, inference of Markov chain transition probabilities, cache replacement policies and Zipf (heavy tailed) distribution
  • Binary hypothesis testing, sequential hypothesis testing (SPRTs), gamblerís ruin, connection between SPRTs and gambler's ruin, CUSUM algorithm for change detection, Gaussian distribution and central limit theorem, failure rate functions
  • Review of ordinary differential equations with application to failure rate functions, simulation of evolutionary dynamics, , contagion in social networks (SIR model without or with graph structure)
  • Random vectors. covariance matrices, MMSE linear estimation (simple and multiple linear regression), and dimensionality reduction through principal component analysis (PCA)

There will be seven laboratory assignments. Students must be present in the scheduled lab on the odd numbered weeks when new assignments are handed out. Final laboratory reports will be due 13 days after the lab. A short quiz will be given on each of the labs. Grading will be 80% based on the labs (including quizzes) and 20% on the take home final exam.

Instructor: B. Hajek NetID: b-hajek
Teaching assistant: Kevin Schmid NetID: kdschmi2

Section Meeting time and place
BH1 9-11:50 am Thursdays
Room 2022 ECE Building
BH2 2- 4:50 pm Thursdays
Room 2022 ECE Building

Getting Started

The lab assignments will be distributed to you and turned in by you as iPython notebook (.ipynb) files. If you'd like to work with the IPython notebooks on your own computer, we recommend you download Canopy (free express version) from or Anaconda from The differences between these for the purposes of this course are minor, but Canopy is the one available on the Linux Engineering Work Stations. To run an IPython notebook on a Linux Engineering Work Station (the type of machines in the lab) first run "module load canopy" and then "canopy" to open a ``welcome to Canopy window." Then click on editor to open a canopy editor window, and from the Canopy editor window use file-> open or file -> new -> python notebook to open an existing .ipynb file or start a new one.

There are numerous tutorials on the web to help you get started, such as for

In addition, you can download Lab 0 here. Lab 0 is not to be handed in; it is the first part of the first lab that deals with the introduction to python. Lab 2 contains further introductory material on python. After that, new material on python is occasionally introduced as needed.