CSCE 336: Embedded Systems

Spring 2022

 

Instructor

Jeffrey Falkinburg

Computer Science and Engineering

368 Avery Hall

jfalkinburg2@unl.edu

 

Office Hours:

See Canvas/Course Website: Falkinburg via Zoom

and by appointment.

 

Teaching Assistants

Undergraduate TAs:

See Canvas/Course Website

 

Office Hours:

See Canvas/Course Website

 

Course Information

Tuesday Lecture:  9:30-10:45am in Avery Hall 119

Thursday Lecture:  9:30-10:45am in Avery Hall 119

Thursday Lab:  11:00-12:15pm in Avery Hall 119

 

Course Website

The website for the course is: https://cse.unl.edu/~jfalkinburg/cse_courses/2022/336/index.html

 

We will also be using Canvas, Piazza, and Bitbucket.

 

This syllabus is subject to change, you will find the most up-to-date version of the syllabus on the course website, as well as information on readings, assignments, and projects. Please make sure to check it regularly. In addition to posting information and assignments on the course website, I will send information over email to the address you gave me at the start of the course. I expect that you will check your email on a daily basis. Please make proper arrangements if you will not be able to check your email or if your email address changes.

 

 

Email

It is CSE Department policy that all students in CSE courses are expected to are regularly check their email so they do not miss important announcements.

 

In this course, important announcements will be made through Canvas and you are expected to regularly check e-mail connected to Canvas.

 

Course Description

Embedded Systems are everywhere. Every time you look at your watch, answer the phone, take a picture, or turn on the TV you are interacting with an embedded system. Embedded systems are also found in cars, airplanes, and robots. They far outnumber traditional computers (which also contain embedded processors) and learning to design and program embedded systems is a critical skill that is necessary for many industry and scientific jobs.

 

In this course, you will learn the fundamentals of designing, interfacing, and programming embedded systems. We will configure simple embedded microprocessor systems, control peripherals, write device drivers in a high-level language, set up embedded and real-time operating systems, and develop applications for embedded systems. We will make use of the Arduino platform, which is an inexpensive, popular embedded system used by hobbyists, researchers, and in industry, to implement the techniques learned in class. By the end of the course you will have mastered the basics of embedded system design and programming, which will prepare you for careers in industry and scientific research.

 

Datasheets

Arduino Uno R3 schematic: The schematic of the Arduino we are using in this course.

Atmega328 datasheet: Datasheet for the processor on the Arduino Uno we are using in this course

 

Prerequisite

A grade of “P” or “C” or better in CSCE 230 or CSCE 231.

 

Prerequisites by Topic

·       Mastery of: processor organization, instruction set architecture, I/O Interfaces, Boolean algebra, logic equations, binary and hexadecimal number systems, fixed-point arithmetic.

·       Familiarity with: programming languages, interrupt processing, I/O devices, logic gates, floating point arithmetic, memory devices and hierarchies, assembly languages.

 

Outcomes of Instruction

1.     Mastery of: embedded system design and implementation, application development on embedded systems.

2.     Familiarity with: OS organization, communication bus design, analog and digital I/O devices, embedded OSs.

 

Relationship of Course to Program Objectives

Contributes to Computer Engineering Program Educational Objectives 1 and 3 and Student Outcomes 2 and 3.

 

Topics Covered

1.     Embedded System Organization: Major components in a typical embedded system, operating requirement, modes of operation, hardware/software codesigns, hardware-software trade-offs.

2.     Microcontroller Programming: Basic structures of microcontrollers, basic features, memory interfacing, digital I/O, timers, analog interfaces, interrupt services, programming in high-level languages and assembly languages, basic data types, operators, constructs, data structures, compiler directives, power management.

3.     I/O Interfacing Concepts: Input devices, output devices, memory mapping, bus structures, peripheral and external communication interfaces.

4.     Operating System: Design and organization of embedded and real-time operating systems, scheduling, power management, communication, debugging.

 

Course Books

Recommended:

Marilyn Wolf, Computers as Components, Forth Edition: Principles of Embedded Computing System Design, 4th ed. Morgan Kaufmann, 2016 
Available in the book store or purchase online.  Readings from this book are specified in the format Wx.x, where x.x indicates the chapter and subsection.

 

David Russell, Introduction to Embedded Systems, 2010. 
Available for free download when on the UNL campus. Good reference for embedded C programming. Do not print out this book, it is less expensive to order a printed copy than to print it yourself. Readings from this book are specified in the format Rx.x, where x.x indicates the chapter and subsection. Note: this book is specifically designed for the Arduino platform, but there are some differences between the version of the Arduino used in the book and the version we are using in class. So be careful! 

Recommended / Optional:

Edward Lee and Sanjit Seshia, Introduction to Embedded Systems, A Cyber-Physical Systems Approach, 2011. 
Available for free download. Do not print out this book, it is less expensive to order a printed copy than to print it yourself. There are no specific readings from this book, but it is a good reference for those interested in exploring some subjects further. 

Brian W. Kernighan and Dennis M. Ritchie, 
C Programming Language (2nd Edition), 1988. ISBN: 0131103628 


