CS 240 Spring 2021 T3
Foundations of Computer Systems1

What is CS 240, Foundations of Computer Systems?

CS 240 examines how computers run programs, introducing key abstractions and implementations in software and hardware between programming languages and transistors.

Goals

Course goals include:

  • To understand how computers execute programs.
  • To understand the roles of key software and hardware abstractions, their implementations, and their relation through translation and representation, including: digital logic, microarchitecture, instruction set architecture, the memory hierarchy, basics of programming language implementations, and operating system abstractions.
  • To understand when and how computer system implementation impacts correctness or performance of arbitrary high-level programs.
  • To become proficient in structured reasoning about the execution of programs on well-defined models, including the use of assertions and debugging tools to inspect program invariants and execution state.
  • To develop foundations for further study of programming language implementation, security, computer architecture, operating systems, networks, concurrent and distributed systems, or other systems/implementation topics in computer science.
  • To develop skills for independent learning, critical thinking, and problem-solving as a self-reliant computer scientist.

Topics

The course home page hosts the working schedule. +Optional extensions are prefixed in the schedule with a plus sign. We may visit these if there is time. They are always available for your own exploration in further depth.

Building blocks for implementing computation: During weeks 1-2, lab meetings survey hardware computational primitives, while class meetings examine corresponding data representation models.

  • Hardware building blocks (lab):
    • Transistors, digital logic gates
    • Combinational and arithmetic logic
    • Sequential (stateful) logic
    • Overview of computer processor architecture
  • Data representation fundamentals (lecture):
    • Data representation with bits, bit-level computation
    • Number representation, arithmetic
    • The memory model, pointers, and arrays in the C language
    • Assertions, debugging

The hardware/software interface: During weeks 3-4, lab and class meetings work closely together to explore the instruction set architecture model in depth with x86.

  • The instruction set architecture model, machine code, assembly language, x86
  • Basic program translation
  • Control flow
  • Procedures, call stack
  • Data layout, security implications

Abstractions for practical systems: During weeks 5-7, lab and class meetings work together to explore system abstractions that make computing workable in practice.

  • The memory hierarchy, caches
  • Memory allocation
  • Operating system basics:
    • Exception control flow
    • The process model
    • Virtual memory
  • Compilers, run-time systems, programming tools
  • Beyond 240

When Should You Take CS 240?

Prerequisite: CS 230 or permission of the instructor is required to enroll in CS 240.

Recommendations:

  • Consider your courseload carefully. CS 240 is a 1.25-credit lab course that requires a larger time commitment and workload than most 1-credit courses.
  • Take CS 240 early after finishing the CS 111 / CS 230 introductory sequence. CS 240 should boost your independence, give valuable context for how things work as you approach further computing studies, and open doors to a wide range of courses and areas in CS.

Please talk to the instructors if you have any questions or concerns. We are happy to work with you to make your time in CS 240 most effective and rewarding for you.

Course Staff

Role Name, Email Pronouns
Student You + Classmates (ask)
Tutor Martha Dameron she/her/hers
Tutor Victoria Quin she/her/hers
Lab Instructor Jean Herbst
jherbst@wellesley.edu
she/her/hers
Instructor Ben Wood
benjamin.wood@wellesley.edu
he/him/his

The CS 240 instructors and tutors look forward to welcoming you to CS 240 and joining you as you explore how computers work. We hope to see you regularly in and out of scheduled course meetings.

Please follow announcements, get in touch, find support in drop-in hours, or make a private appointment with the instructors or tutors in the CS 240 venues for communication and support.

Communication and Support

There are a few venues for communicating with your classmates, tutors, and instructors in CS 240. To find support, check these resources:

  1. Start with the course website for the course schedule and documentation on assignments/projects, labs, course policies, software tools, and course topics.

  2. The CS 240 0xF0rum is a Zulip text chat used for all course communication in CS 240. Ask and answer questions, read announcements, discuss course topics, and send private messages on the 0xF0rum. In the term system, you should plan to follow announcements in this venue at least daily. See the 0xF0rum guidelines.

  3. The CS 240 0xCAFE is a Zoom video meeting used for all remote events in CS 240. Participate in class meetings, seek academic support in drop-in hours with instructors and tutors, or just hang out in the 0xCAFE. See the 0xCAFE guidelines.

  4. Instructors are also available for private appointments, arranged via private communication (Zulip private message or email).

