Office Hours:
See Course Website
Tuesday Lab: 9:30-10:45am in Scott Engineering Center (SEC) 146
Tuesday Lecture: 2:00-3:15 pm in Avery 106
Thursday Lecture: 9:30-10:45am in Avery 19
Course Website
The website for the course is: https://cse.unl.edu/~jfalkinburg/cse_courses/2019/236/index.html
We will also be using Canvas 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.
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.
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 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.
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
CSE 230, or equivalent; or instructor permission
Required:
Marilyn Wolf, Computers as Components, Third 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
Learn C The Hard Way, Zed Shaw
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.
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 check-off by the instructor or TA 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
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 demonstrating the final operation to the instructor or TA before the assignment is due during one of their regularly scheduled office hours, 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. Groups will be randomly assigned at the start of class. Your group will be graded based on what you are able to successfully accomplish during class. 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 an in-class competition 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.
See Course Website