CS 240 Laboratory

Instructor: Jean Herbst
Office: E106, L037 Science Center
Email: jherbst@wellesley.edu
Office Hours: Tuesday, 6:00PM - 7:00PM
Wednesday, 3:30PM - 4:30PM,
Thursday, 1:00PM - 3:00 PM,
and by appointment

In CS 240 Laboratory, students learn about the foundations of computer systems by experimenting with software and hardware. Lab material coordinates with lecture topics, and will often introduce the student to strategies and tools required for class assignments.

Lab is held in L037 in the Science Center. Office hours are also held there and/or through Zoom
Lab section 01 meets Wednesday 09:30 AM - 12:00 PM,
Lab section 02 meets Wednesday 1:30 PM - 4:00 PM.
Lab section 03 meets Thursday 9:55 AM - 12:25 PM.
Weekly attendance of class and completion of lab reports and assignments is required. The lab is designed to be a 3-hour experience, but the actual scheduled class time has been shortened during the Covid-19 crisis. Therefore, preparatory activities and assignments for lab will regularly be assigned, and can be expected to require additional time outside lab each week. Also, unless you need to attend another class directly after lab, we will typically continue until 12;00 for lab 1, until 4:00 for lab 2, and until 12:25 for lab 3 if the extra time is needed to complete exercises and/or as an extra help session.

If you must miss lab because of illness or other valid reason, you must notify the instructor prior to the missed lab and schedule a time to make up the lab. The make-up must occur before the next lab meeting. You should plan to make up or at least start the make-up lab during one of the other lab periods; even if you cannot attend the full period, you must at least start the lab when the instructor is present.

Each week, a lab assignment will be given, to be completed and submitted prior to lab. The lab assignment gives you additional practice for the lab material already covered and/or prepares you for upcoming lab exercises.

Lab assignments are due at the beginning of lab. These assignments will not be accepted late, and will be graded.

A lab report is also due at the end of class each week, describing results of the experiments. Reports should include:

  • The answers to any questions posed in the laboratory exercises,
  • Graphs, waveforms, circuit diagrams,programs, etc., as specified in the laboratory exercises, and
  • Observations and explanations, when relevant (especially when your results do not match those expected).

When working with a partner, students will collaborate on every lab exercise (it is not acceptable to divide the exercises between partners). Partners will submit a single lab report electronically by sharing a Google document with their partner and the lab instructor.

As stated in the syllabus, the laboratory accounts for 15% of your grade in the course.

Completing all labs is mandatory.

Your grade will be based on your lab assignments and lab reports. Each lab is worth 100 points. For labs in which an assignment is given, 30 of the 100 points will be for the lab assignment, and 70 will be for the lab report. Lab assignments will be graded for correctness, and must be submitted on time to receive credit. If no lab assignment is given, the laboratory report will be worth the full 100 points.

Lab 1 assignment: watch this playlist of three videos about computing history and basic electronic building blocks for digital computation.

Lab 1 notes

Lab 2 assignment: hand in a hardcopy in lab of your answers from lecture Assignment Zero for the "Make Nothing from Something" section ( solutions to some simple bit puzzles).

Lab 2 notes

Lab 3 assignment Please hand in a hardcopy of your solutions at the beginning of lab.
Lab 3 notes
Lab 4 assignment Please hand in a hardcopy of your solutions at the beginning of lab.
Lab 4 notes
Lab 5 assignment: watch this video about the instruction set architecture and microarchitecture for a small computer
Print a hardcopy and hand in your answers for the Lab 5 assignment
You can also refer to the Lab 5 notes to help you with the assignment.
There is no separate written assignment or videos for Lab 6, other then reviewing the material from lecture.
Lab 6 notes
Lab 7 assignment: read the description of the Pointers assignment and turn in a hardcopy of the answers to the preparatory questions:

1. Is the & character ever considered part of a command word?
2. Can spaces appear at the start or end of command lines?
3. Is a command line with no words valid?
4. Is command_parse allowed to mutate the contents of a command line string it receives as an argument?
5. What is the command to compile testing code for this assignment?
6. What is the command to test your parsing code for this assignment?
7. What tool should be used to check for memory safety violations?
8. Why does step 6a come before step 6b in the workflow?