CS 240 Spring 2020
Foundations of Computer Systems1

Updates for Remote Instruction in Spring 2020

The syllabus has been updated in response to the College’s move to remote instruction in Spring 2020. Acknowledging the local and global challenges surrounding our new learning circumstances, our tentative goal is to cover 2/3 of the remaining ideas and 1/2 of the remaining course work from a typical CS 240 semester, running at a somewhat slower pace. We will play this by ear, adjusting to circumstances as they arise.

Changes are shown as deletions additions. The most important changes are:

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

We explore computer systems in 3 parts. The course home page hosts the working schedule.

Computer hardware implementation (4-5 weeks): from transistors to a simple computer processor architecture

  • Transistors, digital logic gates
  • Data representation with bits
  • Combinational logic, logic for arithmetic
  • Sequential (stateful) logic, memory implementation
  • A simple computer processor and instruction set architecture

Hardware-software interface (4-5 weeks): from C to instruction set architecture

  • Memory addressing, C language, pointers
  • Assertions, debugging
  • Machine code, assembly language, program translation, x86
  • Control flow
  • Procedures, call stack
  • Data layout, security, linking and loading

Abstractions for practical systems (4-5 weeks): from memory hierarchy to operating systems and beyond

  • Memory hierarchy, caches (brief)
  • Operating system support, processes
  • Virtual memory (brief), memory management
  • Compilers, run-time systems, Java

When Should You Take CS 240?

Prerequisite: One of CS 111, CS 112, or permission of the instructor is required to enroll in CS 240. CS 230 is recommended.

Recommendations:

  • Take CS 230 before CS 240 for the smoothest path into the core CS curriculum. CS 240 is accessible to motivated students without CS 230 who have a strong grasp of the material in CS 111 or CS 112. CS 240 demands significantly more independence than CS 230.

    One way to understand the relation between CS 230 and CS 240 is by understanding that CS 230 would better be numbered CS 130. CS 230 is the final course in the introductory sequence that prepares you to take core CS courses. CS 240 is a core course. CS 240 happens not to depend on familiarity with concepts from CS 230 (although such familiarity does make CS 240 more rewarding). However, CS 240 does assume the level of independence and maturity in CS-style reasoning and in programming that is an intended outcome of CS 230. Most students will develop this readiness during CS 230; some may get there during CS 111.

  • Consider your semester courseload carefully. Do not take CS 240 as part of a 5-course load. CS 240 is a 1.25-credit lab course that requires a larger time commitment and workload than 1-credit courses.

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

Logistics

The CS 240 Spring 2020 website, Q&A forum, and email list carry schedule, materials, and timely announcements.

Class Meetings

During remote instruction, lectures are replaced as follows:

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 strongly 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

During remote instruction, labs are replaced as follows:

  • Lab assignments and videos (on lab page): Complete the lab assignment and watch the lab intro video on your own time before each lab meeting.
  • Lab meetings (required live group/pair audio/video chat, screen-sharing, not recorded): Group session with breakout into pair activities during scheduled lab sections. Arrange alternatives with Jean if the timing of your lab section does not work.

Lab attendance is required. Lab policies are enumerated on the lab web page.

Q&A Forum

All students and course staff have been enrolled in a question-and-answer (Q&A) forum (using Piazza). As we work together remotely for the rest of the semester, the Q&A forum should be your first stop for all questions on lectures, content, concepts, assignments, logistics, and tools. In addition, we highly encourage you to respond to other students’ questions when you can offer relevant information. Widespread forum use will help:

  • Find that others have already asked (and answered) your question.
  • Improve response time and offer a variety of explanations/perspectives for your questions.
  • Centralize our collective knowledge at a time when more of our communication needs to be asynchronous.
  • Practice skills for effective technical communication.
  • Reduce instructor effort responding to common questions.
  • Help the class continue to feel “together” despite being spread across locales and time zones.

To encourage forum use, instructors may respond to forum-ready email questions by asking you to post to the forum (or by not responding at all).

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, or any human/programming language.
  • Personal private communication, such as grade discussions, personal issues or concerns, etc. These should go through appointments or email with instructors.
  • Disrespectful responses.

If you care:

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

Tips for Asynchronous Lectures

