CSCI 502/702 – Hardware/Software Co-Design

Spring 2020 Semester

Course Instructor: Dr. Almas Shintemirov  

Class Times:   Tuesdays, Thursdays 1.30 – 2.45 pm

Course Overview 

The course introduces hardware and software aspects of embedded processor architectures and embedded operating systems, and design concepts of embedded control systems that drive complex mechatronics systems such as robots, automobiles, avionics, etc. Students will learn how apply these principles on the example of a mobile robot hardware/software design. Topics covered include embedded processor architectures, concurrency principles, real-time principles (multi-tasking, synchronization, scheduling, priority inversion), finite state machines, Through a series of practical projects assignments using a state-of-the-art system-in-chip microprocessor board, a popular Robot Operating System (ROS), real-time Linux with Xenomai extension students will acquire skills in the design/implementation of core hardware control functionality using Linux based Python and 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/real-time  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 in Xenomai;
– Finite State Machines;
– BeagleBone Black and ROS based hand-on projects.

Selected 2020 Course Projects   

Due to the COVID-19 pandemic the course was taught in distance learning mode and the course final projects were focusing on software implementations of Finite State Machine -based systems

Selected 2019 Course Projects

Selected 2017 Course Projects 

Selected 2016 Course Projects