Computer Science and Engineering 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 Lecture: 2:30-3:20pm in Avery Hall 21
Wednesday and Friday Lecture: 2:30-3:20pm in Avery Hall 110
Wednesday Lab: 3:30-4:20pm in Avery Hall 21
Optional Monday Lab: 3:30-4:20pm in Avery Hall 21
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 implementating of 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
- Student shall design, build, and debug hardware / software to drive peripheral devices.
- 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.
- Express the tradeoffs between choosing a microcontroller versus a custom digital system.
Course Objectives
- Design and implement a complex, structured, synthesizable digital system that meets defined requirements.
- Use contemporary software tools to debug a digital system design and verify that a digital system meets defined requirements.
- Apply structured design techniques to design functional hardware interfaces and to provide the basis for efficient, modular software programs.
- Analyze and describe the timing, clock, and synchronization requirements for a given digital system.
- Design and implement a digital system using: (a) fully custom-built hardware solution, (b) application-specific software processor, and (c) general-purpose software processor.
- Evaluate, analyze, and modify a given digital system to improve area, power, or speed.
- Express the tradeoffs between choosing a microcontroller versus a custom digital system.
Course Prerequisites
CSCE 236; SOFT 260, CSCE 310, CSCE 310H, CSCE 311, or equivalent; senior/graduate standing.
Course Materials
Extra Instruction (EI) Policy
Schedule EI with your instructor if you are having difficulty with the course material. 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 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.
CAS Policy
You must request permission from your instructor for any class absence (with a descriptive reason - don't just send the SCA number) as soon as possible, preferably before the absence occurs. You must use e-mail to notify your instructor.
Collaboration Policy
For all assignments in this course, you may work with any faculty members 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 Computer Science and Engineering 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. It will be your instructor's prerogative to collect or grade homework.
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 CSCE 236. 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 closed textbook and notes. Students are allowed to use only the provided TI documents and data sheets for exams and quizzes. Both laboratory and classroom work will appear on exams. For missed Exams, the following policies are outlined:
- Scheduled Absence - If you know that you will be unable to take the Exam during the scheduled Exam period, you are required to inform your instructor as soon as possible before the Exam to schedule a make-up exam.
- Unscheduled Absense - If you miss the Exam for reasons beyond your control (e.g. hospitalization, emergency leave, delayed field trip return, etc.) you must contact the instructor within two working days to schedule a make-up. Exceptions can only be granted by the Department Head.
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.
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.
Updated Course Policies for Online Instruction
Like we discussed in class previously the course will be moving to an online format for 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
There will not be too many formal lectures for the rest of the semester since most of the work is an individual lab 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 Exam 2 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 left on the syllabus and here are the updated plans for each:
- Lab 4: Lab 4 will be accomplished like before using your Nexys Video board and demonstrating functionality and submitting reports
via BitBucket. Although I will change the bonus functionality to better accomodate only having access to only one board.
- Exam 2: Exam 2 will be hosted via Canvas and Responsdus Lockdown Browser. Potentially it may be a combination of Canvas Quiz with a take
home portion.
- Final Project: The Final Project will continue as before and will be accomplished using your Nexys Video board and the peripheral
devices of your chosing. The plan, milestone reports, project report, and project briefing slides will continue to be submitted via BitBucket and Canvas.
- Final Project Briefing: Instead of doing an in person Final Project briefing and demo. We will conduct the briefings and demos via Zoom
the last week of April per the syllabus. You will still publish and turn in a demo video per the requirements.
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
|
Final |
Exams |
25 (2) |
Lab 1 |
10 |
Lab 2 |
10 |
Lab 3 |
10 |
Lab 4 |
10 |
Quizzes / Assignments |
10 |
Final Project |
25 |
Subjective |
0 |
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 "Duty 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 computer 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, CSCE Lecturer
Course Instructor, CSCE 436/836