CS 240 Laboratory

Instructor: Jean Herbst
Office: L134, L037 Science Center
Email: jherbst@wellesley.edu
Office Hours: Tuesday, 4:00PM - 6:00PM
Thursday, 12:00PM - 2:00 PM,
and by appointment

Introduction
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.

Schedule
Lab is held in L037 in the Science Center. Office hours are also held there (when in-person) and/or through Zoom
Lab section 01 meets Wednesday 09:30 AM - 12:30 PM,
Lab section 02 meets Wednesday 1:30 PM - 4:30 PM.
Requirements
Weekly attendance of class and completion of lab reports and assignments is required. The lab is designed to be a 3-hour experience. Preparatory activities and assignments for lab will regularly be assigned, and can be expected to require additional time outside lab each week.

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. If possible, you should plan to attend or at least start the make-up during one of the other lab periods, so that 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).

Partners will submit a single lab report electronically by sharing a Google document with their partner and the lab instructor.

Partners will be assigned by the instructor, and will be different each week. Respectful and collaborative behavior is expected. Partners will work together and discuss results for each lab exercise (do not divide the exercises between partners, or work independently to complete the exercises separately). Use a single screen (with the partners switching driving periodically). Complete as many of the exercises as possible, but don't be concerned about not finishing all of them; the most crucial work is at the beginning, and everyone will have time to complete that. Although some labs are shorter than others (and may be completed in less than 3 hours), It is not accpeptable to try to get through the lab quickly to be able to leave early. If one partner needs more time than the other to fully understand the work, please do not rush. Being patient and assisting a partner is an opportunity to be a learning facilitator (which is a real-life skill, and part of what students will get out of this lab).

Grading
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 Also, 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 Please hand in a hardcopy of your solutions at the beginning of lab.

Lab 5 notes may be helpful with the assignment.


Lab 6 assignment
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?



Lab 8 assignment
Lab 8 notes
Lab 9 assignment
Lab 9 notes
Lab 10 assignment
Lab 10 notes
Lab 11 assignment
Lab 11 notes
Connect Four Solution
Lab 12 assignment
Lab 12 notes

Lab 13 overheads