School of Computing CSCE 436/836 - Advanced Embedded Systems

Course Policies and Administration

Instructor

Jeffrey Falkinburg
Office: Avery Hall 368
Phone: 402-472-5120
E-mail: jfalkinburg2@unl.edu

Course Information

Monday, Wednesday, and Friday Lecture: 2:30-3:20pm in Avery Hall 119 (Lincoln) and PKI 270 (Omaha)
Optional Monday and Wednesday Lab: 3:30-4:20pm in Avery Hall 119

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 how to build an Oscilloscope and Function Generator. In this course you will develop the low level interfaces for audio and video controllers and sensor interfaces on the embedded system that control the system. In this course you will learn the theory and practice of interfacing, configuring, and programming embedded systems through development on the Nexys Video FPGA platform.

At a low-level, you will learn about embedded system design, using digital and analog interfaces, finite state machines, communicating over various protocols, and interfacing embedded systems with different peripheral devices . At a higher-level you will learn about implementing, optimizing, and debugging embedded hardware and software algorithms to control the oscilloscope and its actions. In addition, you will learn about networking, embedded operating systems, and power management.

For the final project, you will extend your understanding with embedded hardware and software design by designing and implementing an engineering prototype to address some need. You will interface with a new peripheral or sensor in a new and innovative way. By the end of the course you will have a deep understanding of the design, programming, and interfacing of embedded systems. This will prepare you for cutting edge careers in industry and research.

Course Goals

  1. Student shall design, build, and debug hardware / software to drive peripheral devices.
  2. Students shall design, build, and debug an advanced digital system. Three different approaches will be taken: (a) a fully custom-built hardware solution, (b) implementing an application-specific software processor, and (c) using a general-purpose software processor.
  3. Express the tradeoffs between choosing a microcontroller versus a custom digital system.

Course Objectives

  1. Design and implement a complex, structured, synthesizable digital system that meets defined requirements.
  2. Use contemporary software tools to debug a digital system design and verify that a digital system meets defined requirements.
  3. Apply structured design techniques to design functional hardware interfaces and to provide the basis for efficient, modular software programs.
  4. Analyze and describe the timing, clock, and synchronization requirements for a given digital system.
  5. Design and implement a digital system using: (a) fully custom-built hardware solution, (b) application-specific software processor, and (c) general-purpose software processor.
  6. Evaluate, analyze, and modify a given digital system to improve area, power, or speed.
  7. Express the tradeoffs between choosing a microcontroller versus a custom digital system.

Course Prerequisites

A grade of "P" or "C" or better in CSCE 231, CSCE 236 or ECEN 220; or instructor permission.

Course Materials

Extra Instruction (EI) Policy

Schedule EI with your instructor or the TA if you are having difficulty with the course material or join in during office hours. You must have read the assignment and attempted the homework before requesting EI. Note: You are responsible for material if you miss class, so get notes from someone in your section. For example, if you miss the lesson where your instructor announces a quiz for the next lesson or the instructor assigns homework due next lesson, you are still responsible for the quiz, homework, or any other assignments made. It is in your best interest to check with your classmates after an absence. After you've read or watched the assignment, attempted the homework, and checked with your classmates, you may then schedule EI if you have difficulty with the material - not to make up class.

Submission Policy

All assignments including homework, labs, quizzes, and exams will be based in Canvas and BitBucket. Specifically, all homework and lab assignments should be submitted electronically on Canvas and code will also be submitted (committed) via BitBucket, and all quizzes and exams will be taken online in Canvas.

Attendance Policy

You must request permission from your instructor for any class absence (with a descriptive reason) as soon as possible, preferably before the absence occurs. You must use e-mail to notify your instructor. Because this is a very challenging course and it is very hard for you to study by yourself, it is very important for you to attend or remotely view every lecture.

COVID-19 Accommodations

Collaboration Policy

For all assignments in this course, you may work with any faculty members, TAs, or students currently enrolled in CSCE436 unless otherwise indicated. We expect all graded work, to include software programs, wired circuits, lab notebooks, and written reports, to be your own work. If they aren't, you've copied and will receive no academic credit even if the copying is documented. Further, copying without attribution is dishonorable and will be dealt with as a suspected academic integrity violation. All students enrolled in any computer science course is bound by the School of Computing academic integrity policy:

