CSCI 502 – Hardware/Software Co-Design

Spring 2019 Semester

Course Instructor: Dr. Almas Shintemirov  

Class Times:   Tuesdays, Thursdays 3.00 – 4.15 pm

Course Overview 

The Hardware/Software Co-Design course introduces underlying scientific and engineering principles behind embedded real-time systems. Any system that responds at the pace of relevant events has real-time requirements and constraints whether the timescale is short like the airbag controls for an automobile or longer like the flight scheduling system for an airline. The course covers the software aspects of embedded processor architectures and elements of real-time operating systems. Students can expect to learn how to apply real-time principles to design embedded systems that are used to drive critical embedded systems like robotics, automobiles, avionics, medical equipment, etc. Topics covered include embedded processor architectures, concurrency; real-time principles (multi-tasking,  synchronization, scheduling), embedded architectures, etc. Through a series of practical exercises using a state-of-the-art system-in-chip microprocessor board and popular Robot Operating System (ROS) students students will acquire skills in the design/implementation of core hardware control functionality using Linux based C/C++ programming tools and libraries. Specifically, upon completing this course, students should be able to:

  • Understand specific aspects of embedded systems and its practical applications
  • Learn main elements of creating specifications for designing embedded systems
  • Have a practical experience with embedded systems and Robot Operating System (ROS) for robotic/mechatronic system design and control
  • Work in Linux operating system and program multitasking applications in C/C++ environment
  • Work in a part of the team on design projects developing creative thinking and communicative skills
  • Self-study and work independently on projects that can be used as part of master theses

Course Textbooks

Real-Time Embedded Systems: Open-Source Operating Systems Perspective by I. C. Bertolotti and G. Manduchi, 2012
Logic and Computer Design Fundamentals by M.M. Mano and C.R. Kime, 4th edition, 2014
Exploring BeagleBone with Embedded Linux by D. Molloy, 2014
Operating System Concepts by A. Silberschatz, P. Baer Galvin and G. Gagne, 9th edition, 2012

Course Topics
– Numbers Systems, Binary Logic and Digital Circuit Basics;
– Registers, Memory Basics;
– Computer Design Basics: Datapath and Instruction Set Architecture;
– Embedded Systems Hardware:  RISC and CISC architectures, Pipelining, Interrupts, I/O interface, Direct Memory Access, Analog-Digital Conversion;
– Operating systems, Multithreading, Real-Time Systems;
– Intertask Communication and Process Synchronization: Semaphores, Message Passing;
– Embedded Linux, POSIX Pthreads library programming practice;
– Preemptive and Real-Time Task Scheduling;
– BeagleBone Black and ROS based hand-on projects

2019 Course Projects


2017 Course Projects 

2016 Course Projects