You will learn in the first couple days of CS 240 how to make sense of the silly names.

The 0xF0rum (Zulip Chat)

The CS 240 0xF0rum is a Zulip text chat used for all course communication in CS 240.

What’s with the silly name? 24010 = F016, written 0xF0 in programmer’s hexadecimal notation. Thus “240 Forum” = “0xF0 Forum” = “0xF0rum” = “0xF0 room” = “240 room”. 🙄

The 0xF0rum is organized into streams (these might evolve):

  1. #announcements: course announcements from instructors or tutors (Follow this stream regularly!)
  2. #questions: questions and responses/discussion about logistics, concepts, course work (do not post your code or complete/partial solutions), error messages, or software tools
  3. #partner search: find partners for pair work
  4. #community: everything else, hanging out, levity

Collaborating to ask and answer questions on the 0xF0rum helps students, tutors, and instructors help each other by pooling our collective curiosity, experience, knowledge, and critical thought. Please engage enthusiastically, subject to these guidelines:

  1. Communicate respectfully and patiently with the goal of supporting others and yourself.
    • Asking a question is just as valuable a contribution as answering one.
  2. Before posting:
  3. Do not post complete or partial solutions to assignments/projects in the form of code, short answers, or detailed descriptions of algorithms in any human or programming language. Posting sections of starter code or code from course materials with attribution is OK.
  4. Use private messages, email, or appointments with instructors to communication about private topics such as grades, extensions, or personal issues.

Using Zulip

Zulip messages belong to a topic within a stream. It’s like a more organized Slack also capable of long-form messages or a discussion forum also capable of quick chat. The 3-level organization allows flexible focus by selecting:

  • A topic: view only the messages within that topic chronologically.
  • A stream: view all messages from all topics in that stream chronologically.
  • All Messages: view everything chronologically.

Hygiene:

  • Reply (shortcut: r) to keep your message in the same topic; use a new topic for an unrelated message.
  • Move a message to a different topic or stream after the fact if it is out of place.
  • Formatting posts with Markdown or LaTeX can help readability, such as to separate code(snippets) from prose.
  • If showing a code example (not solution code), an error message, or other text, please post it as text (not a screenshot). Text is searchable, zoomable, reflowable, and more. Screenshots are much less useful than text. Preserve indentation, etc., by using simple code formatting in your message. Here’s an example.

The 0xCAFE (Zoom Meeting)

The CS 240 0xCAFE is a Zoom video meeting used for all remote CS 240 events. Participate in class meetings, seek academic support in drop-in hours with instructors and tutors, or just hang out in the 0xCAFE.

Join us for a byte in the 0xCAFE, where we can chat face to 0xFACE & unmasked over live video 0xFEED! (But do a wear a mask if you’re in a public space!)

What’s with the silly name? “Cafe” is the new term for all PLTC drop-in tutoring resources. Spelling words in programmer’s hexadecimal notation is fun. We will learn about hexadecimal, the & operator, and bit masking in the first couple days of CS 240. 🙄

Guidelines for all meetings in the 0xCAFE:

  1. Class meetings and drop-in hours use the 0xCAFE. CS 240 students may use the 0xCAFE outside of scheduled course activities to gather, ask each other questions, work with others, or hang out.
  2. Do not share meeting links or passwords outside the class.
  3. If you have a set of external headphones/microphone that’s better than your built-in computer audio (especially microphone), use them.
  4. Try to join from an environment that is relatively quiet and non-distracting. Sometimes this is hard; do your best with what’s available.
  5. Do not join a meeting from the same physical space as another person who has joined the same meeting unless you both use headphones (to avoid audio feedback problems).

Drop-in Hours

