ENGR 523 ( CSCI B649) Syllabus

Spring 2019


From servers to smartphones, our world has been revolutionized by the modern computer. The Internet of Things (IoT) promises to again revolutionize how we interact with computing, this time embedding compute deep within our urban environments, in homes, in ourselves, and many other places. These devices must be reliable, networked, and self-powered, enabling them to go unmaintained for decades, allowing for computation that seamlessly fades into the background of everyday life.

This class will be a mix of topical discussions and hands-on programming. Rather than giving a wide-ranging overview of IoT, we will instead focus on a single project within the IoT domain. Thus, a large portion of this class will focus on designing and implimenting software solutions for a specific IoT problem, acoustic (audio) event detection. Due to time constraints, we will be using standardized hardware.


Andrew Lukefahr
2030 Luddy Hall


09:30A-10:45A Monday/Wednesday
IF 4012 (Luddy Hall)


This class assumes you are somewhat familiar with embedded systems. Ideally this means you have taken ENGR 314 or CSCI P442. However, at a minimum, you should be familiar with low-level systems broadly, i.e. ENGR 210 or CSCI C335. We will assume familiarity with topics such as low-level programming (C/assembly), and high-level programming (Python).

Students without such background are advised to consult the instructor.


No textbook is required, but the following can be helpful:

Topics Covered


Over the course of the semester, we will assign multiple programming projects. Full points will requires these projects be submitted to the autograder and/or be demonstrated to the TA. These projects will involve writing both C code for embedded systems and python code for a standard Linux machine.

You will be allowed to work in teams of two.

Due Dates and Extensions

Assignments turned in after the exact time and date on the assignment will receive a zero. We do not generally offer extensions. For example, we do not offer extensions due to crowded computing sites, long queue times or slow response times on the autograder, internet access problems, accidental erasure or loss of files, or outside conflicting commitments.

We will consider extension requests made in person and at least two weeks in advance, for example, for religious holidays or planned medical procedures. Additionally, we will consider requests for extensions due to documented, unanticipated medical or personal emergencies. If you can’t see the instructor in advance due to the emergency, then contact them as soon as you possibly can. In all cases, we require written proof of the emergency.


Your final grade is based on scores from the standard projects, the final project, and one midterm. The tentative point distribution is included in the following table. It is not likely that this will change, but circumstances might occur which would make changes necessary, at the discretion of the instructor. Once a grade has been posted to Canvas, you will have one week to appeal the grade.

Standard Projects Midterm Final Project
50% 25% 25%

The Autograder

We will grade your programs in an autograder system that is similar to the Linux environment. Your code must be submitted, compile, and run correctly on the autograder before the deadline. We use a web-based autograder for project submissions. For some projects, the autograder will also evaluate the thoroughness of test cases you submit.

Note that for security reasons, the autograder website is only accessible from within the IU network. Therefore, you must either be on campus or connected through a VPN to access the website.

Autograder Link: https://autograder.sice.indiana.edu


We will be using Piazza to host a course forum. You are encouraged to read this regularly and post technical questions as it will be a significant source of help and hints on the projects. We do not answer technical questions via email. To save everyone time, we want all students to have the benefit of seeing each question and its answer, so please use the forum. We prohibit posting your own solutions, project code, test cases, or autograder output to the forum.

Piazza Link: https://piazza.com/class/jqcjlmgtrub1yh

Academic Integrity

Learning difficult or complicated material is often facilitated by discussions between students and we encourage you to form study groups to try to solve difficult problems together.

However, exams and programming projects must be your own work. Do not cheat in any way: do your own work! Doing your own work means that you must turn in your own, original work. It means you do not turn in a solution copied from somebody else or found on the web. In programming projects, working together may extend to figuring out overall strategies for solution but you may not work together or share the actual code that you submit.

For projects where teams are allowed, the group is allowed to share all code between group members, but not outside of the group.

Disability Services for Students

If you think you need an accommodation for a disability, please let your instructor know during the first three weeks of the semester. Some aspects of this course may be modified to facilitate your participation and progress. As soon as you make us aware of your needs, we can work with the Office of Disability Services for Students (DSS) help us determine appropriate academic accommodations. Any information you provide is private and confidential and will be treated as such.

Corrections and Clarifications

We will post a Canvas announcement in the case of any critical corrections or clarifications. It is your responsibility to ensure you are able to receive Canvas announcements.

Version: 2019.1