A wiki-style C "text book" alternative 
Another online C text book 
C Frequently Asked Questions from the days of Usenet 
Suggested references for those with little prior C programming experience. There are no specific readings from these, but they are good references.

 

Lab Kit / Equipment List

Please purchase the items listed below. I recommend you check with the EE shop First (SEC 122), all equipment can be purchased online as well. If you look through the homeworks, labs, and projects we will be using many of the items in the following kits.

 

·       Arduino Uno Kit with buttons, wires, RGB LED, LEDs, Servo, photoresistors, IR receiver, etc. Here are a couple recommended kits:

o   Elegoo Uno Kit: Cheaper kit with most of necessary parts.

o   Arduino Uno Kit: Genuine Arduino starter kit with most of the necessary parts, but more expensive.

·       Robot Kit

o   LAFVIN Robot Kit: Robot kit that uses rechargeable (18650 3000mAh) batteries that will need to be purchased. This kit seems to drive the motors more consistently/reliably. Used by some in Fall 2020.

o   Elegoo Robot Kit: Cheap robot kit that uses AA batteries. The low current batteries seem to cause the robot motors to be inconsistent and not easily drive straight. Used a lot in Spring 2020.

·       Logic Analyzer (recommended not required): If you choose to purchase a cheap logic analyzer you can use the PulseView open source software to run it. Otherwise, you can use the logic analyzer in the SEC Labs.

o   HiLetgo Logic Analyzer: USB Logic Analyzer.

o   KeeYees Logic Analyzer: USB Logic Analyzer with mini grabbers.

 

Topics Covered

Embedded System Organization: Major components in a typical embedded system, operating requirement, modes of operation, hardware/software codesigns, hardware-software trade-offs.

 

Microcontroller Programming: Basic structures of microcontrollers, basic features, memory interfacing, digital I/O, timers, analog interfaces, interrupt services, programming in high-level languages and assembly languages, basic data types, operators, constructs, data structures, compiler directives, power management.

 

I/O Interfacing Concepts: Input devices, output devices, memory mapping, bus structures, peripheral and external communication interfaces. Operating System: Design and organization of embedded and real-time operating systems, scheduling, power management, communication, debugging.

 

Assignments and Grading

Assignments and due dates will be announced in class. Typically, all assignments are due before the beginning of class on the day they are due. Note that many of the assignments require video/photographic proof of functionality instead of physical check-off by the instructor or TA to be accomplished before the start of class.

 

Your final grade will be composed of a number of components. These are:

 

Percentage      Assignment

20%                 Lab Assignments, Pop Quizzes, and Participation

20%                 Homeworks

15%                 Exam 1

15%                 Exam 2

15%                 Project 1

15%                 Project 2

100%               Total

 

Final grades will be assigned based on the following cutoff percentages

 

Grade

A+

A

A-

B+

B

B-

C+

C

C-

D

F

Score

97

93

90

87

83

80

77

73

70

60

<60

 

Homeworks

There will be a number of homeworks assigned throughout the semester. These will typically have both questions and programming components. Most often these will require submitting video or photographic proof of functionality of the final operation to Canvas before the assignment is due, so please plan accordingly.

 

These are individual assignments. It is ok to discuss concepts behind the problems in the homeworks with classmates, however, you cannot do them together. If you do discuss problems with classmates or other people, you must acknowledge this on the assignment (this will not lead to any grade reduction). As a metric for what level of discussion is allowed, it is ok to meet and talk over coffee about the assignment. It is not ok to show someone your solution or to work on the details of the problems together. In addition, you should not take notes while discussing the problems. If in doubt, ask the instructor or TA questions about assignments.

 

Late homeworks will not be accepted.

 

Labs

There will be a number of small group assignments that will be done during class times. Some labs may have small components that must be performed individually before the start of lab. Your group will be graded based on what you are able to successfully accomplish. Homework assignments will often build on these mini-labs. If you are not in class or are not properly prepared for the lab, you will receive a zero for that lab.

 


 

Pop Quizzes

There will be several unannounced short quizzes at the very start of some classes. These will be open book and notes and will cover materials recently discussed in class. There are no makeups for these quizzes, so if you are not in class you will receive a zero on the quiz.

 

Course Project

There will be two projects in this class that will build on and combine the components you develop in your homeworks. The projects will involve two in-class competitions where you compete with your classmates to accomplish a task. In addition, there will be an associated project report. The first project/competition will be due in the middle of the semester. The second project/competition will be due the last week of classes. Additional details will be announced in class.

 

Absences

Students are encouraged to attend all classes. Absences will likely lead to a reduction in the class participation grade. In addition, missing an in-class lab, exam, or project competition will result in a zero for that assignment and being absent is not an excuse for not turning in an assignment.

 

In very rare cases the instructor may make an exception to this policy in case of an illness or family emergency if acceptable written evidence is given and you notify me as soon as possible. Even if you are sick or leaving town on short notice you should be able to have a friend notify me that you will be missing class or an assignment.

 

COVID-19 Accommodations:

·       No assessment will be made based on any in-person attendance for instructional sessions (which includes lecture, lab, and office hours). The choice to attend face-to-face instructional sessions is left entirely to your own judgment. If you have a medical condition or other consideration or simply do not wish to unnecessarily expose yourself, you are encouraged to refrain from face-to-face sessions. You will not be judged nor will you be required to provide any documentation.

·       If you feel sick, have a fever or other related symptoms, you may not attend face-to-face sessions. Please attend remotely.

·       Since this is a relatively small class all students will be allowed to attend face-to-face every session.

·       All students, learning assistants, and faculty that do choose to attend face-to-face instructional sessions will be required to adhere to reasonable safety precautions as prescribed by UNL.

·       Failure to adhere to these guidelines may result in you being asked to leave class and to attend class sections remotely.

 

University Writing Center

The University of Nebraska-Lincoln Writing Center can provide you with meaningful support as you write for this class as well as for every course in which you enroll. Trained peer consultants are available to talk with you as you plan, draft, and revise your writing. Please check the Writing Center website (http://www.unl.edu/writing/) for locations, hours, and information about scheduling appointments.

 

CSE and UNL Policies

The CSE Department has a Student Resource Center in Avery 13A (http://cse.unl.edu/src) where you can go for assistance with any of your courses.

 

All students enrolled in any computer science course is bound by the Computer Science and Engineering academic integrity policy:

http://cse.unl.edu/ugrad/resources/academic_integrity.php

You are expected to read, understand, and follow this policy.

 

For this course, do not plagiarize (writing or code) and make sure to properly cite any sources you use. Any cheating or plagiarism will be reported to the Chair of your department and your Dean, and will result in an F for the assignment and possibly for the course.

 

The CSE Department has an anonymous suggestion box:

http://cse.unl.edu/department/suggestion.php

that you may use to voice your concerns about any problems in the course or department if you do not wish to be identified.

 

Disabilities

Students with disabilities are encouraged to contact the instructor for a confidential discussion of their individual needs for academic accommodation. It is the policy of the University of Nebraska-Lincoln to provide flexible and individualized accommodation to students with documented disabilities that may affect their ability to fully participate in course activities or to meet course requirements. To receive accommodation services, students must be registered with the Services for Students with Disabilities (SSD) office, 117 Louise Pound Hall, 472-3787 voice or TTY.

 

Counseling and Psychological Services

 

UNL offers a variety of options to students to aid them in dealing with stress and adversity. Counseling and Psychological & Services (CAPS) is a multidisciplinary team of psychologists and counselors that works collaboratively with Nebraska students to help them explore their feelings and thoughts and learn helpful ways to improve their mental, psychological and emotional well-being when issues arise. CAPS can be reached by calling 402-472-7450. Big Red Resilience & Well-Being (BRRWB) provides one-on-one well-being coaching to any student who wants to enhance their well-being. Trained well-being coaches help students create and be grateful for positive experiences, practice resilience and self-compassion, and find support as they need it.  BRRWB can be reached by calling 402-472-8770.

 

Updated Course Policies for Online Instruction

The following sections discuss how the course would transition to a fully online instruction if this course moved to a remote learning format.

 

Communication Plan

I will continue to communicate course updates and changes via Canvas and Piazza. Additionally, I will host a Zoom meetings during the regular class/lab periods.  The TAs and I will still be responsive to on Piazza and will connect via the Zoom link posted on Canvas and Piazza and during our posted office hours to help you stay on track with the class!

 

Communication is a two way street. Make sure you let me know if you have any issues getting things completed and turned in on time. Since we will no longer have in-person class sessions it will be imperative that you publish public videos to YouTube/Google Drive or gif files showing your lab/homework/project functionality. The lab and homework assignments will be converted to a completely Canvas submission for functionality proof, questions, and code.  You will be required to in insert images and/or video links of functionality into your Canvas submissions. All the code, proof of functionality documents, and final reports for the Project Part 1&2 should still be pushed to BitBucket as normal.  However, there will be Canvas submissions for functionality proof videos on Canvas so that we can quickly grade your submissions.

 

Remote Teaching Plan

For traditional course lectures I will post videos for the lectures and will host meetings via Zoom during the class period for you to ask questions about the material and get assistance on the labs, homeworks, and projects. It will be imperative that you review the lecture videos/notes and keep up on the labs and homeworks to be successful on the Exams and in the course as a whole. Please take the time to watch the videos and review the online notes, handouts, and slides.

 

Assessment Plan

Assessments will be submitted online via Canvas and Bitbucket. There are four major assessments categories on the syllabus and here are the updated plans for each:

·       Lab/Homework Assignments: Completely Canvas submission for functionality proof, questions, and code.

·       Project 1&2:  Canvas submission for functionality proof and Final Reports.  BitBucket will be used for code, documentation, and the final report submission backup.

·       Exam 1&2: Exam 1&2 will likely be hosted via Canvas. Potentially it may be a combination of Canvas Quiz with a take home portion.

 

Backup Plan

If we are unable to connect via Zoom I will post links to Microsoft Teams or Google Hangouts.   

 

Course Schedule

See Course Website