Each topic will have videos attached at least a few days (usually more) ahead of the associated dates on the calendar. Your job is:

  1. Watch the videos.

    • You can view them on YouTube (nocookie version without tracking) or download/watch the MP4 files directly.
    • Take notes like you would in class.
    • You might find it helpful to download a copy of the slides to follow along or take notes.
    • It’s fine to pause and take breaks whenever you want!
    • You do not need to watch all the videos from one topic in one sitting or even one day. As the calendar shows, some topics are even intended to extend over multiple logical class-time units.
  2. When the talking Ben head says to “try this,” please pause the video and actually try it, just like you would in class when we do an exercise together.

    • In fact, if you coordinate ahead with a classmate, you might be able to get a partner to work on some of these exercises together.
    • Don’t worry, the talking Ben head will wait for you in whatever bizarre pose he struck when you hit pause.
  3. If you are confused about something or have a question:

    1. Make a note to yourself, and try the next video (or a couple) within the list for the topic. It might cover your question!
    2. If you still have the question, check in the topics folder on the Piazza Q&A forum to see if the question has been asked already. If not, ask it yourself (add it to the topics folder and #tag it as you see fit).
    3. If you think you understand how to answer another student’s question or add new insight to an existing answer, do it! Helping each other out will help the class go smoother for everyone and keep a sense of community even though we are all remote.
  4. If you still want to ask questions, review more, here what others are asking, or just have a little class contact, then join the class-time drop-in hours during our regularly scheduled classroom meetings. This time will be used for open questions in a group setting. We will start by addressing any questions from the Q&A forum that seem unresolved, relevant, and important. So make sure to post if you want to prioritize your question during class time!

Norms for Group Audio/Video Meetings

To help make our group audio/video meetings more manageable, please:

  1. Do not share links or passwords for audio/video meetings outside the students in the class.
  2. Keep your video off unless the instructor offers otherwise. You are never required to show video and by default we will ask you to keep it off.
  3. Keep your audio muted when you are not speaking.
  4. If you have a question or wish to speak, use the “raise hand” feature. We might sometimes ask people to speak up directly for attention instead.
  5. If you have a phone-style set of headphones and microphone (or another better-than-laptop-quality microphone), use it.
  6. Try to call in from a relatively quiet / non-distracting environment.
  7. Do not join a meeting from the same room as another person who has joined the meeting unless using headphones. (This avoids audio feedback problems.)

Staff and Hours

Schedule an appointment or find a drop-in slot with the sign-up links below.

The CS 240 staff hours calendar contains up-to-date hours. This table includes the regular weekly staff schedule, but not temporary changes.

Role Name Contact ? Drop-in/Appointment Sign-up (Calendar, .ics)
Instructor Ben Wood Q&A forum (policies)
benjamin.wood@wellesley.edu
Tuesday/Friday 3:30pm-5:00pm drop-ins, variable appointments.
Sign up here
or email for other appointment time.
See also: drop-in class meetings for group questions
Lab Instructor Jean Herbst Q&A forum (policies)
jherbst@wellesley.edu
Monday/Wednesday 2:00pm-4:00pm.
Sign up here
or email for other appointment time.
Tutor Estrella Garcia Q&A forum (policies) Tuesday/Wednesday 7:00pm-9:00pm.
Sign up here.
Tutor Nicole Li Q&A forum (policies) Monday/Thursday 5:00pm-7:00pm.
Sign up here.
Classmates CS 240 Spring 2020 Q&A forum (policies) by appointment

Course Materials

All in-class materials and assignments are linked from the calendar on the course website. Lab materials are shared electronically ahead of each lab meeting. You should acquire the primary CSAPP 3e textbook if at all possible. All other materials are provided.

Texts

At least one copy of each text is available in the SCI L037 CS Systems Lab for use within the CS department area. Please do not remove them from the lab areas. Return them to the shelf when you are done.

We use one primary textbook extensively. You should acquire a copy if possible:

  • CSAPP 3e: SCI L037 CS Systems Lab lab has 2 copies
    Computer Systems: A Programmer’s Perspective, 3/E. (3rd edition, significant changes since 2nd)
    Bryant and O’Hallaron, Pearson, 2016. ISBN-13: 9780134092669.
    You need the 3rd edition. See the errata.
    “Global” 3rd editions mostly work, but have some additional errors (not listed on that page).

    An online version of the CSAPP3e textbook is now available for free through May 25 on VitalSource. After creating an account with your Wellesley email address, search for “Computer Systems: A Programmer’s Perspective”, then choose to “borrow” the book.

We provide other textbooks used briefly during the first 1/3 of the course:

We recommend a good reference on the C programming language. There are many online resources of various quality. One classic book is:

  • K&R: the SCI L037 CS Systems Lab lab has 1 copy; more in library
    The C Programming Language, 2nd edition.
    Kernighan and Ritchie, Prentice Hall, 1988. ISBN-13: 978-0131103627, ISBN-10: 0131103628.

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

topic lab pencil code exam

Course work for CS 240 consists of reading and class exercises, laboratory exercises, assignments, and exams. The Honor Code applies to CS 240 course work as defined below.

Reading and class exercises: Each topic on the course schedule includes reading to try before class and review after class. Class meetings and group exercises assume cursory familiarity with basic ideas from assigned readings, but not deep understanding. Effective technical reading is an acquired skill. The first reading assignment includes tips on how to read.

Lab (15%): Weekly 3-hour lab meetings apply concepts in the course and launch code assignments. Attendance is required at all lab meetings. The lab experience is key to the course. Full lab policies are listed on the lab page. Lab work includes:

  • Short pre-lab assignments to prepare for each lab meeting.
  • Lab reports written during lab activities.

Assignments (50% 65%): The heart of CS 240 is a series of challenging assignments that apply computer systems concepts in hardware and software.

  • Written pencil assignments explore concepts in the small.
  • Applied code assignments run 1-2 weeks and involve significant effort on programming, reverse engineering, and debugging.

Exams (35% 20%): Exams, marked on the calendar, cover:

  1. exam computer hardware implementation
  2. exam the hardware-software interface plus memory hierarchy and cache (canceled)

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 grade derivation: Within each category of course work, individual units are weighted according to their labeled point value. Course grades are computed by weighting overall lab, assignment, and exam grades by the factors shown above. 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 students’ benefit), but never upward. 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.

