CSCI 3511: Hardware and Software Interfaces (Fall 2016)

Department of Computer Science and Engineering
College of Engineering and Applied Sciences, University of Colorado Denver.

Instructor: VP Nguyen

Group websites have been released, Oct. 21, 2016


Group 1. SKYNET INFILTRATION DETECTOR. Detecting object in the environment using ultra-sound sensors.
Group 2. WEATHER STATION. Developing API for collect environment infommation (temperature, humminity, pressure, light condition) using embedded sensors.
Group 3. VOLSOUT. Developing a ping-pong game using embedded sensors and signal processing techniques.
Group 4. LIFE AYYLERT. Developing a wearable device to detect fall event for elderly.
Group 5. FITDUINO. Developing a prototype version of fitbit using embedded sensors.
Group 6. EMBEDDED SYSTEMS. Detecting any changes of the physical location or orientation of the microcontroller using the accelerometer and also detect any movement in motion using the optical sensor.
Group 7. NEROMOTO. Using an accelerometer as wireless controlling device to drive a Cerebot32MX4 controlled robotic motor, with eventual control via android application.
Group 8. DIONYSUS-BRITE. Using sensor to listen the music and change the light display following the patterns of the music.


  1. Welcome to Hardware and Software Interfaces: This course is designed to bring students to the design, implement and evaluate embedded systems. Such systems usually include four main components: data collection, data processing, data communication, and adaptive control. In that, the data collection includes hardware and software to control embedded sensors to “sense” the information and report to host computer. Data processing includes a set of methods to remove noises from the raw data and only maintain the information of interested. Data communication includes hardware and software to exchange data between embedded controllers, sensors, and host machine (e.g. Bluetooth or Wi-Fi). Finally yet importantly, adaptive control includes a set of algorithms provides the “act” to the system according to the input data. In this class, the students will have opportunity to walk through all the components mention earlier, and have a capability of design and implement a small cyber-physical project by the end of the semester.

  2. University Course Catalog Description: Hardware and software techniques needed to control and program device interfaces. Input and output devices, computer peripherals, device drivers and interfaces are introduced. Specific programmable devices are used in class projects.

  3. Course Goals and Learning Objectives: It is the goal of this course that at the completion of the semester you will have gained the following knowledge:

The learning objectives of this course are:

  1. Course Prerequisites: CSCI 2525 Assembly Language & Computer Organization

It is expected that at the beginning of this course that you have the following knowledge:

Basic knowledge of computer architecture, program execution at the hardware level, programming in assembly language, the assembly process, hardware support of some high-level language features, and a program's interface to the operating system. Hardware laboratory experience

  1. Course Co-Requisite: None
    Note: Each student must sign the Prerequisites Agreement form (which I will pass out during the first week of class) to receive any credit for any assignment or exam. If this form is not signed by the first week, then the student will be administratively dropped from the course.

  2. ABET Assessment Criteria: This course meets ABET Assessment Criteria (C): An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.

  3. Course Credits: This course has one (3) credit associated with it.

  4. Required Texts and Materials: This course requires the following textbook:

  1. Course Schedule: The following is the tentative schedule for this course and it is subject to change. That being said, I will do my best to keep on track. If there are any changes to this schedule, they will be reflected on this course’s Canvas page and Course’s website.




Introduction to the course and logistics


Embedded Programming (Arduino Programming).

Micro Processor Architecture. Assign Homework #1


No class on Monday (Labor Day holiday)

Branches, Loops and Timing.


Interrupt mechanisms

Homework #1 due. In-class lab quiz 1.


Memory-Flash and RAM. Assigning homework #2

I/O Configuration and Performance


Exam 1


Serial Communication (UART, SPI &I2C Communication).


Sensors and Actuators.

Analog-Digital Conversion.


Sensor Data Collection.

Homework #2 due.

In-class quiz 2.


Data Communication (Wireless communication for embedded system)


Signal Processing and Applications.

Drone Design and Controlling


Real time Control in Embedded Programming.

Guest Lecture: Prof. Tam Vu


Project Development and Discussion


Fall break - no class


Project Development and Discussion – Final. Exam 2


Project presentation and demo. Semester Project source code due.


Course grades are an average of the fourteen individual lab assignment grades.
Letter grades are as follows:

Homework (2)






Exam (2)


Projects (2)



  1. Assignments: Examinations are intended to measure your individual mastery of the material. Exams concentrate on your understanding of the important concepts, rather than your ability to memorize details. All major examinations will be held in class with exact dates determined in class. The exams will generally test your knowledge of assignment material, so you are responsible for mastering all homework, and programming material submitted with other partners, as if you did all the work by yourself. All exams will be open book and open notes (unless otherwise stated). The nature of the course material is such that the exams must be cumulative.

  1. Extension/Make-ups:

