Instructor: Nicholas DeMarinis
Email: ndemarinis at wpi dot edu
Phone: 401-484-1525
Office Hours: Tuesdays, Thursdays 5-7pm EDT, or by appointment

Senior Tutor: Jacob McManus
Email: jpmcmanus at wpi dot edu
Office Hours: Wednesdays 1-3pm, Sundays 2-4pm

Senior Tutor: Hamayel Qureshi
Email: hqureshi at wpi dot edu
Office Hours: Mondays 5-7pm, Sundays noon-2pm

Lectures Live: Tuesdays, 2:00-3:50pm EDT, Thursdays, 12:00-1:50pm EDT, via Zoom (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 exams, see Schedule for details.
Office Hours Typical hours are listed above. All office hours will be held on our Discord server.
Please see the course calendar on Canvas for the most up to date schedule, as well as info on Discord.

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


Lectures will be conducted in a mostly-asynchronous format. We will hold lectures via Zoom at the appointed class time. Students who are able to join the class live are encouraged to do so, but attendence is not required. 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 a regular “lab session” each week where you can join to receive live help with the labs, similar to an in-person lab section. However, attendence is not required–you can receive the same help at any time during office hours.

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 development board and some additional components. The Labs page provides a list of components you will need for the labs and links to order them.

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.

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. This term, students will conduct labs individually.

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.

Students with Disabilities

Students with disabilities, who believe that they may need accommodations in this class, are encouraged to contact the Disability Services Office (DSO), as soon as possible to ensure that such accommodations are implemented in a timely fashion. The DSO is located in West St. House (157 West St.) 508-831-4908. Please then make an appointment with me to discuss the accommodations or any important medical information you believe you should share with me.

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 survey form available here.

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.