In accordance with College grading policy for Spring 2020, mid-semester grades will be reported in Workday and all final course grades will be awarded on a mandatory basis of credit with distinction/credit/no credit. For individual elements of course work, we will continue to deliver number-based grading information.

Recall that, in a normal semester, the minimum grade to earn credit under credit/no credit grading is C. The minimum grade to pass and earn credit under normal letter grading is D. It is clear that in this semester’s extraordinary circumstances, expectations will be different. Adjusting for this shift, the distinction between credit and no credit in this semester looks closer to the distinction between pass and fail in a normal semester.

We will interpret final course grade conversions with consideration for the effects of the sudden unanticipated change in semester logistics and grading policies. Despite reasonable efforts, difficulties in the new learning circumstances that are outside your control may well impact your ability to learn or perform through the rest of the course. We will assign grades in a way that is intended to avoid punishing this effect. In practice, we hope you will interpret the remainder of the semester as a learning opportunity that may happen to raise your grade. Grade conversion for CS 240 in Spring 2020 will be performed in a way that satisfies these criteria:

  • The grade of MNCR (no credit) will be assigned for those who demonstrate unsatisfactory mastery of course topics/learning goals in both the standard and the remote parts of the course.
  • The grade of MCR (credit) will be assigned for those who demonstrate satisfactory mastery of course topics for the semester overall, considering the circumstances. (This includes students who were demonstrating satisfactory mastery during the standard part of the course, but whose circumstances may cause them to fall short of this bar in the remote part of the course.)
  • The grade of MCRD (credit with distinction) will be assigned to those who clearly reach the bar for MCR and additionally demonstrate distinguished achievements or contributions. Routes to consideration for MCRD include outstanding mastery of course topics/learning goals or outstanding contributions towards others’ learning in the course (including through supportive and effective participation in the Q&A forum).

If you are concerned about how the College grading policy for this semester affects your future “use” of grades, I would be happy to write a letter about the quality of your work in CS 240.

Anonymous Grading

CS 240 makes a best effort to grade assignments and exams anonymously, meaning that, under normal circumstances, no student’s identity is associated 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 us improve consistency and fairness, reduce any effects of 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.

Limitations: The anonymity is “best effort” in that we can reveal 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. 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. I may ask you to prioritize current work first. If you need custom extensions on more than assignments, I may ask you to check in with your class dean to make sure you are getting the support you need managing your course load this semester.
    • You are never required to discuss details of your personal circumstances with me to receive an extension, although I am happy to lend an ear. If you choose to share, please note that my reporting duties prevent me 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.

Pre-lab assignments are not subject to the following policies, due to their role as preparation for lab activities

