Instructor: Nicholas DeMarinis (he/him)
Email: ndemarinis at wpi dot edu
Phone: 401-484-1525
Office Hours: Tuesdays, Thursdays 4-6pm EDT, AK113, or by appointment

Senior Tutor: Rushikesh (Rushi) Pramod Deshmukh (he/him)
Email: rdeshmukh at wpi dot edu
Office Hours: Mondays, Wednesdays, 3-5pm EDT in AK113

Lectures In-person/Live stream: Tuesdays, 2:00-3:50pm EDT, Thursdays, 12:00-1:50pm EDT, AK233
(see Zoom info on Canvas)
Recordings: Available on Canvas after the live lecture.
Labs Thursdays, 2:00-3:50pm EDT
4 labs, All labs must be completed in order to pass the course!
Homework See Homework.
Exams 2 take-home style exams, see Schedule for details.
Office Hours Typical hours are listed above.
Please see the course calendar on Canvas for the most up to date schedule.

Course description

Embedded computers are literally everywhere in modern life. On any given day we interact with and depend on dozens of small computers to make coffee, run cell phones, take pictures, play music, control elevators, manage the emissions and antilock brakes in our automobile, control a home security system, and so on. Using popular everyday devices as case studies, students in this course are introduced to the unique computing and design challenges posed by embedded systems. Students will then solve real-world design problems using small, resource constrained (time/memory/power) computing platforms. The hardware and software structure of modern embedded devices and basic interactions between embedded computers and the physical world will also be covered in lecture and as part of laboratory experiments. In the laboratory, emphasis is placed on interfacing embedded processors with common sensors and devices (e.g. temperature sensors, keypads, LCD display, SPI ports, pulse width modulated motor controller outputs) while developing the skills needed to use embedded processors in systems design. This course is also appropriate for RBE and other engineering and CS students interested in learning about embedded system theory and design.

Recommended Background: While it is expected that you have experienced C programming prior to taking this class, you are not required to be fully comfortable with it. This course is designed to teach you embedded design while helping you build your programming skills and teaching you the relevant systems programming concepts along the way!

If you have questions about whether this course is a good fit for you, please feel free to contact the instructor.

Class Format


Officially, this is an in-person course: lectures and office hours will primarily be delivered in-person. However, we are committed to accommodating students who need to work remotely at dimes during the semester–especially due to the changing nature of the pandemic.

At all times, students and course staff are expected to adhere to WPI’s guidelines (if any) on social distancing and meeting restrictions. If University-level policies change, course guidelines will be updated accordingly. If you have any concerns regarding our course’s implementation of health guidelines, please fill out our anonymous feedback form.


Lectures will be conducted in an in-person format, with a live stream and recordings available for remote/asynchronous viewing. We will hold lectures in-person at the appointed class time, with the class streamed live on Zoom as well as recorded. Students who are able to join the class live are encouraged to do so, but attendance is not required for those who need to be remote for health or logistical reasons. Recordings of lectures will be posted on Canvas, with any associated notes and handouts will be posted on the Lectures page. Students who cannot attend live lectures (and those who can!) are encouraged to come to office hours or lab sections to discuss course concepts in a one-on-one or small group setting.

In addition, small videos may be posted as tutorials on extra concepts or lab mechanics. These will be posted asynchronously as needed.


Labs are a key part of this course. We will have in-person lab sections where you can work on the labs with course staff present, similar to office hours. However, attendence is not required–you can receive the same help at any time during office hours. Depending on students’ needs, we may offer remote office hours to provide help with labs–otherwise, students are always encouraged to contact the course staff to set up a meeting with us.

Students are expected to work on the lab in their own time, in addition to any time spent during lab sessions.

For our labs, we will be developing for the TI MSP430 architecture using TI’s MSP430 Launchpad and some custom hardware. A development board containing all of the hardware we will need will be distributed to you at the beginning of term–there is no need to purchase anything. The Labs page provides more information on the tools we will be using and associated policies.

Class Communication

Announcements regarding assignments, exams, and policies will be sent as announcements on Canvas. Students are responsible for checking their email regularly to ensure they stay up to date. Summaries of upcoming deadlines and announcements will usually be included in lecture notes and posted on the website, where applicable.

Textbook and References

There is no required textbook for this course. Instead, you will be provided notes and shown how to find the information you need from online manuals, documentation, and datasheets related to our development platform.

A good reference text (which is not required) is “MSP430 Microcontroller Basics” by John H. Davies, which is available online from the WPI library. You can access the textbook by clicking here and selecting “Connect to E-book”.

It is also useful (though not required) to have a good reference on C programming. Any textbook from a systems programming course should be sufficient. If you are looking for an additional reference, my personal recommendation for a C programming reference is “The C programming language” by Brian Kernighan and Dennis Ritchie, 2nd edition, which is also available from the library here or can be purchased online at a low cost.

Documentation related to our development boards and environment can be found on the Resources page. Other online references can be found on the Links page.


