Embedded and Real-Time System Development Course Syllabus

C Programming - Review and Practice

 

  • Introduction to basic I/O operations, variables, control flow, and functions. 
  • Work with arrays, pointers, and string manipulation. 
  • Understand dynamic memory allocation and data structures such as structs, unions, and enums. 
  • Handle file operations (text and binary) and perform basic unit testing. 
  • Use preprocessing directives, macros, and command-line arguments. 
  • Explore bitwise operations and function pointers for efficient low-level programming. 
  • Using AI tools to write code effectively, debug and optimize it. 
  • Accessing AI services from your C program through REST API. 

Data Structures – A Quick Review

 

  • Learn about Abstract Data Types (ADT), algorithmic complexity, and dynamic data structures. 
  • Implement and use dynamic vectors, stacks, queues, and  make  utility for project automation. 
  • Work with single and double linked lists, binary search trees (BST), heap, and hash tables. 
Operating Systems, Focus on Linux

 

  • Understand the fundamentals of processes and threads.
  • Learn memory management and allocation techniques.
  • Study inter-process communication (IPC) and deadlocks. 
  • Use system calls and explore file systems.
  • Implement and work with static and dynamic libraries, and implement signaling, pipes, and message queues.
Networking

 

  • Understand the OSI model layers, physical and data link layers, and Ethernet fundamentals. 
  • Explore transport protocols such as UDP and TCP, including client-server architectures. 
  • Solve TCP server blocking and multi-threading challenges. 
  • Configure and manage DNS, DHCP, and Network Address Translation (NAT). 
Project 1: C and Networking on Linux
  • Define project settings and High-Level Design (HLD). 
  • Conduct detailed design (DD). 
  • Collaborate effectively in small teams using version control systems (Git). 
  • Present and document the completed project implementation and outcomes. 
Bare Metal Programming
  • Introduction to ARM architecture and STM32 microcontrollers. 
  • Develop main loop applications and apply basic debugging techniques. 
  • Implement bit operations, GPIO control, and hardware register mapping. 
  • Manage interrupts and use timers for multitasking. 
  • Implement UART communication (polling and interrupt modes). 
  • Build CLI-based communication with a PC for monitoring and control. 
FreeRTOS and Real-Time Concepts
  • Learn FreeRTOS fundamentals, including task creation and context switching. 
  • Manage threads, queues, semaphores, and synchronization mechanisms. 
  • Apply tracing and debugging tools. 
  • Work with software timers, direct task notifications, mutexes, and critical sections. 
  • Handle interrupt management and learn and used I2C, DMA, PWM, ADC, DAC). 
  • Study RTC, watchdogs, linker scripts, flash memory, and EEPROM. 
  • Implement SPI communication and FATFS-based file storage systems. 
C++ Programming
  • Master object-oriented concepts: constructors, destructors, and operator overloading. 
  • Explore inheritance, polymorphism, and encapsulation. 
  • Apply templates, STL containers, and smart pointers for modern C++ design. 
  • Understand exceptions, design patterns, and advanced features of C++11, C++14, and C++17. 
Project 2: Embedded System Integration (C on RTOS, Microcontroller, Hardware Interfaces, Electronic Components, C++ on PC)
  • Define project scope, architecture, and high-level design. 
  • Conduct debugging, integration, and issue resolution. 
  • Design and implement a fully functional embedded system using a microcontroller, sensors, and actuators. 
  • Ensure proper integration between hardware, software, and real-time components.
  • Present and demonstrate the final working embedded system, supported by technical reports and performance analysis. 
Introduction to AI and GenAI
  • AI, Gen AI and Machine Learning concepts; Main Gen AI models; LLMs, LMMs and how they work.  
  • Using generative AI to summarize content, learn and understand, develop and visualize ideas.
  • Principles for effective learning with AI assistance.
  • Prompt engineering and human-in-the-loop approach with Gen AI.
  • Using Gemini with integration in Gmail, Docs and other tools; learning with NotebookLM.
  • Social impact of AI, AI risks and Responsible AI.

*The syllabus is subject to change