CEN 4930 ST:Embedded Programming - 3 credit(s)

print[↑]
Florida Gulf Coast University
U.A. Whitaker College of Engineering
Department of Computing & Software Engineering

Course Catalog Description:

The Special Topics: Embedded Programming with C++ and Arduino course is a specialized offering within the Undergraduate Software Engineering Program, designed to provide students with an in-depth understanding of the intricate interplay between software and hardware in embedded systems. This course delves into the practical aspects of designing, developing, and optimizing software for embedded environments, leveraging the powerful capabilities of the C++ programming language and Arduino microcontrollers.

The course is structured to equip students with the skills necessary to harness the potential of embedded systems, enabling them to design and implement software solutions that interact seamlessly with hardware components. Throughout the course, students will explore essential concepts related to process scheduling, code optimization, and programming for external input/output (I/O) devices.

Prerequisites:

COP 3003 for level Undergraduate with minimum grade of C

Required Material

Textbook:

The AVR Microcontroller and Embedded Systems Using Assembly and C: Using Arduino Uno and Atmel Studio 1st Edition by Sepehr Naimi, Sarmad Naimi, Muhammad Ali Mazidi, ISBN: 978-0997925968.

Book website: NicerLand.com/avr[↑] for additional free online content. The site contains Chapter 0 and Appendixes A-I which are not included with the book, along with PowerPoint slides, source code, and labs.

Hardware

You will be required to have or purchase an Arduino UNO R3 Kit:
Search Amazon for: Arduino Starter Kit[↑]
Select any of these kits like the (Recommended): ELEGOO UNO Project Super Starter Kit with Tutorial and UNO R3 Compatible with Arduino IDE The kit should contain at a minimum:
  • Arduino UNO R3
  • Breadboard
  • Resistors
  • LEDs
  • Push buttons
  • Wires
  • 7-Segment Display (single and 4-digit)
  • One of:
    • DC motor
    • Stepper Motor w/Driver Board
    • Servo Motor
  • Various additional components, ICs, Sensors, etc.

Learning Outcomes:

By the end of this course, students will have developed a comprehensive skill set enabling them to confidently tackle complex challenges in the realm of embedded programming. They will be adept at creating software solutions that harmonize with hardware components, managing process scheduling, optimizing code for efficiency, and effectively programming external I/O devices. Graduates of this program will be well-prepared to contribute to industries that rely on embedded systems, such as consumer electronics, automotive, healthcare, and industrial automation.

Instructional Methods:

This is a face-to-face course with lectures, instructor led programming examples, and in-class labs.

Attendance:

Attendance is mandatory for all classes. Attendance will be taken and will count towards participation credit. Students should notify me at least 48 hours in advance of intent to miss a class to arrange alternate schedules for in-class assignments.

Communication:

All course related communication should be via Canvas message. Each student is responsible for checking his/her FGCU email at least once a day. The instructor will respond to your emails within 24 hours except weekends and holidays.

Topics / Tentative Schedule:

  • Introduction to Embedded Systems: An overview of embedded systems, their significance, and their role in modern technology.
  • C++ Programming for Embedded Environments: Exploring the nuances of using the C++ programming language to develop efficient and reliable embedded software.
  • Arduino Microcontrollers: A deep dive into Arduino platforms, including hardware architecture and programming methodologies.
  • Exam 1
  • Interfacing with Hardware: Techniques for establishing communication and interaction between software and various hardware components, such as sensors, actuators, and displays.
  • Process Scheduling: Understanding and implementing process scheduling mechanisms in embedded systems, ensuring optimal resource utilization.
  • Real-time Constraints: Managing real-time requirements and constraints in embedded systems, emphasizing responsiveness and reliability.
  • Code Optimization: Strategies for writing efficient code tailored to the limited resources of embedded systems, including memory and processing power.
  • Exam 2
  • Input/Output Programming: Techniques for programming external I/O devices, such as GPIO pins, analog interfaces, and communication protocols (I2C, SPI, UART).
  • Interrupt Handling: Exploring interrupt-driven programming, enabling rapid response to hardware events while maintaining overall system stability.
  • Embedded Debugging and Testing: Methods for debugging and testing embedded software, including emulation, simulation, and hardware debugging tools.
  • Project Work: Hands-on projects that challenge students to apply their knowledge to real-world scenarios, designing and implementing embedded systems with tangible applications.
  • Exam 3

Assessment:

There is no grace period for late submission of assignments. All assignments with due dates and times will be posted on Canvas. Alternate schedules can be arranged ahead of time with instructor approval.

Working Independently:

Students are to work independently on all non-group assignments. It is cheating to see other classmate's work or let other classmates see yours. This does not mean you cannot assist or discuss assignments with your classmates.

*** IMPORTANT ***

Student submissions that contain work from another student or source will receive a zero for that assignment. A second occurrence will result in failing the class, and the academic sanction will be reported to the Dean of Students.

Assignments (50%):

Individual problems and small programs worked outside of class.

Exams (20%):

Written exams taken in class.

Project (20%):

Individual or team project worked outside of class.

Participation (10%):

In class quizzes and labs, attendance, and overall participation.

Grading

GRADE GPA Range
 A  4.00 93 - 100
 A-  3.75 90 - 92
 B+ 3.25 87 -  89
 B  3.00 83 -  86
 B- 2.75 80 -  82
 C+ 2.25 77 -  79
 C  2.00 70 -  76
 D  1.00 60 -  69
 F  0.00  0 -  59