Instructor: Vikram Iyer (vsiyer [at] cs.washington.edu)
Teaching Assistants: Alex Ching, Zachary Englhardt, Deeksha Prabhu
Lectures: 12:30-1:50, Wed/Fri in
MOR 230,
Recordings (UW Login required)
Lab and Office Hours: EEB 345
Assignment Submission and Grades: Canvas (UW Login required)
Contact Info:
Please use Ed Discussion whenever possible. This is the fastest way to get an answer to your question from the course staff or even others who have had the same issue. The answer to your question is likely to be helpful to others in the class. Feel free to use private messages on the discussion board for questions that contain detailed code or should not be shared with the rest of the class. For other questions, including unexpected emergencies or other personal circumstances, email the instructor directly.
Catalog Description
Introduces the specification, design, development, and test of real time embedded system software. Use of a modern embedded microcomputer or microcontroller as a target environment for a series of laboratory projects and a comprehensive final project. Prerequisite: CSE 143. Offered: jointly with ECE 474;
Prerequisites: CSE 143
Credits: 4.0
Topics
A brief non-exhaustive list of some topics that will be covered in the course. Note that much of the course centers around lab assignments that involve running code on a real hardware culminating in a final project.
- C programming intro
- Advanced C programming (void pointers etc.)
- Process Context, Multi-tasking, Basic schedulers
- Meeting real-time performance constraints, scheduling algorithms
- Coordination of resources shared between multiple tasks
- Interrupt service routines
- Bit-level I/O to hardware devices
Grading
CSE/ECE 474 uses a simple flat-points grading scheme. To calculate your grade add up your points, multiply by 0.01 and that is your base grade. The grade may be adjusted by Prof. Iyer to make the class average reflect overall class performance. All students will get the exact same grade adjustment such that the class mean grade correctly reflects overall learning effort and performance, extenuating circumstances, etc. In the example below -0.1 is an example only. It can be positive or negative.
Assignment |
Points |
C prog 1 |
20 |
C prog 2 |
20 |
Quiz |
15 |
Lab 1 |
70 |
Lab 2 |
70 |
Lab 3 |
70 |
Lab 4 / Project |
90 |
Midterm |
45 |
No Final |
|
TOTAL |
400 |
Example |
|
Student Points |
370 |
Multiplier (x0.01) |
3.700 |
Class adjustment |
+0.100 |
Final Grade |
3.800 |
Official Grade |
3.8 |
Late work policy
Each student gets one late day per individual assignments (total 2x) that can be used on C Programming 1 or C Programming 2. Each lab group gets one late day per lab (total 4x). You can use a max of 2 late days per assignment. Any time past the deadline (e.g. 1 hr) still counts as a whole late day. Weekends count as 1 late day (ex: for an assignment due on Thurs at 11:59 + 2 late days is Sun 11:59). After exhausting your late day allowance or after 2 days, any late assignments will be subject to a penalty of 25% per day. For lab 4 which is due during finals week we cannot accept submissions after the last day of the quarter.
AI policy
AI tools such as ChatGPT and Copilot are dramatically changing software development workflows, and their use in embedded systems is an active area of
research. You are welcome to explore using these tools to support your learning and complete lab assignments. However, if you choose to use AI, you must acknowledge this and not represent the work solely as your own. You will also be responsible for learning the content that will be on the in-class midterm, where you will not have access to these tools. When employing AI tools, please include an additional page in your lab report with a detailed discussion that addresses the following points:
-
Utilization of AI Tools:
- Detail how and where the tool was implemented. Elaborate on why the tool was chosen and whether it helped in achieving the set goals.
- Please provide any specific details on how the AI outputs were useful in the context of hardware.
- Example: What prompts were utilized to obtain the final result? Were there instances when the tool failed? Was there a need to iterate on prompts? Did the tool reduce development time or aid in resolving impediments? Was it instrumental in overcoming a block? How did you communicate the state of the hardware to the AI tool?
-
Interpretation of Results:
- Explain the methods used to verify the correctness of the obtained result.
- Example: Could you interpret what the generated code was intended to do and perform a sanity check to ensure it accomplished the goal? Or did you run the code and validate that it worked on the examples provided? How do you know it didn't introduce bugs?
-
Impact on Learning Experience:
- Reflect on how utilizing AI tools affected your grasp of the subject matter.
- Example: Did it allow you to concentrate on core class concepts, with the AI handling computational details, or did it hinder learning by solving problems and eliminating the need to engage with key concepts?
Example: Utilization of AI Tools: This section of the syllabus was generated using GPT-4. We chose to use this tool both to illustrate its use case and to expedite the update of the syllabus. We used a prompt that described the main points we wanted the students to describe and received a descriptive text in return. We then asked GPT-4 to convert it into LaTeX code, enabling us to integrate it into the syllabus. After reviewing the result, we considered it a bit lengthy and overwhelming, so we condensed it to three main points. After this manual refinement, we submitted the code back to GPT-4 and had it check for typos.
Interpretation of Results: We read the resulting text and revised it before adding it to the syllabus, ensuring it accurately represented what we intended to convey. This meant we needed a few iterations with GPT-4 to get the result we wanted.
Impact on Learning Experience: Using GPT-4 allowed us to iterate more efficiently on the content of the syllabus without having to worry about typos and grammar, enhancing efficiency. We believe it did not detract from the final goal, which was to contemplate deeply on how these tools should be utilized in class.