Drop-in hours with tutors or instructors are for any kind of questions or academic support (large or small) on course work, concepts, or anything else.

  1. Instructors can work with you in the main room or in a breakout room. For general questions that may interest multiple students, we may sometimes answer the question in the main room for everyone. For questions specific to your code or assignment work, or anything else more private, we will use breakout rooms.

  2. The 0xCAFE link points to a combination of Zoom link, drop-in schedule, and sign-up sheet. You may sign up for a time slot in advance or after you arrive. For reference (but not sign-ups) there is also a shared calendar of all CS 240 events, including drop-in hours (also in .ics).

  3. We use a sign-up sheet to help everyone make realistic time budgeting choices and improve our chances of working with everyone who shows up to drop-in hours. If drop-ins are not too busy and additional slots are available, you may sign up for a slot again after your first slot concludes. If there are many students seeking help, we may prioritize students who have not yet been had a time slot during the current drop-in session.

How We Support You

The instructors and tutors play a few roles in CS 240:

  • We welcome you to the world of computer systems and serve as your guides to new ways of thinking, new ideas, and new skills as you explore this world.
  • We pose challenges to help you develop new thought processes, knowledge, skills, and independence as computer scientists.
  • We provide support for you to learn, grow, and meet these challenges under your own power, because we believe every one of you can do so.

Seeking academic support from peers, tutors, or instructors is a normal part of the CS 240 experience. Here is what to expect:

We ask you questions. The CS 240 staff enjoy helping you learn independently, so we often answer your questions by asking you more questions to help you construct your own path forward. While this may feel less expedient in the short term, it is more effective in the long term, since you learn a broader thought process rather than one small answer.

Preparation is your ticket to assistance and curiosity pays off. In general, we expect you to make a genuine effort to answer your own question before asking for help on an assignment. It is rarely wise to spend hours stumped on a single issue before asking for help, but at least a few minutes of common sense exploration often nets effective results or at least helps focus your question. Be curious! Compiler error message? Try looking it up in the assignment, associated tool documentation, or a web search to understand what the error means. Crashing program? Try to employ debugging strategies and tools listed in the assignment to make progress toward understanding the cause.

Each code assignment includes a required preparatory exercise to help understand foundations for the assignment. Lab or class activities often spend time on these exercises. To make sure you understand the preliminaries, instructors and tutors require that you complete this preparation before asking for support with the main assignment tasks. We are happy to answer questions about the preparation itself at any time, but we will defer questions on core assignment tasks until your preparation is complete.

Levels of support. Tutors and instructors provide different levels of support for different parts of assignments. Preparatory exercises enjoy broad support. The staff will answer questions and provide assistance on the main part of assignments in accordance with principles in the honor code definitions. Tutors and instructors will answer only clarifying questions on [Independent] parts of assignments.

Course Meetings

Class Meetings

Classes meet remotely in the CS 240 0xCAFE with instructor Ben Wood:

  • Tuesday, Wednesday, and Friday 4:00pm - 5:15pm

The course calendar links topics for each class meeting, with supporting materials and assigned preparation steps to complete before class.

Asynchronous Preparation

Before each class meeting, complete the required preparation steps listed in the topics for the day. Preparation varies from day to day, but usually consists of some combination of watching videos, reading, or trying small exercises, and asking or answering questions in the 0xF0rum. Expect the preparation to take more than a few minutes. The preparation is just as important as synchronous class activities themselves, which often build on ideas encountered in assigned preparation material.

Synchronous Class Activities

During each class meeting, live instruction will build on the assigned preparation material with lecture segments and examples (partly guided by preparation questions from the 0xF0rum) and group exercises in breakout rooms. Materials used during the meeting are linked from relevant topics on the course calendar.

Class meetings take place remotely in the CS 240 0xCAFE.

  • Please join the meeting on a computer from which you can access (and screen-share) CS 240 software tools, as some pair/group exercises will include programming and other software tasks.
  • With the whole class in the main meeting:
    • It is usually best to stay muted when you are not speaking. Use the “raise hand” feature if you have a question or wish to speak. If the host does not see the “raise hand” notification, speak up to get attention.
    • If you are comfortable doing so, enabling your video camera can help you and others stay more engaged and help the instructor better modulate pacing and engagement or see your physically raised hand. Feel free to choose whether you focus the speaker or all participants in your own view.
  • During small group exercises in breakout rooms, it usually works best to stay unmuted and visible.
  • Follow the general 0xCAFE guidelines.

Lab Meetings