In general, late work will not be accepted. Turn in all work by the established deadline. In case you have difficulties finishing an assignment contact the instructor before the deadline. Late work can be accepted only under circumstances beyond student's control and after arrangement with the Instructor, prior to the deadline. Note: work turned-in on time is eligible for partial credit. It will always be better to turn work in by the deadline, as trying to "perfect" it and turn it in late will give you no points at all. You have to follow the submission and media policies and guidelines published on the web. Plagiarism is the passing of someone else's work as one's own, without giving the original author due credit. Scholastic dishonesty will be treated very strictly as per University of Colorado Denver rules.

  1. Lectures:

Lecture material will be made available on the web prior to class. Lecture will also consist of chalk drawings, overhead drawings, and content not explicitly present in slides and notes.

  1. Grade Dissemination: I will be utilizing the Canvas system to record your grades. You can check on Canvas for all of your current grades.

  2. Grades of “Incomplete”: The current university policy concerning incomplete grades will be followed in this course. Incomplete grades are given only in situations where unexpected emergencies prevent a student from completing the course and the remaining work can be completed the next semester. I am the final authority on whether or not you qualify for an incomplete. Incomplete work must be finished by the end of the subsequent semester or the “I” will be automatically recorded as an “F” on your transcript.

  3. E-mail Policy: I will be using both the University e-mail system and the Canvas e-mail system. I will respond to your e-mail to the address it was sent from and from the system it was sent from (if you e-mail me from within Canvas, I will respond to Canvas, if you e-mail me from a traditional e-mail, I will respond with a traditional e-mail). For class announcements I will send a Canvas group e-mail. I will be checking my email frequently and you can expect a response within 48 hours (holidays excluded).

All email communication by students must use as the email domain, emails from gmail, hotmail, yahoo, etc are NOT considered valid methods of communication.

  1. Canvas: I will be utilizing Canvas in this course to assign all of the course work and for you to submit your solutions. I will also be utilizing it to communicate with you and provide you with your current grade. It is recommended that you check it frequently.


  1. Civility: My commitment is to create a climate for learning characterized by respect for each other and the contributions each person makes to class. I ask that you make a similar commitment.

  2. Professionalism: Since mobile devices can be distracting during class, I ask that all devices be put into “silent” mode and not utilized during class; this includes checking Facebook, sending a Tweet, or checking e-mail. If I feel that your mobile device is becoming a distraction for either other students, you, or myself I will ask you to leave the classroom. Additionally, playing videos or other music without the use of headphones is prohibited. Headphones can only be used during open lab (not during announcements and lecture).

  3. Religious Observations: I understand that an individual’s religion plays a large part in their lives and I do not want this course to interfere with that aspect of their lives. If you find that your religions holiday(s) falls on a class day and you cannot attend due to this, please notify me prior to that class date by e-mail (or Canvas mail) and we can work together to find an acceptable solution.


I encourage you to review material and discuss ideas together for the assignments, and to work on problems you encounter. It is a characteristic of computation that discussions often help to clarify problems and resolve difficulties – feel free to take advantage of this to improve your understanding of the material, and to complete labs, but make sure you then create your own work. It’s important that you go through the program design, coding, and debugging process yourself, or you will not be developing your own programming skills and understand. “Working together” does not mean that one student does the majority of the work and other students put their name on it! If you have questions about what this means, please see me. Every student must create their own work on their own! (this is easy to check for, so do your own work).

Any instances of checking will result in either a zero for the lab, a grade of zero in the course, or sanctions determined by the university (including suspension and expulsion).


  1. Access: The University of Colorado Denver is committed to providing reasonable accommodation and access to programs and services to persons with disabilities. Students with disabilities who want academic accommodations must register with Disability Resources and Services (DRS) in North Classroom 2514, Phone: 303-556-3450, TTY: 303-556- 4766, Fax: 303-556-4771. I will be happy to provide approved accommodations, once you provide me with a copy of DRS’s letter. [DRS requires students to provide current and adequate documentation of their disabilities. Once a student has registered with DRS, DRS will review the documentation and assess the student’s request for academic accommodations in light of the documentation. DRS will then provide the student with a letter indicating which academic accommodations have been approved.]

  2. Academic Honesty and Student Code of Conduct: Students are expected to know, understand, and comply with the ethical standards of the university, including rules against plagiarism, cheating, fabrication and falsification, multiple submissions, misuse of academic materials, and complicity in academic dishonesty. For more information on Academic Honesty and the Student Code of Conduct provided by this university please see the following web-page:

  3. Other University Polices: