Wireless Embedded Systems

CSE190 A00 - Fall 2023

Lectures are M/W/F from 10:00am to 10:50am in EBU3B (CSE) 2154
The instructor is Aaron Schulman (aka Aaron Shalev). Office hours: M/W from 11:00am to 12:00pm in 3219.
The TA is Tyler Potyondy. Office hours: Tuesday 11:30am-2:30pm and Thursday 2-5pm in 3219

Wireless embedded systems bridge our physical world with powerful digital control systems and cloud data analytics. Applications range from medical devices such as Bluetooth-enabled blood glucose meters, to payment systems such as Near-Field Communication-based credit cards. In this class, students will learn about how an embedded system works from the ground up. The lectures will focus on the key enabling components of embedded systems, including: Clocks, GPIO, Interrupts, Busses, Amplifiers, Regulators, Power supplies, ADC/DAC, DMA, Storage, and Wireless communication. The goal of the class is to familiarize the students with these components so that they feel comfortable working on a team that is building a device that incorporates a wireless embedded system.


CSE30 (CSE 120 recommended)



We will be supplementing the lectures with material from the following freely available sources:

Course management

We will manage discussions, grading, and announcements for this course with Piazza (see Canvas for link). All grades and project submissions will be on Gradescope. We will provide a course GitHub repo.

Grading Criteria and Late Policy

  • 60% - Four assignments
  • 20% - Midterm Exam
  • 20% - Final Exam
The late policy for the course is as follows: you are permitted three total days that you can submit any of the projects late. For example, you can be late one day (24 hours) on three of the projects, or late three days on one project.

Academic Integrity Guidelines

All programming assignments must be completed in your assigned groups. You and/or your partner must write all solutions and code that you submit, excepting any code that was provided to you as part of the assignment. You may discuss the assignments with others, but you may NOT make your code available to others or copy answers or code from another student--this includes GitHub repositories (or similar) for assignments from this or similar courses in previous terms at any university. You will be issued private GitHub repositories for use in this course; it is your responsibility to make sure your code stays private. Exams will be individual effort and closed book.

Large Language Model Guidelines

Your academic goal in this course is to learn how embedded systems work, and LLMs can absolutely support you in this endeavor. You are encouraged to use large language models (e.g., ChatGPT) to assist in understanding the concepts in the course, and to guide you to get around problems you encounter in your programming projects. The more you learn in this course, the better you will become at writing prompts that can produce functionally correct embedded systems firmware in C in your projects.

Relying entirely on LLMs on projects does present several risks (1) crafting LLM prompts that give you the correct implementation is extremely difficult in embedded programming without knowledge of the underlying concepts, and (2) even if you do learn to craft excellent prompts, you may not learn how wireless embedded systems work, which is the reason you are taking this course. This is why we will be testing your understanding of these concepts in the midterm and final.


  • Coming soon


Day Topic Preparation for class
Week 0: Course introduction
Fri Sept 28 Introduction Lecture 1 Slides
Week 1: Introduction to embedded systems
Mon Oct 2 Intro to Project and MCUs ARM Cortex M for Beginners (pdf)
Lecture 2 Slides
Wed Oct 4 MCUs (cont) Lecture 3 Slides
Fri Oct 6 I/O Overview Lecture 4 Slides
Week 2: How to develop code for embedded systems
Fri Oct 9 Development Environment Schematics, and Datasheets (In class demo recorded on Piazza)
Wed Oct 11 Using Pointers, Headers, and Registers, and GPIO (cont.) Lecture 5 Slides
Fri Oct 13 Time Lecture 6 Slides
Week 3: Interrupts
Mon Oct 16 Interrupts Lecture 7 Slides
Wed Oct 18 Debugging Lecture 8 Slides
Fri Oct 20 Serial Lecture 9 Slides
Week 4: Serial inter-device communication
Mon Oct 23 Serial busses Lecture 10 Slides
Wed Oct 25 Serial busses (cont.) Lecture 11 Slides
Fri Oct 27 Serial busses (cont.) Lecture 12 Slides
Week 5: Serial inter-device communication and peripherals
Mon Oct 30 Intro to peripherals - Accelerometer Lecture 13 Slides
Wed Nov 1 Programming for the I2C bus Lecture 14 Slides
Fri Nov 3 Debugging busses using a logic analyzer In class demo (and reviewing I2C interface for accel in datasheet)
Week 6: Midterm Exam
Mon Nov 6 Midterm Review Session (Video posted online)
Wed Nov 8 Midterm Exam
Fri Nov 10 No class (Veterans day)
Week 7: Grab bag
Mon Nov 13 Direct Memory Access Lecture 16 Slides
Wed Nov 15 Analog Lecture 17 Slides
Fri Nov 17 Analog and Wireless intro Lecture 18 Slides
Week 8: Wireless Communication
Mon Nov 20 Intro to Wireless Lecture 19 Slides
Wed Nov 22 Intro to Wireless (cont.) Lecture 19 Slides (cont)
Fri Nov 24 No class (Thanksgiving holiday)
Week 9: Wireless Communication and Intro. Sensing
Mon Nov 27 Wireless
Wed Nov 29 Wireless
Fri Dec 1 Sensing
Week 10: Final project development week
Mon Dec 4 In-class hackathon (must attend)
Wed Dec 6 In-class hackathon (must attend)
Fri Dec 8 In-class hackathon (must attend)
Final exam
Fri Dec 15 Final (8:00am - 10:00am)