Labs meet on campus in the SCI L037 CS Systems Lab (“037” on this access routing map) with lab instructor Jean Herbst:

  • Lab section 1. Monday and Thursday 10:00am - 12:45pm
  • Lab section 2. Monday and Thursday 1:00pm - 3:45pm
  • Lab section 3. Monday and Thursday 4:00pm - 6:45pm

Lab logistics, policies, and materials are on the lab webpage. Lab attendance is required. Remember, WWW.

Attend only the lab section for which you are registered.

Due to space limitations and distancing requirements, you may attend only the lab section for which you are registered, unless you have explicit advance permission from the lab instructor to attend a different section.

“037” on this access routing map shows the SCI L037 CS Systems Lab and the preferred route when entering and exiting the building.

Course Materials

All in-class materials and assignments are linked from the calendar on the course website. Lab materials are shared ahead of each lab meeting.

Texts

Electronic options are available for all required sources. At least one physical copy of each text is also available in the physical SCI L037 CS Systems Lab for use within the CS department area. Please use them in the data lab area and return them to the shelf when you are done. If using these shared physical books, please wash your hands before and after. (WWW)

We use one primary textbook extensively:

Other textbooks are used during the first part of the course:

We recommend a good reference on the C programming language. Here are a couple solid options:

Additional materials will be posted directly on the course website.

Acknowledgments

Parts of this course draw on material by the CSAPP authors at Carnegie Mellon University, adaptations of this material for CSE 351 at the University of Washington, material on digital logic and microarchitecture from past iterations of CS 240 by Randy Shull, and some updates to the current flavor of CS 240 by Ashley DeFlumere and Andy Davis. Some parts of the Honor Code guidelines are adapted from the Williams College Computer Science Department Honor Code Guidelines.

Course Work

Basic practice: Class and lab work help you learn the basic concepts.

Synthesis: Larger assignments push you to connect concepts and apply them in practice.

  • Code projects apply computer systems concepts in hardware and software, forming the heart of CS 240.
    • Each code project has a preparatory exercise to ensure you understand the preliminaries before beginning the main assignment. Completing the preparatory exercise is required to receive support on the main assignment.
    • Class and lab activities often integrate with projects, especially preparatory exercises.
    • Parts marked as [Independent] must be completed by you on your own, without support from instructors, tutors, or anyone other than your partner, if working as a pair.

Final Exam: An asynchronous flexible-time final exam covers concepts introduced by the lecture component of the course. (It omits concepts covered only in lab during the first couple weeks of the course.)

The Honor Code applies to CS 240 course work as defined below.

A note on assignments as of Fall 2020:

Assignments in versions of this course from Spring 2015 through Spring 2020 integrated the theme of different courses at a school of magic from a popular book series, as we gradually showed that there is no magic inside a computer. The instructors decided it was time to remove this theme in Fall 2020. If you encounter any lingering traces that we missed, please let us know.

Grades

Percentage Letter
> 95.0 = A
≥ 90.0 ≥ A-
> 86.6 ≥ B+
> 83.3 ≥ B
≥ 80.0 ≥ B-
> 76.6 ≥ C+
> 73.3 ≥ C
≥ 70.0 ≥ C-
≥ 60.0 ≥ D
< 60.0 ≥ F

Course grades are computed by weighting course components as follows:

  • Lab preparation and activities: 20%
  • Code projects: 55%
    • Within each assignment, points are explicitly delineated between non-[Independent] and [Independent] problems.
  • Class preparation and activities: 5%
  • Final Exam: 20%

Course grade percentages are converted to letters as shown in the accompanying table. The minimum percentage required to achieve a given letter grade may be adjusted downward (only to raise letter grades), but never upward (never to lower letter grades). If your percentage grade satisfies the constraint in the left column, then your letter grade will satisfy the constraint in the right column of the same row.

Anonymous Grading: CS 240 staff make a best effort to grade course work anonymously, meaning that, under normal circumstances, graders do not associate student identity with submitted work until all on-time submissions for that assignment/exam have been graded in full. Once anonymous grading is complete, each student is identified and the unadjusted results are attached to the student’s record.

Anonymous grading helps improve consistency and fairness, reduce effects of any implicit bias, and make clear that the course staff is grading your work, not you. To assist in maintaining anonymity, it is important to avoid listing your name within your work except where specified, so we can automatically hide it during grading.