During the course, we will be developing for the TI MSP430 architecture using a platform based on TI’s MSP430 Launchpad development board. At the beginning of term, you will be assigned a development board to use for your labs and homework assignments. Our development boards contain a TI Launchpad, an LCD display, and a custom hardware board developed at WPI with some peripherals for us to use.

At the end of term, you must return the board with all components (board, box, cables, etc.) in working condition. Until your board is returned, you will not receive a grade for the course!

General Grading Policies

All grades will be posted to WPI’s new course management system, Canvas.

Your grade will be computed as follows:

Lab assignments 55%
Exams (2) 30%
Homework 15%

You must receive a passing grade in the exam portion and make a good faith attempt on all lab assignments in order to receive a grade. For details on this requirement, please contact the course instructor.

Final grades will be determined as follows: a grade of A indicates exceeding the course requirements and expectations; a B indicates that the requirements and expectations have been successfully met; a C indicates that the requirements have been minimally met, but below expectations; an NR indicates that the course requirements have not been met.

Assignment Policies


Lab assignments are a key part of this course. Your labs will require a set of materials that you will need to purchase, including an MSP430 launchpad. Details on the required materials can be found on the Labs page. Your implementation for each lab must adhere to the Coding Standard defined for our course, which emphasizes good software engineering practices.

Each lab will require a short report explaining your implementation, results, and your conclusions about them to demonstrate your understanding of the lab goals. A grading rubric for these reports is available on the course website.

During lab, you are welcome to discuss the lab assignment with other students as well as the course staff. However, the implementation you develop must be your own. Sharing of source code between students or using source code from previous offerings of the course is considered a violation of the Academic Honesty policies and will be handled accordingly.


At the end of each lecture, a small homework-style problem may be assigned, due within one or two lectures. These problems are designed as short examples of lecture concepts to prepare you for further discussion in class. Assignments may be handwritten or typed, but must be completed neatly. All assignments will be completed individually, though you are welcome to collaborate with your peers.

The goal of these short problems is to encourage you to engate with the material frequently, rather than to get you to develop totally-correct solutions. Problems will be graded with this in mind, with the majority of points given to submissions that utilize the appropriate techniques and methods for the problem.

For more details see Homework.

Late Policies

In general, late homework cannot be accepted without prior arrangements since the solutions will be posted immediately. Lab signoffs and reports may be submitted up to one week late for a 10% grade penalty.

Otherwise, since our course is small, our schedule and due dates can be flexible to a degree—requests for extensions on deadlines can be made by contacting the course instructor. I will be reasonable as long as you are.

Academic Honesty Policies

For all portions of this course, full adherence to WPI’s and the ECE Department’s Academic Honesty policies is expected. Failure to follow these policies will result in at least a grade of zero on the pertaining assignments.

On homeworks and labs, you are welcome (and encouraged!) to discuss the assignments with other students in the class and the course staff in order to determine how to approach the assignment. However, the solution you use in your work must be your own. Sharing of source code or homework solutions between students, or using other students’ solutions from previous course offerings is not permitted. Please consult the course staff if you have questions on this policy.

Once submitted, your labs and assignments may be compared against other submissions, including those from previous course offerings, to detect similarity with other work.

Exams are a strictly individual effort. Copying or otherwise cheating on an exam is a violation of the academic honesty policies and will be handled accordingly.

More general informaton on academic honesty and campus processes regarding it, see WPI’s Academic Ingegrity resources page.

Course Repeat Policy

If you have taken ECE2049 before, welcome back! We are glad to have you here.

The most important skills gained in this class are developed while working on lab assignments. For this reason, re-use of labs or other assignments from previous offerings of ECE2049 is not generally permitted. Exceptions to this policy may be made in certain circumstances on a per-assignment basis, but only with explicit permission from the instructor before the assignment is submitted. Submitting work used in a prior version of the course without prior permission is considered a violation of the Academic Honesty policy.

Please contact the instructor for more details on this policy.

Student Accessibility

Students who believe that they may need accommodations in this class are encouraged to contact the Office of Accessibility Services, as soon as possible to ensure that such accommodations are implemented in a timely fashion. Once you have done so, the instructor will be sent a notice regarding your accommodations. You are also welcome to make an appointment with the me to discuss the accommodations or any important medical information you believe you should share with me so that we can make a plan.

Course Feedback

Students are encouraged to submit feedback about any aspect of the course. If you find something broken or unclear in the lab instructions, think an assignment was too difficult or unclear, or have an idea on how lecture can be improved, please submit feedback! Your responses are very important for helping to improve this course and future courses.

You can submit your feedback using the Anonymous Feedback Form.

The survey is hosted by the WPI Qualtrics platform. From the instructor’s perspective, your responses are anonymous unless you choose to include your contact information.

Policy Updates

All course policies and the schedule are subject to change at the discretion of the instructor. Once the course has begun, all changes will be listed in this section.