TCSS/TCES 465 - Embedded Systems

Syllabus

Winter, 2014

Syllabus Index

General Information

Professor: George Mobus Phone: 692-5894
email: gmobus@u.washington.edu
Office: Cherry Parkes (CP) 227
Hours: TBD, or by appoint.
Class: Time: TTh 10:20-12:25 
Location: CP 206D (Embedded Lab) with spillover in 206H
Textbooks (Optional):
 
An Embedded Software Primer David Simon

What to expect from the course

Upon completion of the course you will understand principles of software development in a real-time embedded systems environment. You will have gained some actual hands-on experience with a real-time application and will have surveyed a variety of architectures/hardware systems that are used in embedded applications. This course is preparatory for a graduate track in embedded systems development, but will be useful for those who seek a better understanding of this “fastest growing” area of computer science. It will also act as an integration of prior courses for CES students in preparation for their senior project implementations (TCES482).

You will have both knowledge of the general principles governing these topics as well as hands-on experience working with several of these.

Learning Objectives

Upon completion of this course you should:

  • be able to demonstrate first hand knowledge of programming for embedded systems
  • understand the architecture of an embedded controller and its peripherals
  • be able to demonstrate an ability to design and construct an embedded control application
  • understand the conceptual problems of real-time systems and how to design solutions
  • understand how to construct and use a minimal RTOS kernel*

Ground Rules

The following course policies will be observed.

Grades

Each evaluation component will carry a grade of 0-100 points which will be multiplied by the percentage weighting factor for that component. That percentage will be translated into a final decimal point (4.0 max) grade. The grade translation can be found at: this table.

Exam

There will be a take-home final covering major conceptual areas of the course (25%).

Exercises

During the first several weeks of class we will be doing team-based exercises in the class and as homework. We start the exercise in the class time and then you will most likely need to complete it at home or in non-class time. I expect there will be four exercises that will prepare you to complete the major project. Each will be graded - all four to be 10% of final grade. The exercises will be posted on the Moodle site as descriptions of what to accomplish and a turn-in link. Only one team member need turn in any of the exercises, but make sure all team members names are in all of the submitted files. Assessments will be similar to those for the project (see below).

Project

The central focus of this course will be on a hands-on project produced by a minimum of two partners. There will be five phases assessed.

  • Problem identification & specification (with documentation) - 10%
  • Preliminary I/O interfacing - 10%
  • Implementation - 20%
  • Testing (with documentation) - 10%
  • Final Report - 15%
Assessments include proper applications of principles discussed in class sessions in all phases, reasonable implementation (i.e. it should work but need not be perfect), and proper use of your notebook throughout the project. In addition to this there will be an end-of-quarter demonstration of working projects which will be judged by a panel of "experts" for originality of concept, completion of objectives, and "wow" factors. The CES and CSS teams will be judged separately. I will award 9%, 6%, and 3% bonus points to the top three teams in both categories.

Notebook Usage

Each week I or the TA will ask a selection of students to examine their notebooks for proper note taking and project documentation. If, in our judgement you have not been taking adequte (and readable) notes, we will subtract points on your individual assessments on project components. So your final score on the project may be less than that of your team mates if you don't keep good notes. The selection could be random or based on observations of note taking behavior during my talks.

Academic Honesty

Any attempt to receive credit for work that is not your own is plagerism. Attempts to hide the lack of contribution for a weak team member will be counted as academic dishonesty also.

You should feel comfortable discussing topics, including general approaches to assignments, in a collaborative atmosphere. Discussing concepts and methods to be applied to problems is often a tremendous aid to studying. But when it is time to sit down and write down answers or program code, you should work on your own (team's).

Course Mechanics

Lectures

I do not believe in formal lectures in the standard tradition for course involving a lot of learning of methods, techniques, and requiring more hands-on work than ordinary labs. Therefore my talks will be brief and to the point covering principles and specific techniques that you should then immediately incorporate into your work. The schedule of topics to be discussed and reading assignments will be posted on the Moodle web site.

Attendance is not mandatory. However, for much of this course you will be working with partners on the projects. If you are absent it could seriously impact the success of the projects. Be sure to communicate with your partner when you may need to be absent.

If you do miss a class you will need to make arrangements with classmates to obtain notes. I will not provide an 'extra' lecture for those situations.

Textbook

The Optional textbook (recommended more for the CSS students) should be viewed as more of an orientation to the concepts of real time embedded systems and more of a lab manual than a theory text. I will provide a number of Web-based readings that will provide a fuller grasp of the principles to be employed in this subject. You will find those in the topic schedule page.

Labs

This is a hands-on course so much time will be spent in the labs working on the projects.

Projects

Every team will come up with an idea for a project after some general discussions with me. These ideas should not be too elaborate and I will help you determine the feasible scope. This is your chance to be a bit creative in terms of what kind of problem you would like to solve with an embedded application. All of these ideas will involve identifying a physical process that you want to monitor or control. You will then determine the kinds of sensors you need to work with and the focus of the course will be how to interface these sensors to the microcontroller and then writing software to implement the performance.

The projects will be based on you major. CSS students will work with the Ardino (you should have gotten an e-mail) processors and their projects will not involve any formal OS design approaches. The CES students will be using Rapsberry Pis and be programming in full C with pthread implementation to simulate an RTOS.

Projects will be done in teams of at least two and no more than four. Larger teams will be expected to choose more complex projects of course, and I will apply an handicapping rule to level the playing field. All teams will be composed of students within their disciplines. Any dual majors will be required to join a CES team. CSS students with more background in electronics and microprocessors may request to join a CES project, but I cannot promise that you will be able to do so.

The basic plan is that we will form teams in the first two weeks. Your team will develop an idea and bring it to me ASAP. The project then goes into five phases and your team will proceed at paces relevant to your project. The first phase is to develop a full problem identification and solution specification document that will be turned in. Examples and formats will be provided. The second phase will involve learning how to interface I/O devices according to your specification. It will be conducted in a series of practice exercises and results being recorded in your notebooks. The third phase will be actual implementation of the project. Fourth will be a test and demonstration of a working model. Finally, you will write a complete formal final report (format will be provided). In the last week of class your team will demonstrate the projects to the public and esp. the panel of judges for competition (your team may opt out if desired).

More details will be presented later. If your team cannot find a problem to work on, I will have several standard problems that you can take on.

* For engineering students and interested CS students.

Disability Accommodation

See the Student Affairs web site