Skip to content
All courses
EMB 201
Term 3
4 credits

Embedded C and Data Structures

This course delves into C programming principles, emphasizing memory management, pointers, and low-level hardware interaction crucial for embedded systems. Students will learn to implement and utilize essential data structures such as arrays, linked lists, and queues, applying them in resource-constrained embedded environments. Practical exercises will build proficiency in developing efficient and robust code for microcontrollers.

Prerequisites

Course outline

Lectures, virtual labs, and graded assignments — completed in your browser.

01Introduction to Embedded C and Development Environmentlecture
02C Fundamentals: Data Types, Operators, Control Flowlecture
03Functions, Scope, and Storage Classes in Clecture
04Lab 1: Basic I/O and Control Flow on a Microcontrollerlab
05Pointers and Memory Managementlecture
06Arrays and Strings in Embedded Clecture
07Structures, Unions, and Enumslecture
08Lab 2: Pointer Arithmetic and Array Manipulationlab
09Introduction to Data Structures: Arrays vs. Dynamic Structureslecture
10Linked Lists: Single, Double, and Circularlecture
11Stacks and Queues Implementationlecture
12Assignment 1: Implementing a Basic Data Structure (e.g., linked list for sensor data)assignment
13Comprehensive Midterm Reviewlecture
14Final Review and Project Discussionassignment

Syllabus

### Course Description
This 4-credit course provides a foundational understanding of C programming and classic data structures tailored for embedded systems engineering technology. Students will master C language constructs, memory management, and pointers, alongside implementing essential data structures like arrays, linked lists, and queues, all within the context of microcontroller programming and resource-constrained environments. Practical application and efficient code development are emphasized.

### Learning Outcomes
*   Design and implement C programs leveraging core language features for embedded applications.
*   Effectively utilize pointers and manage memory for optimal performance in embedded systems.
*   Implement and apply fundamental data structures (arrays, linked lists, stacks, queues) in C for solving embedded problems.
*   Develop efficient and robust C code suitable for microcontrollers, considering constraints like memory and processing power.
*   Debug and troubleshoot C programs and data structure implementations in an embedded context.

### Assessment Breakdown
*   Quizzes: 15%
*   Lab Assignments: 35%
*   Programming Projects (Assignments): 25%
*   Midterm Exam: 15%
*   Final Exam: 10%

### Policies
*   **Attendance**: Regular attendance in lectures and labs is expected. Missed lab sessions may impact grades significantly.
*   **Late Submissions**: Late assignments will incur a penalty of 10% per day, up to a maximum of 3 days, after which they will not be accepted.
*   **Academic Integrity**: All work submitted must be original. Plagiarism or cheating will result in a failing grade for the assignment/course and further disciplinary action as per institutional policy.
*   **Disability Services**: Students with disabilities who may need accommodations in this class are encouraged to contact the Disability Services office early in the semester.