CSE237a: Introduction to Embedded Computing
Instructor: Tajana Simunic Rosing
* please put CSE237a in the email subject line *
Lectures: TuTh 9:30am-10:50am in CSE2154
TA: Xiaofan Yu
* please put CSE237a in the email subject line *
Admin: Lindsey Rogers
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
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:
- 5% Homework
- 25% Individual project
- 30% Final project
- 40% Final exam
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
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.
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.
- Embedded System Design: Embedded Systems Foundations of Cyber-Physical Systems, by Peter Marwedel. ISBN-10: 9400702566 | ISBN-13: 978-9400702561 | Publication Date: December 3, 2010 | Edition: 2nd Edition.
- High-Performance Embedded Computing: Architectures, Applications, and Methodologies, Wayne Wolf, Morgan Kaufmann Publishers, 2006, ISBN No. 012369485.
- F. Vahid and T. Givargis, Embedded System Design: A Unified Hardware/Software Introduction, John Wiley & Sons. ISBN-13: 978-0471386780
- Software Engineering for Real-Time Systems. Addison-Wesley; 1 edition (November 11, 2002). ISBN-13: 978-0201596205
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:
- CSE 237B: Software for Embedded Systems
- CSE 237C: Validation/Testing of Embedded Systems
- CSE 237D: Design Automation & Prototyping for Embedded Systems