Limitations of anonymity: Anonymous grading in CS 240 is “best effort” in that the graders can look up the student identity associated with any submission at any time, but we avoid it under normal circumstances. We try to detect submission problems early, before grading begins, so that they can be resolved without affecting anonymity. Nonetheless, anonymity can be compromised in cases where we discover a submission problem only later during grading and request that you resubmit, or when you submit late work after we graded on-time submissions.

Late Policy

Assignments are due at the date and time specified in the assignment manifest. Deadlines synchronize with class material and scheduled academic support (drop-in hours) to help ensure smooth forward progress in the course. You are strongly advised to keep up with deadlines. CS 240 moves quickly, especially on the Term calendar. Falling behind on assignments can make the work more difficult.

Sometimes, however, prioritizing completion of an assignment by the deadline may not be the right personal choice for you. To encourage you to learn from the assignments while also affording flexibility when it benefits your health and well-being, you may use either of the following mechanisms to submit late (non-lab) assignment work without penalty:

  1. Self-serve 48-hour late pass: You may delay any assignment deadline by 48 hours by submitting this late pass notification form before the original deadline. There is no need for any other communication in this case.
    • The form requires a brief summary of progress (e.g., “#1 done, #2 stuck, #3 started” or “not started”) and whether you anticipate seeking support (drop-in hours/appointment) for the assignment (yes/no).
    • If the 48-hour extended deadline falls during a break or weekend, it is automatically moved to the final day of that break or weekend.
  2. Custom extension: If you need to extend an assignment deadline more than 48 hours, or if you did not submit a late pass notification in time, you must email the instructor with an initial timeline and plan for when and how you will complete the assignment and report on progress.
    • We will adjust the plan together to make sure it is reasonable. The instructor may ask you to prioritize current work first. If you need custom extensions on more than assignments, the instructor may ask you to check in with your class dean to make sure you are getting the support you need to manage your course load.
    • You are never required to discuss details of your personal circumstances with an instructor to receive an extension, although we are happy to lend an ear. If you choose to share, please note that reporting duties prevent instructors from holding strict confidentiality in all cases.

The above extension mechanisms are subject to the following limitations:

  1. No extension may surpass the last day of Reading Period unless your class dean supports it.
  2. Feedback and grading for work submitted under an extension will be completed as time allows. This may take arbitrarily long, possibly past the end of classes and exams. The likelihood and likely magnitude of delay grow with the length of the extension.

Preparatory assignments for lab or class meetings are not subject to these policies, since their timeliness matters for making best use of the associated lab/class meeting.

Exams are not subject to extensions. Exam dates are fixed fixed, as noted on the course calendar. Mark this on your calendar. Please arrange accommodations with the instructor at least 3 days ahead of exams. If you are unable to make the exam time at the last minute due to an emergency, we can schedule a make-up exam with the support of your class dean or health services. This sets a common standard for all students and ensures you are getting the support you need for your emergency.

Honor Code

The Wellesley Honor Code applies to CS 240, including through CS 240-specific policies for acceptable resources (collaboration, assistance, and reference) in course work. The general spirit of these policies should not be surprising, but the details are key to boosting the quality of your learning and maintaining a fair and rigorous academic environment for you and your classmates.

In summary:

  • Ungraded practice activities support initial learning, so they are free of restrictions.
  • Graded assignments support deeper learning and independence, so they require that your submitted work be your own, following one of two policies for acceptable resources:
    • Graded practice assignments help you cement the basics and learn relevant tools, so they permit relatively broad resources.
    • Graded synthesis assignments require you to think critically and make connections to formulate logic and implement solutions independently, so they restrict acceptable resources significantly.
      • [Independent] parts of graded synthesis assignments must additionally be completed without assistance from others.
  • Graded examinations measure your independent mastery of concepts, so they require that your submitted work be your own, without using any resources.

Full definitions are linked from the summary and appear below. Please read the entire policy. If in doubt about details, please ask for clarification. Violations of these policies are handled through the appropriate Honor Code charge or resolution processes.

Ungraded Practice Activities

Types: reading, study, class exercises

Policy: You may collaborate, receive and provide assistance, and consult reference without restriction.

Graded Assignments

Types: graded practice assignments, graded synthesis assignments

Policy:

  • A team works as one to complete and submit one assignment solution. A team is an individual or a pair, determined by the assignment’s designated team policy.
  • Your team’s submitted solutions must be your team’s own work.
  • You must not divide work among people (within or across teams) to complete separate parts and combine the solutions.
  • Your submissions must cite all collaboration, assistance, and reference (excluding course materials and reference linked from the course website) that your team used to prepare your submission. List each person or resource with a short phrase identifying the topic or nature of collaboration, assistance, or reference.
Team Policy

Each graded assignment follows one of two team policies. Graded synthesis assignments indicate their policy in the assignment manifest.

  • The individual policy requires individual students to prepare and submit their own solutions.
  • The pair policy allows two students to prepare and submit a single joint solution.
    • Individuals may opt to complete an individual submission on pair assignments unless pairs are explicitly required.
    • Partners choosing a pair submission must contribute in similar measure and complete at least 80% of work on each problem together in real-time pair-programming style. Collaboration within a pair is otherwise unrestricted.
    • If it becomes necessary to split a pair, the partners must coordinate with the instructor to document what work was completed together.
Graded Practice Assignments

Types: individual pre-lab assignments, pair lab activity reports

Policy:

  • All parts of the general graded assignment policy apply.
  • You may collaborate with other CS 240 Spring 2021 T3 students, including to develop solutions together, if collaborators participate in roughly similar measure.
  • You may provide and use assistance or reference in accordance with the above policies without further restriction unless otherwise noted on the assignment.
Graded Synthesis Assignments

Types: written paper assignments, applied code assignments

Policy:

  • All parts of the general graded assignment policy apply.
  • Collaboration:
    • On all parts:
      • You must not communicate detailed algorithms, implementations, code, formulae, or other detailed solution steps with other teams.
      • You must not, under any circumstances, view, share, prepare, or accept written solutions or assignment code outside your team.
    • On parts not marked [Independent]:
      • You may discuss high-level ideas or strategies with other teams in small groups.
    • On parts marked [Independent]:
      • You may not give or receive assistance on the [Independent] part.
  • Assistance:
    • On parts not marked [Independent]:
      • You may accept help from course staff to locate errors, interpret error messages, and correct errors of syntax.
      • You may accept help from other CS 240 Spring 2021 T3 students to interpret error messages, subject to the above policy on viewing code.
    • On parts marked [Independent]:
      • You may accept help from course staff to only to interpret error messages or receive answers to clarifying questions.
  • Reference, on all parts:
    • You may consult course material from CS 240 Spring 2021 T3 and external documentation of required tools.
    • You may consult external reference resources for general concepts and techniques, provided you cite them.
    • You must not consult solutions to this or any similar assignment.
    • Code reuse and adaptation:
      • You may reuse and adapt provided starter code in your solution without restriction.
      • You may reuse and adapt code from other course materials only with prior written approval from the instructor and explicit attribution of the source.
      • You must not reuse or adapt any other code.

For non-[Independent] problems only, you are welcome to discuss high-level ideas and strategies with other teams, as allowed by the policy above. If taking notes on these discussions, keep your notes general (no verbatim copies, photographs, detailed descriptions). Remember, you may not write solutions together, so later, write full solutions on your own, referring to your notes only if needed.

Rules of thumb for collaborating outside your team on non-[Independent] parts of graded synthesis assignments:

  • Wait at least 30 minutes after discussions outside your team before writing your solutions. This helps you know whether you actually understand the solutions (and their derivation) yourself.
  • If writing your solution is effectively making a verbatim copy of – or following a set of explicit directions in – your notes from discussion with others, then your notes or your discussion are too detailed.

After the course:

Some students students may wish to include work from CS 240 in portfolios, resumes, etc. Please do not post code publicly (including on GitHub, GitLab, Bitbucket, your own website, etc.), but feel free to show your code privately to potential employers or others who are not students. Do not make your code accessible or viewable by current or future CS 240 students.

Graded Examinations

Types: asynchronous exams

Policy:

  • Your submitted solutions must be your own work.
  • You must not provide or use any collaboration, assistance, or reference external to the exam document between receiving and submitting the exam unless explicitly stated by the exam document itself.
  • You must not communicate about the exam contents with anyone other than the CS 240 Spring 2021 T3 instructors until given permission by a CS 240 Spring 2021 T3 instructor.

Accommodations

Accessibility and Disability

If you have a disability or condition, either long-term or temporary, and need reasonable academic adjustments in this course, please contact Disability Services to get a letter outlining your accommodation needs, and submit that letter to me. You should request accommodations as early as possible during the course, or before the course begins, since some situations can require significant time for review and accommodation design. If you need immediate accommodations, please arrange an appointment with me as soon as possible. If you are unsure but suspect you may have an undocumented need for accommodations, you are encouraged to contact Disability Services. They can provide assistance including screening and referral for assessments. Disability Services can be reached at disabilityservices@wellesley.edu, at 781-283-2434, by scheduling an appointment online at their website https://www.wellesley.edu/disability.

Religious Observance

Students whose religious observances conflict with scheduled course events should contact the instructors in advance to discuss alternative arrangements. You may do this through the Wellesley College Religious Observance Notification system if you prefer.

Pandemic Circumstances

The course staff recognizes that:

  • Circumstances this year are, overall, more stressful than the baseline in other years;
  • Primary health is not the only axis of impact;
  • Circumstances of individuals may be especially variable as we begin the term; and
  • Individual or group circumstances may change suddenly without notice during the term.

Please be in touch with us if you are concerned about the impact of your circumstances on your ability to participate in CS 240. We will work with you to determine a reasonable approach for you and CS 240.

Public Health and CS 240

This document omits nearly all direct mention of current Wellesley College policies or logistics around public health, since this info can change over time. The Keeping Wellesley Healthy hub is a central source of up-to-date information about the current public health status of the College. Should any change impact CS 240 directly, the instructors will communicate about it at that time.

Remember, WWW. And in CS 240 terms: Mask it!   I 240.   i & 0xF0

How to Succeed in CS 240

Challenging Assignments: We study concepts in core systems design and implementation by applying them in assignments that often require hands-on work with real computer systems. CS 240 labs and preparatory exercises familiarize you with relevant concepts and tools at a small scale, but completing an assignment requires deeper investment in learning, critical thinking, and the time for both. Start early. Powering through assignments near the due date rarely works well.

Real computer systems are often large and complicated, even if founded on simple or elegant principles. Likewise, CS 240 assignments are structured, but typically require some independent exploration, experimentation, and critical thinking to complete. Mindlessly following exhaustive instructions is a job for computers. The job of a computer scientist is to think critically and learn how to construct or apply new ideas and tools. The solutions themselves are never as important as the insights you gain in the process of finding solutions and understanding their context. CS 240 code assignments require you to read and reason about specifications, apply concepts from class, learn something new beyond what was covered in class, consult documentation, think critically about design choices, synthesize plans for implementation, implement your designs, evaluate or debug the results, and explain your approach. It might be messy; it is all important.

Intellectual Independence and Self-Reliance: A core goal of CS 240 is to develop independence, confidence, and self-reliance as a learner, critical thinker, and computer scientist. We expect you to take charge of your learning and embrace an exploratory, self-reliant approach to experience the reward of accomplishing large problem-solving tasks under your own power. In return, enthusiasm, determination, careful preparation, and a “can do, figure it out” attitude on your part are rewarded with enthusiastic support from us. The CS 240 staff are always happy to help you learn to find your own strategies to solve problems.

Tips From CS 240 Alums and Staff

Have more? Let us know.

  • Embrace the CS 240 perspective and approach to support.
  • Prepare before class. It is fine if you do not understand all of the reading, video, or exercise, but seeing it early lets you ask better questions in class and hit the ground running in class exercises.
  • Do not worry about being wrong in class. Students are often uncomfortable offering answers or suggestions in class for fear of peer judgment if they are wrong. First of all, there are far fewer questions with a single right answer (or even a clear binary right/wrong classification of answers) in this course than students expect. Second, we are learning! “Being wrong” is normal and often more useful in class than “being right.” The best answer is a thoughtful answer. We have more opportunity to learn if asking questions you cannot necessarily answer easily. Better to share a “wrong” answer and explore the question’s complexities while fixing the answer together than to keep that “wrong” answer to yourself for use on an exam. We will make mistakes at least a few times in class (only occasionally on purpose). Join us – it’s fun! (Third, we do not tolerate students criticizing other students for being wrong in class.)
  • Take notes in class. The slides can be useful, but they are just a prop. The most useful and interesting insights happen in exercises and other discussion. Writing down your solutions (and your approach!) is great reference for review later.
  • Ask questions in class, in office hours, in tutor hours, in lab, of your classmates or on the email list (but first, read the Honor Code definitions). The knowledge will not come to you. Go get it. We will often answer your questions with more questions.
  • Read the instructions on assignments and understand the specifications. There is often good advice about how to approach the problem most effectively.
  • Work incrementally. As you work through an assignment (after you understand it), think and plan before you ever write any code or build any circuit. Writing code before planning and writing one big pile of code before testing are two sure routes to disaster. Plan carefully before you ever touch the keyboard. Write pseudocode. Draw diagrams. When you are ready to write code, do it incrementally. Write a small piece. Write assertions to document your assumptions. Test it. Does it work? No? Repeat until it does. Now, commit it so you can get back to this point if things go wrong later. Then, write the next small piece, and so on. Step back occasionally and consider if you are still on track for your plan. Does it need adjustment?
  • Read specifications carefully and think critically about how best to implement them.
  • Consult documentation to learn about relevant tools and library functions.
  • Experiment to try out potential ideas.
  • Start assignments early and stay on schedule. (Really, early! Really early. Ask any CS 240 alum.) Before you can “just finish” the assignment, you will need time to absorb the task, understand how to approach it, plan, take a break when you get stuck (time away from a problem almost always helps), debug, ask questions, and more. Some of the assignments are big or complicated. The checkpoints will help you keep on pace to finish comfortably.
  • Engage regularly in the 0xF0rum. Collaborating to ask and answer questions together helps students, tutors, and instructors help each other by pooling our collective curiosity, experience, knowledge, and critical thought. It also often leads to quicker response times than coming to drop-in hours.
  • Come to class and lab. One or the other leads directly into the next assignment. We do useful and fun things. If you do not think so, then let us know! (Oh, and lab counts toward your grade.)
  • Visit or work in the 0xCAFE for drop-in hours or other times. Tackling challenging assignments next to your classmates builds camaraderie, reminds you that everyone has to work hard on these assignments, eases sharing of tips and techniques, and affords opportunities for collaborative silliness.
  • General tips from PLTC / Academic Peer Tutoring:

Feedback

The instructors are always open to considering your comments, suggestions, or concerns about the course or how we can make it more accessible to you. Please feel free to speak with us, send private messages / email, etc.

Policies on Discrimination, Harassment, and Sexual Misconduct

Wellesley College considers diversity essential to educational excellence, and we are committed to being a community in which each member thrives. The College does not allow discrimination or harassment based on race, color, sex, gender identity or expression, sexual orientation, ethnic or national origin or ancestry, physical or mental disability, pregnancy or any other protected status under applicable local, state or federal law.

If you or someone you know has experienced discrimination or harassment, support is available to you:

  • Confidential reporting: Students can report their experiences to Health Services (781.283.2810); Stone Center Counseling Service (781.283.2839); or Religious and Spiritual Life (781.283.2685). These offices are not required to report allegations of sexual misconduct to the College.
  • Non-confidential reporting:
    • You can let either of your CS 240 instructors know. As faculty members, we are obligated to report allegations of sex-based discrimination to the Nondiscrimination/Title IX Office.
    • You can report directly to the Nondiscrimination/Title IX Office (781.283.2451) to receive support, and to learn more about your options for a response by the College or about reporting to a different institution.
    • You can report to the Wellesley College Police Department (Emergency: 781.283.5555, Non-emergency: 781.283.2121) if you believe a crime has been committed, or if there is an immediate safety risk.

You mean you read all the way down to here? Wow!! Watch out for overflow.

  1. In the past, this course was named Introduction to Machine Organization and in some offerings unofficially titled Introduction to Computer Systems