SE3910
Real-Time Systems

This is an old version of this course, from Spring 2014. A newer version is available here.

In this course, we use the Beaglebone, a USB/Ethernet driven development board that can support a real-time OS. This will allow us to explore programming in a time-sensitive environment.

Catalog Description

This intense design course introduces students to software development for real-time systems, which often have stringent timing constraints that must be satisfied even under adverse circumstances. Real-time applications include flight control systems, vehicle control systems, industrial processes, life-support systems, robotic manipulators and multimedia applications. Special attention is paid to scheduling, latency minimization, bandwidth constraints, and other design issues that impact the design of these systems. Laboratory assignments provide experience in the design and implementation of realistic applications using a real-time operating system and embedded development board. (prereq: CS 2710 or CE 2930CS 3844 or CS 3841) (links don't work when copied like this from the catalog...)

(From the catalog)

Outcomes

On successful completion of this course, the student will:

  • Understand concepts of time-critical computing and identify real-time systems
  • Get familiar with a host-target development environment for time-critical systems.
  • Write multitasking computer programs with inter-task communication and synchronization.
  • Apply concepts of inter-task communication and synchronization via shared memory, message queues, signals, semaphores,
  • mailboxes.
  • Understand real-time kernels and task scheduling.
  • Understand concepts of reliability in relation to real-time software
  • Construct distributed real-time applications using a commercial Real-Time Operating System
  • Analyze the performance of a real-time system.

(Acknowlegement: From Dr. Schilling's)

Learning Resources

Me

My goal is to spend my and our time in the way that best helps you learn. If you feel I can help you learn by changing course policies or instructor decisions, please let me know. For example, if you think giving a 10% bonus on the lab is really assigning the lab two days earlier, you might say, "Hey, Dr. Yoder, I don't feel like turning in the labs early helps me to learn the material better, and the industry-simulation is not realistic enough for my tastes. Could you drop that policy for future labs?" I will do my best to improve learning based on such suggestions.

I enjoy talking with you. Come by and give office hours a try! Those who do not only learn themselves, they explore with me ways to help everyone learn better.

Instructor
Josiah Yoder
lıɐɯə
npǝ˙ǝosɯ@ɹəpoʎ
Office
L344 (Library, 3rd floor)
Hours
See schedule below.
Phone
ƖƐ96 ㄣㄣㄣ ϛ9ㄥ Call anytime. Rings office, cell, and computer at same time.

No appointments are necessary for the Office Hours on the schedule below. Feel free to request an appointment at any time Monday-Friday or just swing by.

Updated Day 2
Time Mon Tue Wed Thu Fri
7:00 Class prep Grading Class prep Class prep Class prep
8:00 CS2852
S210
CS2852
S210
CS2852
S210
CS2852
CC210
9:00 Office
Hour
Office
Hour
Office
Hour
10:00   Class prep Grading Office
Hour
11:00 Class prep   Web Inf.
Meeting
 
12:00 Lunch Lunch Lunch Lunch Lunch
1:00 Dept Mtg Class prep CS2852
Planning
Grading Class prep
2:00 SE3910
L307
SE3910
S343
SE3910
L307
SE3910
L307
3:00   Office
Hour
 
4:00  

The Book

New Day 2
Required
Real-Time Systems Design and Analysis by Laplante and Ovaska, Fourth Edition, Wiley, 2012

This website

These pages are available from the right menu. They contain:

  • Overview
    • This page
  • Schedule
    • Day-by-day plan
    • Left side
      • Topics
      • Exam dates
    • Right side
  • Outcomes
    • Exam study guide: Detailed list of things you will be able to do, categorized by week and topic
    • Tips for using Software (e.g. IntelliJ and EA)
  • Homework
    • Prepare for tomorrow's lab!
  • code
    • Day-by-day coding examples
  • slides
    • Day-by-day lecture slides

Learning tools

We will use a variety of learning tools this quarter. Your primary learning tools will be:

  • Doing & reviewing Homework
  • Participating in class and reviewing your own lecture notes, slides, and code.
  • Doing & reviewing Labs
  • Organizing your notes & writing a summary note-sheet

Class

I don't mind if you have to skip a class. But class attendence is essential so you can learn what material I expect you to know, what HW and quizzes there will be, etc. Please ask what you missed if you do skip class, and I'll provide you with material that you may not find on the web.

In class, I expect you to be working only on class material. Please resist the temptation to check your email or browse facebook.

Please particpate in all class activities. Even if the assignment is obvious to you, you can learn more by seeing how your classmates think about it and explaining your own views.

Please take your own notes from lecture and do not rely solely on the slides. Many important concepts do not make there way into the online notes & code. Please bring blank paper for in-class activities and your own notes. You can also follow along in IntelliJ if that helps you.

I want you to make the decision as to whether to drop the class, with the help of your academic advisor. So if you stop coming class, I will give you whatevr grade you have at the end of the quarter, even if it is an F.

Homework

Homework is your primary opportunity to dig deeper in the theory of programming. In addition to the required homework problems, you may want to ask and answer your own questions. Perhaps things like:

  • Why does this compiler error occur?
  • Is it possible to _____?
  • Can I combine _____ and ____ into a single program?
  • Why?

If you come up with a great question, but can't find an answer, ask me! Perhaps I can find it.

To keep HW aligned with class and encourage good note-taking, I will make the official HW assignments in class instead of on the web. To give you time to ask questions about the HW, I will assign it at least two class-days before it is due.

I will grade HW as Satisfactory (S) or Unsatisfactory (U). If you have a specific question about whether you did something right in the HW, please ask me.

Labs

We are still learning essential programming tools, and labs are again individual this quarter.

Because working in lab is one of your best opportunities to interact with me and other students, lab participation is worth 20% of the lab's grade. Of this 20%, 5 to 15% of the participation grade may be assigned to "in-lab completion."

Untested code is buggy. I find that if your code doesn't compile or hardly runs, that there are many other errors in it. You can only get partial credit for a lab if it compiles and runs. If it does not compile & run, please fix the lab and submit it later, or drop a feature or two to get it running again (often the best option).

Turning in assignments

You may earn a 10% bonus on an assignment for turning it in 48hrs early, if the quality of the assignment is reasonable. Unlike Dr. Schilling's section, there is no 5% bonus for 24 hrs early. (Added day 2)

To help you keep on track with homework and to avoid the temptation to work on HW or labs in class, assignments are due at the beginning of class. An assignment received after the initial call and before the next assignment is due can still receive up to 90% of the credit. Please make arrangements with me if you do not feel that you can complete an assignment by the week following. It takes a great deal of work to catch up from this point and I want to help.

At the end of the quarter, all assignments must be turned in by 4:30pm on Friday so that we can wrap things up and I can turn the grades in on time.

Many labs will be turned in electronically. These are due at 11pm, with a 1 hour grace period. Labs turned in after midnight and before the next lab is due can still receive 90% of the credit. Again, please contact me at least a day before the following lab's deadline if you think you may need more time to catch up.

To help keep things organized, please staple all assignments, and include your name, date, and the assignment name on all assignments, even uploaded PDF's. Also, please only submit a lab once. Multiple submissions are hard for me to keep track of, especially if I've already started to grade the first one.

Please start early and ask me for help if you get stuck.

Learning Assessment

We will use the following mix of metrics to measure your learning:

Table updated Day 2
Lab projects 30%
Quizzes & Homework10%
Exam I 30%
Final Exam 30%
Total 100%

I sometimes make mistakes in tallying points. If you become aware of an error in grading, please send me an email, and I will fix it and reply by email.

Discussing things in person is a great way to start to resolve an issue. Please send me the email, too to help me keep track of things.

Please maintain your own records of your grades and check them against whatever summaries I send to you, and let me know if I'm missing an assigment that you've turned in, etc.

Because theoretical knowledge is a core part of this class, you must have a passing exam average to pass the class.

Quizzes & Exams

Quizzes will be announced in class at least one day in advance. They will usually be on Lab day. Quizzes and HW assignments will have the same weight.

Because of the difficulty of preparing fair and accurate tests, you cannot retake a quiz or exam if you miss it or do worse than you hoped. I will drop your lowest quiz score, so one 0 should not be a problem. If you need to skip an exam, you should schedule a make-up exam before the missed exam. I don't always give make-up exams, even if students ask in advance. Please don't schedule airline tickets on a class day!

Grade Scale

I use the official MSOE grading scale:

≥93% ≥89% ≥85% ≥81% ≥77% ≥74% ≥70% <70%
A AB B BC C CD D F

In final grading, I may award a grade higher than the grade scale if I feel it is more accurate than what the "raw numbers" produce

Integrity

Your integrity is your most valuable academic possession, significantly more valuable than passing a class getting a high GPA.

Integrity is essentially honesty -- ensuring that everything that it appears you have done or know is true.

It is possible to accidentally give the impression that work is yours, or to accidentally see something on someone else's exam. If something like this happens to you, please let me know. And generally speaking, please do your best to avoid this. Be on the watch! We people are very good at fooling ourselves; we can even not "know" that we are cheating when we are!

Because of the importance of maintaining academic integrity, I will report apparent academic dishonesty to the Vice President of Academic Affairs. (New Day 2) Depending on the seriousnesss of the situation, I may also revoke any points for the lab or even assign an F for the course. If this occurs, you will get a copy of the report.