Skip to content

Class Information

Objectives and Structure

High-Level Objective - Concepts underlying all computer systems. Processor operation, hierarchical memory systems, embedded boards, data acquisition, actuation, and systems software such as compilers, linkers, and operating systems from the programmer’s perspective. Use of embedded platforms to examine how programs interact with and are constrained by hardware.

Objectives - In completing this class, students will...

  • Identify the parts and functions of a complex digital system
  • Identify a system’s requirements and possible implementations, and determine their relation with their environment and context
  • Correlate desired changes in the functioning of an embedded system to the different parts involved in its construction (hardware, control software, inputs/outputs, memory, communications, etc.)
  • Demonstrate familiarity with key concepts in circuit design, digital logic, memory management, and the basics of operating systems, networking, and security

Structure - This class is broken into two main activities: lectures and lab.

  • Lectures will discuss the main concepts of Embedded Systems and Operating Systems. They will be broken into several sections of theory and practice. Note that ZyBook sections will be required reading before every lecture.
  • Labs will help you jump into more focused applications where you'll be expected to test and apply the concepts seen in the lecture section. You will program in the lab, and be responsible for deliverables.

Students are assessed through a combination of individual homework, textbook exercises, lab assignments, and exams. Attendance of both labs and lectures is mandatory.

Course Prerequisites and Student Responsibilities

Prerequisites:

  • CSCI 2461 and CSCI 2113

Responsibilities - Students must

  1. Attend all classes unless you are sick or there is an emergency. In these cases, please contact the professor.
  2. Interact, ask questions, and generally participate in class discussions.
  3. Attend all labs, and do all the work assigned in them.
  4. Complete programming problems individually unless working in a group as specified on the assignment in which case you can work only with those group members.
  5. When working with a group, it is essential that each group member pull their own, but also that other group members let
    them
    do so!

Course Philosophies

Throughout the class, students should focus on adhering to the following general tenets:

  • Try it! -- A common question is "will this work", or "what will happen in this case". The only reasonable answer is "try it and see!". As long as you take the necessary precautions, your system will not blow up if you program incorrectly, and it is essential to learn to harness trial and error as one of the most effective ways to learn programming.
  • Know your sources, and use them! -- The Arduino webpage is invaluable to find utility methods to use. The syntax used in the Arduino IDE is documented well in the Arduino Reference, and in online tutorials.
    Learn to use your sources productively to help to make progress.
  • Be proud of your code! -- Properly indent it, simplify it where you can to make it more understandable, and comment it where appropriate. You're taking part in an art that most often is shared, and it matters if others can understand your code!
  • Planning is the best debugging! -- You should never jump into code before thinking about it thoroughly. Design your programs by breaking them into independently implementable chunks, and write + debug them one by one.
  • Practice methodical debugging! -- Spend time "stepping through" your program, statement by statement to understand the logic behind it, and why it is ending up in a buggy state. Do not take a program that doesn't work, and modify smaller parts of it until it works. Understand why it doesn't work, and use that knowledge to change or even rewrite your program!

Course Material

Required Text:

  • Online text book by Zyante: CSCI 3410: Systems Programming.
    Please find the details for signing up for this book on Piazza.

Supplemental Text(s)

  • Computers as Components, by Marilyn Wolf, 3rd Edition, Morgan Kaufmann; May 23, 2012, ISBN- 10: 0123884365; ISBN-13: 978-0123884367
  • Arduino in Action, by Martin Evans, Joshua Noble and Jordan Hochenbaum, 2013, Manning Publications Company, ISBN” 9781617290244
  • Programming the Beagle Bone Black – Getting Started with JavaScript and BoneScript, McGraw-Hill Education, 2014, ISBN: 978007183212-0

Grading

Total Points Final Letter Grade
90 - 100pts A- to A
80 - 100pts B- to B+
70 - 100pts C- to C+
60 - 100pts D- to D+
Below 60pts F
Grades will be assigned with the following proportions:

  • Class and Lab Participation and Attendance: 5%
  • Individual Homework & ZyBooks 15%
  • Lab Assignments 20%
  • Projects 30%
  • Midterm Exam: 15%
  • Final Exam: 15%

If necessary, there will be short quizzes at the beginning of classes and labs. You will lose points for missed classes or consistently failing to contribute, ask questions, or collaborate in any group projects.

Late Policy:

  • Assignments cannot be handed in late for credit. If you miss a deadline, for whatever reason, don't panic and keep submitting all other homework. We'll work with you in the end (as long as you don't miss any more deadlines). That said, if you have a medical (or other reasonable) justification, bring it and allowances might be made.

You cannot fall behind on assignments as they strongly build on each other in this class. Therefore, we will adhere to a strict policy that disallows late submissions. If you have a medical emergency or equivalent event, please contact the professor as early as possible.

University Policy on Religious Holidays

  1. Students should notify faculty during the first week of the semester of their intention to be absent from class on their day(s) of religious observance.
  2. Faculty should extend to these students the courtesy of absence without penalty on such occasions, including permission to make up examinations.
  3. Faculty who intend to observe a religious holiday should arrange at the beginning of the semester to reschedule missed classes or to make other provisions for their course-related activities.

Support for Students Outside the Classroom

Disability Support Services (DSS)
Any student who may need an accommodation based on the potential impact of a disability should contact the Disability Support Services office at 202-994-8250 in the Rome Hall, Suite 102, to establish eligibility and to coordinate reasonable accommodations. For additional information please refer
to: gwired.gwu.edu/dss/

Mental Health Services 202-994-5300
The University's Mental Health Services offers 24/7 assistance and referral to address students' personal, social, career, and study skills problems. Services for students include: crisis and emergency mental health consultations confidential assessment, counseling services (individual and small group), and referrals. counselingcenter.gwu.edu/

Academic Honesty

Just as you can do a google search for code online, it is trivial for us to do the same. We have caught numerous people cheating in the past in this way. If you feel pressured about an assignment, please come see me instead of cheating.

You are not allowed to collaborate on the homeworks and the lab assignments unless explicitly told to. Group assignments require collaboration amidst each group, but no collaboration between groups is permitted. Please refer to the academic integrity policy linked from the course web page. This policy will be strictly enforced.
If you're having significant trouble with an assignment, please contact me.

Academic
Integrity Policy

Credit: I'd like to thank Prof. Narahari for the first versions of this academic honesty policy.