Exams are not subject to extensions. Exam dates are fixed fixed, as noted on the course schedule. Mark this on your calendar. Please arrange accommodations with me 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. topic
  • 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. lab
    • Graded synthesis assignments require you to think critically and make connections to formulate logic and implement solutions independently, so they restrict acceptable resources significantly. pencil code
  • Graded examinations measure your independent mastery of concepts, so they require that your submitted work be your own, without using any resources. exam

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 topic

Types: reading, study, class exercises

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

Graded Assignments lab pencil code

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 lab

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 2020 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 pencil code

Types: written pencil assignments, applied code assignments

Policy:

  • All parts of the general graded assignment policy apply.
  • Collaboration:
    • You may discuss high-level ideas or strategies with other teams in small groups.
    • 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.
  • Assistance:
    • 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 2020 students to interpret error messages, subject to the above policy on viewing code.
  • Reference:
    • You may consult course material from CS 240 Spring 2020 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 graded synthesis assignments:

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

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 exam

Types: in-class exams, take-home 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 2020 instructors until given permission by a CS 240 Spring 2020 instructor.

The CS 240 Compact

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.

Academic Support

There are several types of academic support available outside of regular class and lab meetings:

  • Regular drop-in hours tutors: Open drop-in hours support questions on assignments (or concepts).
  • Regular drop-in hours or scheduled appointments with instructors support questions on assignments, concepts, course logistics, random chats, or anything else. (Email or catch us after class to schedule an appointment outside drop-in hours.)
  • Questions, studying, or group work with your classmates, subject to the honor code.
  • Individual tutoring through the PLTC.
  • Q&A forum: start here for questions about topics, tools, assignments, logistics, etc. Everyone can answer. Your question might already be answered. If we all participate, this will typically be a much faster source for support compared other options.
  • Drop-ins and appointments for real-time assistance with course staff.
  • Online questions, studying, or group work with your classmates, subject to the honor code.
  • We believe (but have not yet confirmed) that it is possible to continue or begin longer individual tutoring sessions through the PLTC.

We ask you questions. The CS 240 staff genuinely enjoys helping you learn, whether in class or 1-on-1, especially when we can help you learn independently. 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, we find it more effective (and expedient) in the long term, since you learn a broader thought process rather than just an answer to one question.

Preparation is your ticket to assistance. 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. Compiler error message? Try looking it up in the assignment, associated tool documentation, or a web search to understand the error. 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. Weekly lab activities often spend time on these exercises. To promote independence and to help make the best use of everyone’s time, we require that you complete this preparation before asking instructors or tutors for assistance with the main assignment tasks. We are happy to answer questions about the preparation itself, 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. Some parts of assignments may be marked [Independent]: these are parts that you must complete without any assistance from tutors or instructors beyond answers to clarifying questions.

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.

Accommodations

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 in the semester, or before the semester begins, since some situations can require significant time for review and accommodation design. If you need immediate accommodations, please arrange to meet 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, or by visiting their offices on the 3rd floor of Clapp Library, rooms 316 and 315.

Students whose religious observances conflict with scheduled course events (e.g., labs, exams, etc.) should contact the instructors in advance to discuss alternative arrangements. You may do this through the new Wellesley College Religious Observance Notification system if you prefer.

How to Succeed

A compilation of tips from CS 240 staff and students. Have more? Let us know.

  • Embrace the CS 240 compact and our approach to offering support.
  • Read before class. It is fine if you do not understand all of the reading, 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 meet the checkpoints. (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.)
  • Work in the lab space. 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:

Faculty Responsibilities on Disclosures of Discrimination, Harassment, and Sexual Misconduct

Pursuant to Wellesley College policy, all employees, including faculty, are considered responsible employees. That means that any disclosure of discrimination, harassment, or sexual misconduct to a faculty member will need to be shared with the College’s Director of Non-Discrimination Initiatives / Title IX and ADA / Section 504 Coordinator, Sonia Jurado (781-283-2451; sjurado@wellesley.edu). Students who do not wish to have these issues disclosed to the College should speak with confidential resources who are the only offices at the College that do not have this same reporting obligation. On campus, confidential resources include Health Services (781-283-2810 available 24/7), the Stone Center Counseling Services (781-283-2839 available 24/7) and the Office of Religious and Spiritual Life (781-283-2685). You should assume that any person employed on campus outside of these three confidential offices has an obligation to share information with Wellesley College through the Office of Non-Discrimination Initiatives.

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