New York City College of Technology

Robotics & Intelligent Systems Laboratory


Home >> Teaching >> EMT2410

EMT2410 C/C++ Programming for Embedded System

Instructor: Dr. Li

Email: xhli@citytech.cuny.edu

Office Hours: Thursday 1:30~2:30PM; Friday 2:30~5PM (Fall 2018)


Welcome to EMT2410 C/C++ Programming for Embedded System, and welcome to the embedded system developer world!


Course Description (from the latest College Catalog):

Introduction to the basics of C/C++ programming language with applications to embedded systems. Fundamentals of structured and object-oriented programming in C/C++ and their applications in hardware environments. Students develop projects that highlight the application of C/C++ language in an embedded system.


Grading Policy:
Attendance 10%
Quizzes & Midterm 30%
Labs 20%
Final Exam 20%
Final Project & Extra Credits 20%

                      A: 93~100         A-: 90~92.99     B+: 87~89.99     B: 83~86.99
                      B-: 80~82.99     C+: 77~79.99    C: 70~76.99       D: 60~69.99 


Course Documents:

  Course Syllabus: Detailed information about the course and course policies, including pre-requisitives, textbook, grading policy, and other course policies.

  Labs & Lab Reports Requirements: Detailed requirements on lab experiments and lab reports (including report's content and format). Please thorough read it.

  Additional Guide on How to Write Technical Report: A very good guide written by IET (Institute of Engineering & Technology, the largest international non-for-profit engineering professional organization dated back to 1871). NEW!!

Software:  NEW!!

  Eclipse for C/C++ Developers: Eclipse is one of the most popular cross-platform IDEs. It supports many programming languages and is a freeware. It won the pretentous ACM Sofware System Award in 2012. Highly Recommended! We will use Eclipse in this class. Download Eclipse IDE for C/C++ at: https://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/keplersr2 (Note: the link may be updated. Search "Eclipse for C/C++ download" in Google for updated link.)

  Microsoft Visual Studio Community (former Visual Studio Express) : Microsoft's IDE, Visual Studio, is the most popular IDE for Windows. It provides a free version, Visual Studio Community (formerly named as Visual Studio Express). Link: https://www.visualstudio.com/vs/visual-studio-express/  Note: It ONLY works on Windows OS, not cross-platform!

  Online IDEs/Cloud IDEs, i.e, Web-based IDEs: Easy to access, use anywhere, no need to download  and install anything: ideone.com; repl.it;  paiza.io; codeanywhere.com; and ..... Highly Recommended!

Technical Documentations:

  Official introductory tutorials on mbed:  Some simple tutorials on using mbed: mbed quick start, how to use online IDE, how to use serial communication for testing/debugging.

  Official cookbook of mbed:  Comprehensive cookbooks on using mbed with literally everything: sensor, motors, digital or analog I/O, displays, audio, RFID, NFC, USB, I2C, SPI, UART, ...., you name it. The ultimate guide bank!

Tentative Class Schedule:

      Note: Due to copyright issue, all lecture slides and lab handouts are posted on the Blackboard only.

      Open Lab Hours: Thursday 11:30AM~2PM, V606/608, started from the 5th week






Intro to Course and course syllabus

Ch1. Intro to C/C++

Homework: Make your computer ready: Download & Install Eclipse

See Blackboard for All Lecture Slides  

2, 3rd

Ch 2.  Get Started with C/C++ Programming: Program Components, Data Types, Operators

Lab 0. Hello World



Ch 3. C/C++ Control Structure: Iterations 

Lab 1. For loop

Lab assignments/ handouts posted on the Blackboard


Ch 3. C/C++ Control Structure: Conditional/Selection

Lab 2. if/else and switch-case


Ch 4. Functions

Lab 3. Create functions


Ch 5. Pointer
Lab 4. Pointer & Dynamic Memory operations

Start to order the order


Midterm Exam

Ch 6. Intro to OOP

MUST finish ordering the board. Need it in 2 weeks.

9, 10th

Ch 6. Intro to OOP (Contd)

Lab 5. Create your own class for hardware

    Form team for course project. Bring in your board next  class.


  Final Exam Exam

 Ch 7. Intro to Embedded Sys and Embedded Sys Programming -- Digital I/O
 Lab 6. Blink the LED & Digital Output



 Ch 7. Embedded Sys Programming -- Analog I/O
 Lab 7. Analog I/O



 Ch 7. Embedded Sys Programming -- Display
 Lab 8. LCD Display



 Ch 7. Embedded Sys Programming
 Lab 9. Project Hours



  Final Project Demonstration



 Projects in Current Semester:


Example Projects from Past Semesters:



Go Mobile!

You can simply use your smartphone or tablet to scan the following 2D barcode to access this webpage on the go.

EMT2455 URL QRCode


Follow me on Twitter for Course Annoucements:

Twitter has and are being used by many leading universities as a new and proved effective tool for a better communication between instructor and students, and among the students. Through this course, I will use Twitter to promptly and smoothly send announcements, listen to your suggestion and address your concerns.

You can simply use your smartphone to scan the following 2D barcode to access my twitter. Follow me on twitter for any future annoucements, news and discussions regarding our class.

Prof. X Li's Twitter



    Summer Intern Opportunities:   Brooklyn Navy Yard had direct collaboration with our College and hired many of our City Tech students in the past as summer interns. The internship program in Brooklyn Navy Yard is open to accept applications until April 2. A variety of intern positions are offered by the companies inside Brooklyn Navy Yard. See flyer here. Check details by clicking the link:  https://brooklynnavyyard.org/employment/summer-internship/ NEW!!

    Open Lab is Available!  Please be advised that effective from the 5th Thursday of this semester, open lab will be avaiable in room V606, V608 and V613. You are welcome to use these lab rooms and equipments there to work on your projects or lab experiments. Open Lab hours are: Thursdays 11:20AM-2:00PM.



Copyright reserved

Last Update: August 30, 2018