You are expected to read, understand, and follow this policy. Additionally, Students must document any assistance received in the execution of graded work. If you receive no assistance on an assignment, the use of the Documentation: None statement is mandatory. If no documentation statement exists, the assignment will be returned for correction and the work will be considered at least one day late.

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.

Homework

Reading assignments are provided in the syllabus and should be done prior to class. Homework problems are provided in the syllabus. All homework will be submitted in Canvas and committed to BitBucket.

Labs / Lab Notebooks

The labs in this course are very hardware intensive. A disciplined approach to design, implementation and testing are key to your success! The Big Bang method, or wiring and coding something up and debugging it until it works, usually does not work. We do allow you to turn in incomplete labs, but up to 25% can be deducted for not meeting requirements (See lab grading and late work policies below).

Lab notebooks must follow the lab notebook standards specified in the Lab Notebook Example and rubric. The lab notebook is maintained as a journal of your lab experience and should allow you, or any knowledgeable engineer, to recreate your project. For each laboratory assignment, you will turn in a short formal report that summarizes the contents of your lab notebook.

Exams

All exams are open website, textbook, and notes. Both laboratory and classroom work will appear on exams. For missed Exams, the following policies are outlined:

Miscellaneous

This course is designed to help in your development as a computer or an electrical engineer. As such, we introduce economic considerations as well as manufacturability and sustainability during the first half of the semester and re-emphasize these as we progress through the semester. Feel free to provide feedback on the lessons and labs at any time. If you have ideas to improve or enhance the course, please let me know. The class builds on concepts from the prerequisites so it is important for you to seek help as soon as you need it. Procrastination is truly the enemy in a hardware design course. A little foresight and planning and a lot of effort will result in an extremely rewarding experience serving as the basis for future microprocessor design work.

Graduate-Level Requirements

Note that students who take the graduate-level version of this course have additional requirements:

  1. Interface with either twice as many new I/O devices in a new and innovative way on your final project as students who take the undergraduate version of the course, or
  2. Choose a final project topic that has a more advanced technical effort in comparison to students in the undergraduate version of the course.

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 Lewis Pound Hall, 472-3787 voice or TTY.

Course Policies for Online Instruction

If the course moves to an online format for a portion or the rest of the semester. The following sections discuss how we will be transitioning to online instruction.

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 period and will still be responsive to on Piazza and will connect via the Zoom links posted on Canvas and Piazza and during 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 start publishing public videos to YouTube or gif files showing your lab/project functionality. You will then insert the images and or video links in your readme/project report on BitBucket. All the code and proof of functionality documents should still be pushed to BitBucket as normal.

Remote Teaching Plan

Most of the work in this course is individual labs and final project. For traditional course lectures I will continue to 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 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 for each lecture.

Assessment Plan

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

Backup Plan

If we are unable to connect via Zoom I will post links to Microsoft Teams or Google Hangouts. If Zoom (or other live media devices) do not work for the final briefings we would just submit pre-recorded briefings with the demo video.

Grading

All grading will be performed in Canvas.

Grade Distribution and Policy

Assignment Group Weight
Exams 25% (x2)
Lab 1 10%
Lab 2 10%
Lab 3 10%
Lab 4 10%
Quizzes / Assignments 10%
Final Project 25%
TOTAL 100%

You must complete the required functionality for every lab (even for zero credit) to pass the course.

Grade Max (Exclusive) Min (Inclusive)
A 100 90
A- 90 87
B+ 87 84
B 84 80
B- 80 77
C+ 77 74
C 74 70
C- 70 67
D 67 60
F 60 0

Late Work

All work is due as shown on the assignment or specified by your instructor. If problems arise with graded assignments, see your instructor in advance. Assignments turned in later than the due date without prior permission from the instructor will be penalized as follows (note there is no distinction between "Business Day" or "Day":

How Late? Penalty
0 - 24 Hours 25%
24 - 48 Hours 50%
48 - 72 Hours 75%
> 72 Hours 100%

This course is designed to help you in your development as an engineer. Feel free to provide feedback on the lessons and labs at any time. If you have ideas to improve or enhance the course, please let me know. The class builds on concepts from the prerequisites, so it's important that you seek help as soon as you need it. Procrastination is truly the enemy in any engineering course. A little foresight and planning and a lot of effort will result in an extremely rewarding experience serving as the basis for future embedded systems design work.

Good luck!

JEFFREY FALKINBURG, SoC Lecturer
Course Instructor, CSCE 436/836