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

kaiqiancui/EE120_labs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UCB EE120: Signal and Systems

  • I studied the course Signals and Systems in school, using Oppenheim's textbook, but I am confused about this course.
  • In this repository, I uploaded the lab I completed for EE120 and some of my notes.
  • The resources of EE120 have been blocked in recent times.
  • I use the resources of https://github.com/dominiccarrano/ee-120-labs?tab=readme-ov-file and flyingpig

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

Languages

  • Jupyter Notebook 98.5%
  • Python 1.3%
  • TeX 0.2%