ECEn 425: Syllabus
Course Overview
This course on real-time systems is intended to give students insight
into the hardware-software interface, the structure and functionality
of system software, and the challenges of real-time system
development. ECEn 324 (or equivalent) is a hard prerequisite for this
class. It is essential that all students have programming experience,
reasonable knowledge of the C programming language, and a good grasp
of fundamentals regarding computer systems.
Course Competencies
Each degree program at BYU has specified Program Educational
Objectives (what the program prepares students to achieve) and Program
Outcomes (specific skills, attributes, and knowledge that students
should possess upon graduation). Relative to the Program Outcomes,
each course has associated competencies that define specific,
measurable skills, attributes, or areas of knowledge that successful
completion of the course should demonstrate. For this class, these
are the following:
- The ability to apply C and assembly programming languages and
knowledge of the hardware/software interface to the design and
implementation of a real-time kernel.
- The ability to design and implement a real-time application.
- The ability to design and implement a real-time kernel.
- The ability to use C programs, compilers, and debuggers in the
design and implementation of real-time application software.
- The ability to write interrupt service routines.
- The ability to use a real-time operating system as a tool in the
development of real-time application software.
These competencies will be demonstrated through a sequence of labs in
which student teams will design and implement a real-time micro-kernel
(a simple operating system) using a set of simulation and development
tools developed specifically for this course. Once the kernel is
functional, students will develop application code that uses their
kernel, that runs correctly, and that meets real-time constraints.
Text
Simon, David E.,
An Embedded Software Primer,
Addison Wesley, 1999.
We will not be running the uC/OS software on the CD included with your
text, but you may find it helpful to look through the source code,
since the uC/OS kernel is similar to the YAK kernel that you will
create. The contents of the disk can be found in /ee2/ee425/src/uCOS
for your convenience.
Lab Assignments
The labs are the major emphasis in this course. Through a series of
"hands-on" projects, participants will become much more familiar with
the C programming language, the structure and operation of a real-time
kernel, the interaction of hardware and software required to support
multitasking and interrupt handling, and the design of real-time
applications.
The initial labs will be completed by each individual; subsequent labs
must be completed in teams of two. (Exceptions must be cleared with
the instructor in advance. The benefits of having somebody to double
check your work are substantial!) Each team is expected to complete
the assigned work on its own. You are free to discuss the lab
assignments with others, but the code you create should be
entirely your own -- as a team. Any deviation from
this will be treated as a violation of BYU's honor code.
You are required to read protect your working directories and all
files therein to keep others from browsing through your work. See the
man pages for chmod or ask the TAs for details on setting
access permissions.
At the end of each lab, you will be asked to submit a short lab report
(1 per team). Clearly the main goal of each lab will be to get your
code working. The lab report is not intended to add unnecessarily to
your work, but rather to provide you a formal means to provide
feedback. You are expected to report the total time you took to
complete the lab and to give a brief synopsis of problems you
encountered. You are invited to comment on interesting things you
learned, conceptual problems you had to overcome, and recommendations
for improving the lab in the future.
The labs build on each other, so timely completion is imperative.
Late labs will be docked 25 percent per weekday (Monday-Friday) for
the first two days, then 20 percent per weekday thereafter, to a
maximum of 90 percent. To illustrate, a well done lab due on Tuesday
but turned in on Wednesday will receive 75 percent of the full points;
the same lab turned in Friday (3 days late) will receive 30 percent.
A fully functional lab will never receive less than 10 percent of the
possible points. Email submissions for lab passoffs will be graded
based on the timestamp of the submission, as well as file timestamps
when passed off with TAs. The deadline for each lab is 11:59 PM on
the due date.
In recognition of the importance of labs in all our courses, it is the
policy of our department that all lab assignments must be completed to
receive a course grade. If you do not complete all the
assigned labs, you will receive an "E" for this course.
Homework
Homework assignments are to be completed by each individual student.
It is permissible to discuss and work together with others on the
homework, but, after all the discussion, what you turn in must
be your own work. You are responsible for placing your own completed
homework assignment (hardcopy) in the department homework box before
the 4:45 PM deadline. Your homework must be neat and organized and
should follow the department standards for homework or it may not
receive full credit. You may type and print your homework solutions,
but please use a fixed-width font, such as Courier New, to make your
code listings and output easier to follow. Homework submitted after
the due date may receive half credit if it is submitted (in the
homework box) before 4:45 PM on the second weekday after the original
due date. Submissions after that point will receive no
credit.
Exams
Two closed-book midterms will be given during the semester. The exams
will be given in class. In accordance with university policy, the
final will be comprehensive and given at the time indicated in the
class schedule. Please do not ask to take the final early; plan your
travel and interview trips around your finals.
Final Grades
I'll use something along the following lines to compute final grades:
| Homework
|
| 10%
|
| Lab Assignments
| 30%
|
| Midterms
| 30%
|
| Final
| 30%
|
|
|
|
|
| 100%
|
Although the final exam is just one factor in determining your final
grade, you will not receive a passing grade in the class if
you do not receive a passing grade on the final.
Honor Code Standards
In keeping with the principles of the BYU Honor Code, students are
expected to be honest in all of their academic work. Academic honesty
means, most fundamentally, that any work you present as your own must
in fact be your own work and not that of another. Violations of this
principle may result in a failing grade in the course and additional
disciplinary action by the university.
Students are also expected to adhere to the Dress and Grooming
Standards. Adherence demonstrates respect for yourself and others and
ensures an effective learning and working environment. It is the
university's expectation, and my own expectation in class, that each
student will abide by all Honor Code standards. Please call the Honor
Code Office at 422-2847 if you have questions about those standards.
Preventing Sexual Discrimination or Harassment
Sexual discrimination or harassment (including student-to-student
harassment) is prohibited both by the law and by Brigham Young
University policy. If you feel you are being subjected to sexual
discrimination or harassment, please bring your concerns to the
professor. Alternatively, you may lodge a complaint with the Equal
Employment Office (D-240C ASB) or with the Honor Code Office (4440
WSC).
Students with Disabilities
If you have a disability that may affect your performance in this
course, you should get in touch with the office of Services for
Students with Disabilities (1520 WSC). This office can evaluate your
disability and assist the professor in arranging for reasonable
accommodations.
Last updated on 31 August 2009