CSE237a: Introduction to Embedded Computing

Instructor: Tajana Simunic Rosing
Email: tajana.teach@eng.ucsd.edu * please put CSE237a in the email subject line *
Lectures: TuTh 9:30am-10:50am in CSE2154

TA: Xiaofan Yu
Email: x1yu@eng.ucsd.edu * please put CSE237a in the email subject line *

Admin: Lindsey Rogers
Email: lmrogers@eng.ucsd.edu

Course Overview and Goals

Increasing integration of communications, multimedia and processing and relentless digitization of data (including even RF data) continues to expand the scope and complexity of embedded systems. To appreciate these advances, and to productively contribute to future advances of these systems, a critical appreciation of the underlying technology underpinning is a must. The goal of this course is to develop a comprehensive understanding of the technologies behind the embedded systems, particularly, those using computing elements (processor, DSP, or ASPs). The students develop an appreciation of the technology capabilities and limitations of the hardware, software components for building embedded systems, and methods to evaluate design tradeoffs between different technology choices


The topics covered in this class include embedded system technologies (processors, DSP, memory, and software), system interfacing basics (sensors and actuators), control basics (PID control), timing and scheduling (real-time I/O), modeling and design of embedded systems (FSMs, StateCharts, SDL, petri nets). The course materials also include design case studies in wireless, multimedia, and/or networking domains.

Detailed syllabus can be found on Canvas.


The course does not have any official graduate course as a prerequisite. However, it assumes basic understanding of digital hardware (electrical components, storage elements), computer architecture (memory, cpu/processor, ISA, computer organization), programming (C/C++ preferred), algorithms (e.g. common graph algorithms).


The discussion board can be found at Piazza, while assignments are submitted and graded via Gradescope. Both links are available at Canvas.


Final grade for this class will be based on:

There will be an individual project and a final team project. The individual project will be the same for all students in the class, while each team of two students will define their own final project with the consent of instructor.

No late assignments will be accepted. Exceptions for UCSD-sponsored athletic or other extra-curricular activities, documented medical emergencies, death of an immediate family member, or other such life-altering situations must be requested from the instructor as soon as possible.

Requests for a score change need to be submitted online using a regrade form. Thorough review will be performed, and points may be added or subtracted. After the readjusted assignment is returned, student may set up an appointment to discuss the results. No discussion of grades/scores will be done prior to this.


The projects will provide an in depth experimental experience on hardware/software technologies behind the rapid advances in the emerging embedded platforms.

Individual project: Students will develop a program which characterizes workloads using performance counters (part 1), and an energy-efficient user-level scheduler which manages the sensors (part 2). Students will gain experience cross-compiling and loading an operating system for an embedded platform, extending its scheduler with capability to handle diverse tasks, and also in integrating a set of HW sensors with the platform.

Each student needs to get their own Raspberry PI 4 (Model B) and sensors to complete the project, such as CanaKit kit, along with 37-in-1 Sensor Module Kit. The grading will be done based on the project progress reports and demos.

Final project: The final project will be done in teams two. The project has to have both HW and SW components and neeeds to show integration of the two. It will be graded on a combination of the proposal, progress reports, and the final demo/presentation. Riskier and more challenging/novel projects are more likely to get a good score.

The files you will need for both individual project and the final project can be found on Canvas.

Collaboration policy

All homework and exams must be completed individually. Each student is responsible for knowing and abiding by UCSD's policies on Academic Dishonesty and on Student Conduct and the Jacobs School Student Honor Code. Any student violating UCSD's Academic Dishonesty or UCSD's Student Conduct policies will earn an 'F' in the course and will be reported to their college Dean for administrative processing. Committing acts that violate Student Conduct policies that result in course disruption are cause for suspension or dismissal from UCSD.

Recommended textbooks

Course Rationale and Relationship to CSE/CE Curriculum

Continuing advances in system software and hardware components now present exciting opportunities in building embedded systems for applications ranging from embedded control, multimedia, networking and information and biomedical appliances. Building these systems, particularly for highly integrated micro-electronic technologies and mobile applications, presents a challenge at every of level abstraction from gate-level designs to complex runtime systems. Even with a detailed technical knowledge in a specific technology area that make up an embedded system, a good system design would require understanding of the design tradeoffs across choice in technologies that make up the system. This course fills this gap by presenting basic characteristics and usage model of the technologies that make up an embedded system and describing their relations

You can take this course to satisfy requirements for the depth sequence in Embedded Systems and Software (ESS). Other courses in this sequence: