CS 240 Fall 2020 T1
Foundations of Computer Systems1

What is CS 240?

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 programs are executed by computers.
  • 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, 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 surveys hardware computational primitives, while lecture examines 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 lecture 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 lecture 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 Estrella Garcia she/her/hers
Tutor Nicole Li 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 online communication and support.

Online Communication and Support

There are a few venues for communicating with your classmates, tutors, and instructors in CS 240. (You will learn on Day 1 how to make sense of the silly names.)

  1. The 0xF0rum is an online CS 240 forum where everyone is encouraged to ask and answer questions or discuss course-related items. See the 0xF0rum guidelines.

  2. The 0xCAFE is a video meeting that acts as a virtual lab space where instructors and tutors hold regularly scheduled drop-in hours for interactive questions, support, and conversation. See the 0xCAFE guidelines.

  3. Instructors are also available for private appointments, arranged via email.

Instructors will make announcements during lab and class meetings or on the 0xF0rum or course email list. Students who are registered (or anticipated to register from the waitlist) will be added to these communication groups before the first course announcements and meetings.

The 0xF0rum (Online Forum)

The 0xF0rum is an online CS 240 forum where everyone is encouraged to ask and answer questions or discuss course-related items.

(What’s with the silly name? 24010 = F016, written 0xF0 in programmer’s notation (Day 1). Thus “240 Forum” = “0xF0 Forum” = “0xF0rum” = “0xF0</tt> room” = “240 room”. 🙄)

The 0xF0rum should be your first resource for all CS 240 questions that are not resolved by documentation or course material:

  1. First, check documentation and course material for the topic of your question.
  2. If documentation or course material did not answer your question, check the forum to see if others have already asked (or even answered) your question.
  3. If not, post a new question.
  4. While you are there, check to see if there are questions you could answer.
  5. If no helpful answer resolves your question after a while, or if you are struggling to formulate your question, sign up or stop by the 0xCAFE for some more interactive support during drop-in hours (or outside drop-in hours to ask classmates your question), or make an appointment.

Using the forum helps us all help each other. To promote active forum use, instructors will generally respond to direct email questions that are appropriate for the forum by asking you to post in the forum.

Things that belong in the forum:

  • Questions about lectures / concepts.
  • Questions about assignments. (Do not include your code or nontrivial details of your approach.)
  • Questions about error messages.
  • Clarification questions.
  • Tool troubleshooting.
  • Logistics questions.
  • Respectful, informative responses and discussions.
  • Occasional silliness.
  • Many others…

Things that do NOT belong in the forum:

  • Answers or solutions to parts of questions or problem you have been asked to answer or solve in assignments.
  • Any code for assignments that is not provided starter code.
  • Detailed descriptions of algorithms/solutions, in English, C, x86, or any human/programming language.
  • Personal private communication, such as grade discussions, personal issues or concerns, etc. These should go through private appointments or email with instructors.
  • Disrespectful responses.

Controlling your forum preferences:

  • You can adjust settings for notifications of questions/responses on the forum.
  • You are encouraged to ask and answer questions with your name, but you may also ask questions anonymously on the forum if you are not comfortable “not knowing” something in front of your classmates. Rules for respectful discourse apply in all cases.

The 0xCAFE (Virtual Lab Space)

The 0xCAFE is a Zoom video meeting that acts as a virtual CS 240 lab space where all live online course events take place.

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 on Day 1. 🙄)

Guidelines for all meetings in the 0xCAFE:

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

Drop-in Hours

For drop-in hours with tutors or instructors:

  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 support page has links to the drop-in schedule and sign-up sheet. You may sign up for a time slot in advance or after you arrive.

  3. We use time slot 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 reserve the right to 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. We require that you complete this preparation before asking instructors or tutors for support with the main assignment tasks to make sure you understand the preliminaries. 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 video meeting with instructor Ben Wood:

  • Monday, Tuesday, Wednesday, and Thursday 7:00pm - 8:15pm

The course schedule lists the topic for each class meeting, with a link to supporting material.

Preparing for Class

Before each class meeting, please complete the preparation steps listed in the topic material. Preparation varies from day to day, but usually consists of some combination of watching videos, reading, or trying small exercises.

Completing the preparation is essential to get the most out of each class meeting. Class time itself will assume basic familiarity with the ideas covered in the assigned preparation. Full mastery is not expected. Questions based on the preparation are expected. We will often start with a brief summary of the prep highlights, with time to answer questions upfront or as we start to apply the ideas together, but we will not spend the class time “re-teaching” the complete preparation material from scratch.

In Class

During each class meeting, we will spend time on a mix of short segments of lecture instruction, questions, working examples together as a group, and moderately sized practice exercises in pairs, using breakout rooms.

  • Please join the meeting on a computer where you can run CS 240 software tools, as some exercises will include programming or other uses of software tools.
  • Keep your microphone muted when you are not speaking. (We will see how this goes.)
  • 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.
  • Follow the general 0xCAFE guidelines.
  • Each class meeting will include a short break roughly halfway through for time to stretch, take a break from the screen, and resume focus.

Weekly Pattern

As we settle in to the term after the first week or so, the balance of asynchronous preparation and synchronous in-class activity will shift toward the following pattern:

  • On Mondays and Thursdays, when class meetings follow multiple hours of lab earlier in the day, the day’s agenda will focus more on asynchronous material, while synchronous class activities will tend not to occupy the whole meeting time, leaving the remainder as unstructured optional time for questions, more like drop-in hours.
  • On Tuesdays and Wednesdays, we will build on the cumulative preparation from the more asynchronous days and spend more time in class on structured activities.

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 assignments apply 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 assignments, especially preparatory exercises.
    • Most assignments have several parts. 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 on a pair assignment.

There are no exams in CS 240 this term.

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

A note on assignments as of Fall 2020:

Assignments in prior versions of this course followed 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 have decided that we can no longer support this theme in Fall 2020. We are doing our best to replace it. The theme was, however, deeply integrated into assignments in past years, so there is a chance you will encountered traces that we missed. If you do, 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: 20%
  • Assignments: 75%
    • Within each assignment, points are explicitly delineated between non-[Independent] and [Independent] problems.
  • People who Change Systems presentation: 5%

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 lowering 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. Each student’s grade is determined independently without consideration of other students’ grades.

Anonymous Grading: CS 240 staff make a best effort to grade coursework 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 it is inconvenient to do so and 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 where the majority of your CS 240 learning will occur. 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.

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.

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 Fall 2020 T1 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 pencil 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 Fall 2020 T1 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 2020 T1 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.

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

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.

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

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

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. Powering through assignments on 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.
  • 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. 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 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