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:00PM every Monday in 32-123.

Recitation: Offered at four different times on Tuesdays:

  • Recitation 1: (9:30AM-11:00AM) run by Pranav Arunandhi in room 45-230
  • Recitation 2: (11:00AM-12:30PM) run by Pranav Arunandhi in room 45-230
  • Recitation 3: (1:00PM-2:30PM) run by Ethan LaBelle in room 45-230
  • Recitation 4: (2:30PM-4:00PM) run by Jessica Zhang in room 2-190
  • Recitation 5: (9:30AM-11:00AM) run by Aria Kydd in room 32-144
  • Recitation 6: (11:00AM-12:30PM) run by Alan Zhu in room 1-390
  • Recitation 7: (1:00PM-2:30PM) run by Arun Wongprommoon in room 32-155
  • Recitation 8: (2:30PM-4:00PM) run by Kaustubh Dighe in room 32-144

Lab: Offered at four different times on Wednesdays and Thursdays:

  • Lab 1: (Wed 9:30AM-12:00PM) run by Joe Steinmeyer in 38-530
  • Lab 2: (Wed 12:00PM-2:30PM) run by Silvina Hanono Wachman in 38-530
  • Lab 3: (Wed 2:30PM-5:00PM) run by Anthony Pennes in 38-530
  • Lab 5: (Thu 2:30PM-5:00PM) run by Silvina Hanono Wachman in 38-530

Office Hours: in 38-530.

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

Exam: For H2, will be Wednesday May 8th 7:30PM–9:30PM.

Course Content

Lectures: Lecture will introduce the concepts being taught for the week. 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 taught that week. 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 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 each week's lab.

Postlabs: Each week, you will be assigned a postlab which will expand upon that week's in-class lab.

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. Please note that we will be running background scripts that check that you are actually working on the lab while there. The help queue in lab will only be available to students that have checked in and are assigned to that particular lab session. That means that if you don't finish the lab, you will have to come back to get any remaining checkoffs in office hours and cannot continue working into the next lab session. Failure to attend your assigned lab section every week, without getting it cleared with a course instructor, will result in a failing grade for the class. Futhermore, you are expected to arrive on time to your lab. Arriving 10 minutes late (MIT time) to lab will reduce your max score for that lab to 75% of the possible points. After 20 minutes, that drops a max of 50% of the possible lab points. So make sure that you come to lab on time.

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-530. Office hours are listed above.

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

  • five exercises (20%)
  • attendance and/or completion of recitation work (5%)
  • five labs (20%)
  • five postlabs (15%)
  • one exam (40%)

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!

Additionally, 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.

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.

Examples of prohibited collaboration

  • 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.
  • Not Allowed: Using any computer-generated code (for example, code from ChatGPT) as a starting point.

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.


 
Footnotes

1without sharing code (click to return to text)