CS 240 Fall 2021
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.


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.


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.

Computational Building Blocks:

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

Hardware-Software Interface:

  • 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:

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


  • 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 Pronouns
Student You + Classmates (ask)
Tutor Martha she/her/hers
Tutor Tiffany she/her/hers
Tutor Victoria she/her/hers
Lab Instructor Jean Herbst
Instructor Ben Wood

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.

Course Meetings

Class Meetings

If classroom capacity allows, you may attend either lecture section, regardless of which is your officially registered section.

  • Lecture section 1: Tuesday and Friday 12:45pm - 2:00pm, SCI L039, Ben Wood
  • Lecture section 2: Tuesday and Friday 2:10pm - 3:25pm, SCI L039, Ben Wood

The course calendar lists topics for each class meeting, linked to supporting materials and assigned 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 on Zulip. Expect the preparation to take more than a few minutes. Synchronous class activities will build on ideas in preparation material.

Please silence and stow phones out of sight during class meetings. Take handwritten notes in class; it tends to help distill and remember key ideas more effectively than referring back to prepared material or typed notes. If you feel that a laptop or tablet works better for your notetaking, you may use it for that purpose. We are happy to help arrange alternative accommodations in class if needed.

Lab Meetings

You must attend the lab section for which you are registered.

  • Lab section 1: Wednesday 9:30am - 11:20am, SCI L037 CS Systems Lab, Jean Herbst
  • Lab section 2: Wednesday 1:30pm - 3:20pm, SCI L037 CS Systems Lab, Jean Herbst
  • Lab section 3: Thursday 9:55am - 11:45am, SCI L037 CS Systems Lab, Jean Herbst

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

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 assignment work, labs, course policies, software tools, and course topics.

  2. Course communcation outside class happens on the CS 240 Zulip. Ask and answer questions, read announcements, discuss course topics, and send private messages on Zulip. Plan to follow announcements regularly. See the Zulip guidelines.

  3. Tutors and instructors are available for drop-in hours in the SCI L037 CS Systems Lab.

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


Course communication outside class happens on the CS 240 Zulip in these streams:

  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 Zulip 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 assignment work 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.


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

Drop-in Hours

Regularly scheduled drop-in hours with tutors or instructors are times for you to visit for any kind of questions or academic support (large or small) on course work, concepts, and beyond. You can reserve some times in advance or just show up during scheduled hours. See the Help page.

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 assignment work. 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 Materials

All in-class material and assignment work is linked from the calendar on the course website. Lab material is shared ahead of each lab meeting.


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.

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.


This flavor of CS 240 was developed by Ben Wood and Jean Herbst at Wellesley starting in Spring 2015, with updates by Ashley DeFlumere and Andy Davis. In addition to original CS 240 material, parts of the 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. 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 and written assignment work applies computer systems concepts in hardware and software, forming the heart of CS 240.
    • Each code assignment 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 assignment work, 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.

Examinations: Two asynchronous exams are listed on the course calendar. The exams are available over several days to remove time pressure and provide flexibility.

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

A note on assignment work 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.


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: 15%
  • Assignment work: 45%
    • Assignments are weighted by listed point values.
  • Exams: 40%

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

Assignment work is due at the deadline specified in the assignment manifest. A deadline consisting of a date with no explicit time of day indicates a deadline at 11:59pm that day. 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. Falling behind on assignment work 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 continue later than 48 hours beyond the official last day of classes unless your class dean supports it.
  2. Feedback and grading for work submitted under an extension will be completed eventually. 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, as noted on the course calendar. Mark them on your calendar. Please arrange accommodations with the instructor at least 3 days ahead of exams. If an emergency prevents you from completing the exam as scheduled, 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 and Collaboration/Resource Policies

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


  • 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


  • All parts of the general graded assignment policy apply.
  • You may collaborate with other CS 240 Fall 2021 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 assignments, applied code assignments


  • 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 Fall 2021 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 Fall 2021 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


  • 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 Fall 2021 instructors until given permission by a CS 240 Fall 2021 instructor.


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 current-stage pandemic circumstances may continue to be, overall, more stressful than the baseline in other years and that the impacts may vary substantially among students.

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.

And in CS 240 terms: I 240.   i & 0xF0.   I masked with 240.

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 on Zulip. 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 lab 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:


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