Skip to content

Jupyter Notebook virtual labs developed for EE 120, UC Berkeley's course in Signals and Systems.

License

Notifications You must be signed in to change notification settings

dominiccarrano/ee-120-labs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ee-120-labs

Python virtual labs implemented via the Jupyter Notebook developed for EE 120: Signals and Systems at UC Berkeley.

About

These labs were developed by the EE 120 course staff in the spring 2019, fall 2019, and spring 2020 semesters. The topics follow our course's content and are listed below. They're ideal for an entry-level upper division course with a focus in signal processing where the students have some prior programming exposure.

We presented these labs at the 2020 International Conference on Higher Education Advances. The paper is available here.

Usage

The relevant Jupyter Notebook (.ipynb) file that students complete for Lab N is at labN/labN.ipynb. For example, the file for Lab 3 is named lab3.ipynb, located in the lab3 folder. The folder labN also contains all resources necessary for that lab to function as intended. Changing the directory structure provided in this repository may cause issues, since the labs expect certain fixed filepaths (e.g., when displaying images inside the notebook, loading data from provided files, or running test cases to provide students with sanity checks on their work).

The versions here are without solutions. If you're an educator at another institution and would like to use these in your course, contact Prof. Babak Ayazifar ([email protected]) about acquiring solutions.

The Labs

Lab Topics
Lab 0: Scientific Python Tutorial
  • Python, NumPy, SciPy, and Matplotlib basics
  • Rectangular and exponential signal generation
Lab 1: Intro to Python for Signals and Systems
  • Basics of audio signals (amplitude, phase)
  • Convolution
Lab 2: Applications of LTI Filtering
  • 1D edge detector
  • Simple moving average for denoising
  • Exponential moving average of stock data
Lab 3: Practical Fourier Analysis
  • DFT/FFT implementation and analysis
  • Virtual oscilloscope calibration via cross-correlation
Lab 4: Heart Rate Monitoring
  • Spatial averaging of video of human thumb
  • Extract heartbeat frequency via FFT
Lab 5: Deconvolution and Imaging
  • 1D deconvolution (echo cancellation)
  • 2D convolution (image blurring and sharpening)
  • 2D deconvolution (Hubble Space Telescope image deblurring)
Lab 6: Control
  • Satellite stabilization
  • Open-loop vs closed-loop control
  • Nonlinear control
Lab 7: Communication
  • Amplitude Modulation
  • On-Off Keying
Lab 8: Shazam
  • Spectrograms and STFT
  • Audio Fingerprinting
Lab 9: Wavelets
  • Haar Basis vs DFT Basis
  • Implementation via filter banks
  • Image/Video Compression via Wavelets

About

Jupyter Notebook virtual labs developed for EE 120, UC Berkeley's course in Signals and Systems.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published