Course Information

You are not logged in.

Please Log In for full access to the web site.
Note that this link will take you to an external site (https://shimmer.mit.edu) to authenticate, and then you will be redirected back to this page.

Overview

Introduction to C and assembly language for students coming from a Python background (6.100A). Studies the C language, focusing on memory and associated topics including pointers, and how different data structures are stored in memory, the stack, and the heap in order to build a strong understanding of the constraints involved in manipulating complex data structures in modern computational systems. Studies assembly language to facilitate a firm understanding of how high-level languages are translated to machine-level instructions.

Prerequisite:

  • 6.100A (6.0001)

Dates and Times

Lectures: 9:30AM–11:00AM every Monday in 32-123.

Recitation: Offered at four different times on Tuesdays:

  • Recitation 1: (1:00pm-2:30pm) run by Kenny in room 4-270
  • Recitation 2: (2:30pm-4:00pm) run by Elise in room 4-270
  • Recitation 3: (9:30am-11:00am) run by Justin in room E25-117
  • Recitation 4: (11:00am-12:30pm) run by Justin in room E25-117
  • Recitation 7: (9:30am-11:00am) run by Kenny in room 66-168
  • Recitation 8: (11:00am-12:30pm) run by Elise in room 66-168

Lab: Offered at four different times on Wednesdays:

  • Lab 1: (9:30am-12pm) run by Joe in room 38-530
  • Lab 2: (12pm-2:30pm) run by Silvina in room 38-530
  • Lab 3: (2:30pm-5:00pm) run by Will & Martin in room 38-530
  • Lab 4: (7:00pm-9:30pm) run by Joe in room 38-530

Office Hours: in 38-530 (same room as lab space).

  • Tuesdays 3-5PM
  • Thursdays 6-8PM
  • Sundays 2-10PM

Quizzes and Exams: There will be three quizzes held during lecture time on weeks where we do not have lecture. There will also be two evening 2 hour exams on Thursday October 15th and December 3rd from 7:30-9:30pm. Plese see schedule for full details.

Course Content

The course is divided into 6 topics. Each topic has a lecture, recitation, exercises, lab and post-lab.

Lectures: Lecture will introduce the concepts being taught for that topic. The recitations, exercises, lab, and postlab build upon the lecture material.

Recitations: Recitations will work through problems related to the material taught in lecture. You are expected to bring a device that allows you to access the course website to recitation so you can work through these problems along with the recitation instructor. This is important so you can get the work done to be marked as present for attendance.

Labs: Labs will give you hands-on experience applying the material related to that topic. You'll use a lab kit consisting of an embedded RISC-V processor that you will program using both C and RISC-V assembly.

Exercises: Each lecture week, you will be assigned a number of online exercises that will allow you to practice the main ideas taught that week. We recommend working through some of the exercises prior to the corresponding lab.

Postlabs: Each topic includes a postlab which will expand upon the corresponding in-class lab for that topic.

Course Policies

Recitation Attendance: Recitations will involve a TA working through a set of small exercises which we expect you to also do and participate. You must complete the recitation assignment by 11:59pm of the recitation day. If you attend your recitation section, you will get to this point "automatically" and as a result will be "present" for the session since you are expected to be following along with the work. However, if you wish to opt out of attending recitation, you can, but you will still need to complete the required part of the recitation work by 11:59pm of the recitation day to be marked "present" for that particular recitation assignment.

Lab Attendance: Attendance is required at all lab sessions and you must attend your assigned lab section for the full 2.5 hours unless you finish the assignment in its entirety early. At the start of each lab session, you must sign in to lab at the front of the room. You should be on time and you are expected to be working on the lab assignments in class for the entire duration of the lab period. If you leave lab early without talking with the instructor or work non-6.1903/4 work during lab, this will impact your grade both for the assignment and class overall. The help queue in lab will only be available to students that have checked in and are assigned to that particular lab session. If you don't finish the lab during your lab time, you can come back to get any remaining checkoffs in office hours, but you cannot continue working into the next lab session. You are expected to arrive on time to your lab. Arriving 10 minutes late (relative to MIT time) to lab will reduce your max score for that lab to 90% of the possible points, 20 minutes late to 80%, 30 minutes late to 70%, 40 minutes late to 60%, 50 minutes late (or more) to 50%. So make sure that you come to lab on time. Leaving lab early withour prior authorization from the instructors will result in a 50% maximum score on the lab. Again, you are expected to be in lab for the full session, working on the lab assignment, unless you complete the lab by the end of the lab period.

Due Dates: Each week's assignments (which include all of the exercises, the completed lab, and the completed postlab) are due by the Sunday night after they were released at 11:59PM.

Checkoffs are required for all the labs and postlabs. Lab checkoffs will be performed during the lab period by requesting a checkoff on our help queue. Postlab checkoffs, as well as lab checkoffs not completed during your lab section, must be completed during office hours. Take note of when office hours are held, and please plan accordingly so that you receive all necessary checkoffs by the deadline.

Lateness Policy: It is critical to keep up with the material in this class, because each week builds upon the previous week. As a result, our lateness policy will be strict. Any assignment (exercise, lab, and postlab) grade will decrease linearly to 25% based on how many seconds late you submit your assignment. Three days (72 hours) after the due date, the assignment will be worth at most 25%. Grades for assignments submitted more than 72 hours after the due date will be multiplied by 25%. Please note that failure to complete all labs and postlabs by the end of the semester will result in a failing grade in the course. Note for checkoffs, lateness only accumulates during office hours.

Lab Kits: Each of you will receive a lab kit that you will use for the labs and postlabs. You are expected to keep this lab kit in good and working condition and to return it by the end of the course. Failure to do so will result in a failing grade in the course and referral to MIT's COD.

Getting Help: We use Piazza extensively. Please note that any post containing or referencing code that you have written for an assignment must be made private, so that only course staff can view it. You also can use Piazza to post privately to the instructors for any administrative matters. We also hold regular office hours to help with lab exercises, tutorial problems, to give lab/postlab checkoffs, and to answer any other questions. Except otherwise noted, our office hours are held in 38-630. Office hours are listed above.

Grading: By default, your final grade will be determined by your performance on:

  • six exercises (6%)
  • attendance and/or completion of recitation work (3%)
  • six labs (18%)
  • six postlabs (9%)
  • three quizzes (9%)
  • exam 1 (25%)
  • exam 2 (30%)

In addition, all labs and postlabs must be completed (i.e., receive all required checkoffs) to pass the course. A missing exercise will result in a 0 for that assignment, but a missing or incomplete lab or postlab will result in a failing grade.

Course Materials

Required textbook: All other course materials (lecture slides, recitation material, exercises, labs, and postlabs and other support material) will be posted on the course website.

The resources page will list the specific sections that correspond to each lecture.

Snow Closings

If MIT closes for snow or other weather-related issues, we will plan to still have class using remote means such as Zoom. Because we have only six weeks for the class, it is very hard to cut days for work and stay on schedule.

Classroom Disruptions

Disruptions of classes are not permitted. Students who disrupt class can be subject to disciplinary process or excluded from class if they do not respect this limit.

Academic Honesty

Collaboration among students to understand the course material and tutorial problems can be appropriate. However, all exercises, labs and postlabs should be completed individually, and the work you hand in must be your own. Referencing another entity's (human, software, or otherwise) work or allowing your work to be copied by others is a serious academic offense and will be treated as such. We check submissions for infractions of the collaboration policy. Moreover, a copied assignment will, at a minimum, receive no credit for the copied assignment for all parties involved. Depending on the circumstances, the consequences may be as severe as a failing grade in the class. Multiple infractions will almost certainly result in a failing grade in the class. So make sure that your work is your own! You should not be using generative AI, LLMs, etc... to complete class assignments. This will be considered an academic policy violation.

Examples of permitted collaboration

  • Allowed: Talking to a friend about a postlab assignment, and discussing how to go about completing the assignment at a high level1
  • Allowed: Asking a staff member for help if you are confused or stuck.
  • Allowed: After you've completed and submitted your own postlab, helping a friend debug their code solely by looking at their code and trying to identify problems with it.
  • Allowed: Using AI to clarify general course topic understanding without injecting any course code into the AI tool.

Examples of prohibited collaboration

  • Not Allowed: Using any computer-generated code (for example, code from ChatGPT) as a starting point.
  • Not Allowed: Using AI to help you write or debug your coding assignments.
  • Not Allowed: Helping a friend debug their code by bringing up your solution and comparing the two to identify differences.
  • Not Allowed: Using code from a friend who previously took the class as a starting point, then making some modifications to that code to complete your assignment.
  • Not Allowed: Working with someone so closely that you are basically typing in your solutions side by side.
  • Not Allowed: Copying any portion of someone else's work, even if you make some modifications to it.
  • Not Allowed: Sharing any portion of your code with someone else.
  • Not Allowed: Getting help from a friend who is looking at their solution while helping you.

Sharing of 6.190 (6.0004) code is not allowed. Copyright for the starter code of each assignment is held by the 6.190 (6.0004) course staff, and does not allow redistribution of derived works without permission. Your solutions are a derived work, so you may not redistribute them either publicly (e.g. posting them on GitHub or on your website) or privately. As stated above, allowing your work to be copied by others is a serious academic offense and will be treated as such.

Additionally, during the course exam period, students must not discuss the exam's contents with other students who have not yet taken the exam. If you are inadvertently exposed to the contents of an exam (by whatever means) prior to taking it, you must immediately inform an instructor or TA. Any violation of this policy may be grounds for disciplinary action.


 
Footnotes

1without sharing code (click to return to text)