About
CS 240 Spring 2025
Foundations of Computer Systems1
- What is CS 240, Foundations of Computer Systems?
- Course Staff
- Course Meetings
- Communication and Support
- Course Materials
- Course Work
- Accommodations
- Public Health and CS 240
- How to Succeed in CS 240
- Classroom environment
- Policies on Discrimination, Harassment, and Sexual Misconduct
What is CS 240, Foundations of Computer Systems?
CS 240 examines how computers run programs, introducing key abstractions and implementations in software and hardware from programming languages down to transistors.
Goals
Course goals include:
- To understand how computers execute programs.
- To understand the roles of key software and hardware abstractions, their implementations, and their relation through translation and representation, including: digital logic, microarchitecture, instruction set architecture, the memory hierarchy, basics of programming language implementations, and operating system abstractions.
- To understand when and how computer system implementation impacts correctness or performance of arbitrary high-level programs.
- To become proficient in structured reasoning about the execution of programs on well-defined models, including the use of assertions and debugging tools to inspect program invariants and execution state.
- To develop foundations for further study of programming language implementation, security, computer architecture, operating systems, networks, concurrent and distributed systems, or other systems/implementation topics in computer science.
- To develop skills for independent learning, critical thinking, and problem-solving as a self-reliant computer scientist.
Topics
The course home page hosts the working schedule. +Optional extensions are prefixed in the schedule with a plus sign. We may visit these if there is time. They are always available for your own exploration in further depth.
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.
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
Student | You + Classmates | (ask) |
---|---|---|
Tutor | Vaishu Chintam | she/her |
Tutor | Johanna Lee | she/her |
Tutor | Sandy Liu | she/her |
Lab Instructor |
Peter Mawhorter pmawhort@wellesley.edu SCI L130 |
he/him/his |
Instructor |
Lyn Turbak fturbak@wellesley.edu SCI W120 / in the clouds |
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 help hours, or make a private appointment with the instructors or tutors in the CS 240 venues for communication and support.
Course Meetings
Class Meetings
- Lecture section 1: Tuesdays and Fridays 11:20pm - 12:35pm, SCI N321 (up the stairs from Sage entrance and to the left), Lyn Turbak
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. Expect the preparation to take more than a few minutes. Synchronous class activities will build on ideas in preparation material.
Lab Meetings
You must attend the lab section for which you are registered.
- Lab section 1: Wednesday 8:30am - 11:30am, SCI L037 CS Systems Lab, Peter Mawhorter
- Lab section 2: Wednesday 2:30pm - 5:30pm, SCI L037 CS Systems Lab, Peter Mawhorter
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:
-
Start with the course website for the course schedule and documentation on assignment work, labs, course policies, software tools, and course topics.
-
Course communication 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.
-
Tutors and instructors are available for help hours in the SCI L037 CS Systems Lab.
-
Instructors are also available for private appointments, arranged via email, Zulip, or Calendly (for scheduled Zoom meetings with Lyn).
Zulip
Course communication outside class happens on the CS 240 Zulip in these streams:
The Zulip is organized into streams:
#announcements
: course announcements from instructors or tutors (Follow this stream regularly!)#questions
: questions and responses/discussion about logistics, concepts, course work (do not post your code or complete/partial solutions), error messages, or software tools#partner search
: find partners for pair work#community/random
: 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:
- Communicate respectfully and patiently with the goal of supporting others and yourself.
- Asking a question is just as valuable a contribution as answering one.
- Before posting:
- Make an effort to check appropriate documentation on assignment work, labs, course policies, software tools, or course topics.
- Check to see if others have already asked or answered your question.
- 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.
- Use private messages, email, or appointments with instructors to communication about private topics such as grades, extensions, or personal issues.
Using Zulip
Zulip messages belong to a topic within a stream. It’s like a more organized Slack also capable of long-form messages or a discussion forum also capable of quick chat. The 3-level organization allows flexible focus by selecting:
- A topic: view only the messages within that topic chronologically.
- A stream: view all messages from all topics in that stream chronologically.
- All Messages: view everything chronologically.
Hygiene:
- Reply (shortcut:
r
) to keep your message in the same topic; use a new topic for an unrelated message. - Move a message to a different topic or stream after the fact if it is out of place.
- Formatting posts with Markdown or
LaTeX
can help readability, such as to separate
code(snippets)
from prose. - If showing a code example (not solution code), an error message, or other text, please post it as text (not a screenshot). Text is searchable, zoomable, reflowable, and more. Screenshots are much less useful than text. Preserve indentation, etc., by using simple code formatting in your message. Here’s an example.
Help Hours
Regularly scheduled help 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. Some help hours will be in person, while others will be held remotely via Zoom. (All in-person hours will be held in the the SCI L037 CS Systems Lab.) Most help hours are drop-ins, where you can just show up during scheduled hours, but some instructors/tutors might have a way to schedule visits during their help hours. For details, 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.
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.
We use one primary textbook extensively:
- CSAPP 3e (Wellesley online access):
Computer Systems: A Programmer’s Perspective, 3/E. (3rd edition, significant changes since 2nd)
Bryant and O’Hallaron, Pearson, 2016. ISBN-13: 9780134092669.- We need the 3rd edition. See the errata.
- If you prefer physical books, paperback copies are available for much less than the hardcover version. “Global” 3rd editions mostly work, but have some additional errors (not listed on the errata page).
-
6 months of access to an electronic version is available for $65 (pricey, we know!)
- Please contact the instructors if none of the available options work for you.
During the first few weeks of the course, we use this text for Digital Logic topics:
- DDCA (Wellesley online access):
Digital Design and Computer Architecture.
Harris and Harris, Morgan Kaufmann, 2007.
We recommend a good reference on the C programming language. Here are a couple solid options:
- Essential C (PDF)
Nick Parlante, 2003. Stanford University. - K&R:
The C Programming Language, 2nd edition.
Kernighan and Ritchie, Prentice Hall, 1988. ISBN-13: 978-0131103627, ISBN-10: 0131103628.
Additional materials will be posted directly on the course website.
Acknowledgments
This flavor of CS 240 was developed by Ben Wood and Jean Herbst at Wellesley starting in Spring 2015, with updates by Ashley DeFlumere, Andy Davis, Lyn Turbak, Peter Mawhorter, and Alexa VanHattum. 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.
-
Class preparation and activities, described with the logistics of class meetings, include watching videos, reading, trying small exercises, and participating in pair and group exercises during classes.
-
Lab preparation and exercises, described on the lab webpage, include preparatory lab assignments to complete ahead of each lab meeting and lab reports written during lab activities. x 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:
-
CS240 does not have a final examination this semester.
-
There will be two in-person pencil-and-paper midterm examinations this semester (see course calendar for more details):
- Exam 1 is a 2.5 hour exam that you will schedule during one of the following periods:
- Tue Mar 4, 4–9pm
- Wed Mar 5, 4–9pm
- Thu Mar 6, 4–9pm
- Exam 2 is a 3 hour exam held during the final lab session on Wed Apr 30.
Notes
-
If you have scheduling issues with Exam 1 or exam accomodations, please contact Lyn ASAP.
-
The rationales for in-person exams is that take-home exams in the age of generative AI are not accurate assessments of student understanding
-
The rationales for long-duration exams is that CS240 material is challenging to adequately test in a 75-minute lecture slot time.
-
The reasons for giving Exam 2 in the final lab session the week before final exams rather than a final exam are:
-
It is really a midterm exam on part of the course material and not a final exam covering all course material.
-
It is in a time that all students can attend in their schedules.
-
It does not conflict with the scheduling of other final exams.
-
Taking the exam at this time allows for potential revisions on exam problems.
-
- Exam 1 is a 2.5 hour exam that you will schedule during one of the following periods:
The Honor Code applies to all CS 240 course work as desecribed below.
Grades
Percentage | Letter |
≥ 93.5 | = 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:
- Assignment work: 45%
- Assignments are weighted by listed point values.
- Exams: 40%
- Lab preparation and activities: 10%
- In-class participation and exercises: 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 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.
Participation: Your participation grade will be based on in-class exercises and completing surveys and forms. You can miss 2 lectures without it impacting your participation grade (though I would still appreciate a Zulip DM or email to let me know). After those 2, additional absences should be discussed with me for them to be considered excused. You can earn a small amount of extra participation credit by answering your classmates’ questions on Zulip.
Exam revisions: On some exam problems, your feedback might indicate that you may submit a revised solution to certain problems to earn additional partial credit. The additional credit may be capped so that you can earn no more than 85% of the problem score.
Assignments revisions:
-
You may resubmit any code assignment with under a passing score (60%) to receive partial credit back up to 60% (you must DM/email Lyn to request a regrade). For any written assignments below 60%, reach out to Lyn to discuss potential revisions.
-
On some assignment problems, your feedback might indicate that you may submit a revised solution to certain problems to earn additional partial credit. The additional credit may be capped so that you can earn no more than 85% of the problem score.
Anonymous Grading: CS 240 staff make a best effort to grade course work anonymously. Anonymous grading helps improve consistency and fairness. 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. Anonymous grading in CS 240 is “best effort” in that the graders can look up the student identity associated with submissions, but we avoid it under normal circumstances.
Credit/Non
You may take this course Credit/Non, which means “if a student receives a grade of C or higher in a course that she has elected Credit/Non-Credit, a notation of CR (credit) will appear on her transcript; if she receives a grade lower than a C, then a notation of NCR (no credit) will appear on the transcript.)”
During this semester, the deadline to declare Credit/Non is Friday Feb 14 @4pm ET..
Some things to think about with regard to credit/non:
-
If there’s no question whether you’re going to pass the course, then taking the course credit/non is an option that takes away the pressure of focusing on a particular grade.
-
If there is a question of whether you will pass the course (with a grade of D = course score of 60), credit/non is a bad idea. Why? In order to get credit in a credit/non course, you must get a C grade (73.33 course score or higher), which is significantly higher than the D grade (60 course score or higher) required to pass the course.
In the past, many students who have taken a CS course credit/non do not get a C grade and either need to retake the course or need to take an incomplete in the course and earn more points before the beginning of the next semester just to get credit (CR). For seniors, this can delay the awarding of a diploma. Because many credit/non students who do not get credit by the end of the course would be able to get a D, they tend to regret their decision to take the course credit/non. A motto to remember in this regard is “D is for Diploma”.
I strongly encourage any student considering taking the course credit/non to meet with me during the first few weeks of the semester to discuss this decision.
Incompletes
Due to extenuating circumstances, you may run out of time/energy to complete this course in the way you would like. In this case, an option is to take an incomplete. In this option, you have until the beginning of classes in the following semester to submit your incomplete work.
In order to take an incomplete, you must have the support of both me (Lyn) and your class dean class dean, so you must have a conversation with both of us about this option.
There is no shame in taking an incomplete. Taking an incomplete allows you to focus on completing your other courses, and gives you will have extra time between semesters to devote to the course materials. But it does mean that you are putting off work now that you will have to do later, and the reality of doing work between semesters (time normally devoted to relaxation and rejuvenation) can be daunting in practice.
An incomplete in a course required for the CS Major is potentially problematic in the case of graduating students who are in their final semester, since it usually means the delay of their diploma.
Another aspect of taking an unexecused incomplete (the default) is that an “I” mark will appear next to your final grade indicating that it was the result of finishing an incomplete course. If you have a medical (or other major) reason for taking an incomplete, you can have a discussion with your Class Dean and request an excused incomplete, in which case the “I” mark will not appear.
Lateness Policy (including the notion of “Dueish”)
I (Lyn) have adopted a version of Ada Learner’s lateness policy from CS342, which I like a lot. Some of the wording in this section is adapted from Ada’s.
Assignments have two purposes: to help you learn, and to help both of us assess your learning (so that you can learn better, and I can help you learn better). Because assignments play such an important role in your learning, it is very important to me that you do the assignments. As a consequence, I do not deduct points for late assignments, since I find that doing so (1) discourages completing the assignment and gaining its learning-related benefits and (2) increases temptations for using generative AI or inappropriate collaboration for assignments that can lead to Honor Code charges.
For this reason, I use the term “dueish” with regard to assignment submission dates to emphasize that “it is recommended that you submit the assignment by this date, but there is built-in flexibility to submit it later”.
There are important ground rules for late submission:
-
Self-service 48-hour extension. Unless otherwise specified, for a posted deadline, you may take a no-questions-asked extension until 2 days after the posted deadline.
-
The mechanism for requesting the 48 hour extension is the self-serve 48-hour late pass. Submit 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 weekend or break it is automatically moved to the final day of that weekend or break.
-
All times are measures with respect to the initial deadline, which is assumed to be 11:59pm on a given day unless otherwise stated.
-
-
In any case, you should still try to complete as much of a project or milestone as you can by the posted dueish date. In particular, it is a terrible idea to just start working on an assignment on the dueish data or later.
-
Because much work in this class involves working with a partner, you need to make sure that you and your partner agree on any work beyond the dueish date. If you have trouble agreeing, please meet with Lyn as a group to resolve the situation.
-
-
Custom extension: If you need to extend an assignment deadline more than 48 hours, or if you did not submit a self-serve late pass form in time, you (and your partner, if applicable) MUST email or Zulip message me (Lyn) with an initial timeline for completing all parts of the assignment and plan for when and how you will report your on progress.
-
We will adjust the plan together to make sure it is a reasonable and effective one that supports both your learning and your health and well-being. 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 to manage your course load.
-
You are never required to discuss details of your personal circumstances with me to receive an extension. However, I am always available to listen should you feel that sharing anything will help me support you. If you choose to share, please note that reporting duties prevent instructors from holding strict confidentiality in all cases.
-
The purpose of this dueish policy is to help you balance the requirements of this course with your mental, physical, and emotional health. I recognize that your personal life is important, and my goal with this policy is to help you find the flexibility you need.
There are some important notes related to this policy:
-
Deadlines synchronize with lecture and lab 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 as much as possible. {site.course}} moves quickly. Falling behind on assignments work makes it more difficult to understand material in lecture and lab. So it is best to limit the number of days you are behind to a small number.
-
Even if you are behind on one or more assignments, it is essential that you continue to prepare for each lecture and attend class and try your best to keep up with the new material being presented in class.
-
Because few other classes offer such a flexible policy, there is a tendency for students to fall behind more in CS240 than other classes. Especially because CS240 moves at such a fast paces, it is important not to fall too far behind.
-
A major downside of this policy is that, if you are not careful, it can lead to an accumulation of late work that is impossible to complete by the end of the semester. This is why it is very important to frequently communicate with me about any delays longer than 2 days.
-
No extension may continue after the last day of finals unless your class dean supports it.
-
Feedback and grading for work submitted under an extension will be completed eventually, but has a lower priority for me than for work submitted on time. The likelihood and magnitude of delay grow with the length of the extension.
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 except the use of AI-powered tools, which is expressly forbidden).
- 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 (except your partner, if you are working with one).
- AI-powered tools are prohibited here, as in all contexts of this course.
- Graded examinations measure your independent mastery of concepts, so they require that your submitted work be your own, without using any resources (except for hardcopy notes).
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, except for the prohibition on AI-powered tools, which applies in all contexts.
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. As in all contexts in this course, using AI-powered tools, is expressly forbidden.
Team Policy
Each graded assignment follows one of two team policies. Graded synthesis assignments indicate their policy in the assignment manifest.
- The individual policy requires individual students to prepare and submit their own solutions.
- The pair policy allows two students to prepare and submit a
single joint solution.
- Individuals may opt to complete an individual submission on pair assignments unless pairs are explicitly required.
- Partners choosing a pair submission must contribute in similar measure and complete at least 80% of work on each problem together in real-time pair-programming style. Collaboration within a pair is otherwise unrestricted.
- If it becomes necessary to split a pair, the partners must coordinate with the instructor to document what work was completed together.
Graded Practice Assignments
Types: individual pre-lab assignments, pair lab activity reports
Policy:
- All parts of the general graded assignment policy apply.
- You may collaborate with other CS 240 Spring 2025 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. As in all contexts in this course, using AI-powered tools, is expressly forbidden.
Graded Synthesis Assignments
Types: written 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.
- On all parts:
- Assistance:
- On parts not marked [Independent]:
- You may accept help from course staff to locate errors, interpret error messages, and correct errors of syntax.
- You may accept help from other CS 240 Spring 2025 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.
- On parts not marked [Independent]:
- Reference, on all parts:
- You may consult course material from CS 240 Spring 2025 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 and code from other CS 240 course material.
- You may reuse and adapt code from other CS 240 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, including code found online or code from generative AI tools (e.g., ChatGPT, CoPilot, Bard, etc.).
- Note: violations of this policy have led to substantially lower grades or loss of credit in recent semesters.
- As in all contexts in this course, using AI-powered tools, is expressly forbidden.
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. It is an honor code violation to make your code (or written assignment solutions) accessible or viewable by current or future CS 240 students.
Graded Examinations
Types: Proctered fixed-time exams. (Exam 1 will be a 2.5-hour proctored exam in the range 4-10pm on TWF Mar 4/5/6; Exam 2 will be in the last lab on Wed Apr 30).
Policy:
- The exams are open-book in the sense that you can bring any hardcopy notes with you to the exam.
- You must not use any electronic devices during an exam, including phones or other mobile devices.
- Your submitted solutions must be your own work.
- You must not communicate about the exam contents with anyone other than the CS 240 Spring 2025 instructors until given permission by a CS 240 Spring 2025 instructor. Some students may have to take a version of the exam early or late, so please do not talk about the exam unless given the go-ahead by the instructor.
AI Policy
This section is adapted from CS111’s AI-Powered Tools policy that is largely authored by Eni Mustafaraj and Peter Mawhorter.
Generative AI is having a huge effect on the world in general and education in particular. This includes Large Language Model (LLM) tools like like ChatGPT, Gemini, Claude, Copilot, etc. that can help you understand, improve, and write computer programs as well as analyze and solve a wide variety of problems in computer science courses. Although there are claims of benefits of generative AI for learning, both instructors of this course (Lyn and Peter) strongly feel that the downsides of generative AI greatly outweigh any benefits. For this reason:
the CS240 course policy is that you must not use AI-powered tools in any way in the context of this course.
In particular:
-
You must not use AI to solve any problem in the course.
-
You must not use AI to review or improve a solution that you have written.
-
You must not use AI as a tutor to explain any examples of material related to the course.
Intentionally breaking this policy is considered a violation of Wellesley’s Honor Code.
Rationale for our Policy Prohibiting AI-Powered Tools
Why do we have this draconian policy prohibiting AI-powered tools?
Some of the most powerful AI-powered tools, such as ChatGPT, have been developed only recently (and change constantly). We know from extensive news reporting that they are prone to hallucinations. Initial research in adopting such tools for programming has indicated that novice learners might be more harmed rather than benefit from using them, since these learners don’t know yet enough about programming to detect such AI hallucinations.
Meanwhile, the initial research evidence is mixed about how useful these tools are to experienced programmers. Advanced CS courses might have different policies about the use of such tools in the classroom.
Any new technology is initially very attractive. The immediate benefit might be the first thing we notice about them. However, some of the harms are often invisible for a while. As an example, social media companies (Facebook, Twitter, etc.) were initially heralded for the benefits of their products (connecting people to one another, providing real-time news, etc.). But over the many years that we have been using them, we have identified the potential harms they are inflicting on the society at large, such as spreading conspiracy theories and disinformation, inciting hate and toxicity, and affecting the mental health of children and youth. On the latter point, the US Surgeon General issued a strong advisory
Before trying any new technology that we don’t understand yet, we should learn as much as possible about its benefits and risks and only use it very cautiously, until the evidence shows that the benefits outweigh the risks.
In our view, the most insidious aspect of generative AI in the context of education is that it replaces the somewhat arduous but ultimately rewarding path to learning that involves friction and struggle by an easy way to get answers in which nothing is truly learned. We agree with this blog post that argues that in their use of AI, “people are giving up the very mental tasks that make them human”.
We want CS230 students to gain mastery over the content and skills taught in this course so that they can solve problems and analyze systems without the assistance of AI-powered tools. We encourage our students to proactively use more traditional techniques (such as searching for solution strategies and helpful technical details on the web), rather than offloading these task to AI assistants. Ultimately, we want our students to develop robust critical thinking skills that will help them not only with the material in this course, but also with problems they will encounter throughout their lives.
Some people argue that AI can be helpful in an educational context by serving as a tutor when no human tutor is available. However, there is a slippery slope from using AI as a tutor to having it review and improve your problem solutions to having it just solve your problems for you. When students experience the stress of deadlines, there is a strong temptation to have an easy way to quickly get an answer.
-
The “dueish” model for deadlines used in this course is designed in part to reduce stress, so that students generally don’t have to feel that they will be penalized for not submitted work by a deadline. Our hope is that this will greatly reduce the temptation to use AI or collaborate inappropriately.
-
We have been explicitly told by some students in courses where some uses of AI are allowed that they fell down this slippery slope and in the end wished that AI had simply been forbidden.
Finally, there are serious ethical issues with using AI tools that should not be ignored (some of which are also mentioned in the previously cited blog post.
List of AI-Powered Tools
-
Generative AI tools - these are tools such as ChatGPT, Copilot, or DALL-E2. They are capable of generating text or images on demand, including code. Many of these tools have web interfaces in which a user can enter a prompt and get a response about any topic. When asked for help with a programming problem, they often generate a code solution. There is a long list of these tools. Another name for the text-based ones is LLMs (large language models).
-
AI-assistants embedded in IDEs - an IDE is an integrated development environment that is used for programming, The VS Code application you are likely to use for programming in this course is an example of an IDE. CS111’s Jupyter notebooks and CS230’s BlueJ are also examples of IDEs. Several IDEs already have embedded AI-assistants. We require that whatever IDEs you use in this course that you do not use extensions that involve AI assistance.
-
Search Engines - Search engines like Google and Bing have been using AI for decades. Google researchers invented the technology known as transformers, which now powers most LLMs and chatbots, (The acronym GPT is short for Generative Pre-Trained Transformer.) Furthermore, many search engines now have chatbots embedded in their operation, and asking questions may frequently result in AI-based answers. We recognize that using search engines to look up answers to questions is an important part of your learning, but when these searches end up turning up code solutions or fragments, you are not allowed to use these directly in your solutions.
- Note that many search engine results are also problematic not because of AI but because they assume people searching for information already know a lot of the things that you’re still just learning. Nevertheless, we want you to experience some struggle and frustration in the search process as a part of strengthening your information-finding skills.
Ethical Issues with AI-Powered Tools
Note that all large language model systems, including Claude, ChatGPT, and Github Copilot, present several serious ethical issues with their use:
- The training data for these systems is usually harvested without the consent of those who created it, and is often used despite their explicit non-consent. The companies creating these systems do so in a way that does not respect the explicit sharing parameters specified by the authors of the data going into them, even though it is possible (although more costly) to train system in a way that would respect the rights and wishes of creators.
-
Training data is harvested without regard to licences. The output of a chatbot is a mix of words connected via rules learned from many examples, and sometimes, words connected in a way which exactly duplicates a single specific example. This means that these chatbots sometimes suggest code or prose that should come with a specific license, without letting the user know that it is doing so or that there is a license. For example, open-source code under a license which permits sharing but requires attribution may be suggested verbatim by a chatbot. Someone using the suggested code would be liable for license infringement if they did not include attribution, which would be difficult since they’d have no warning from the chatbot that the code was under license. This is the biggest legal reason not to use AI chatbots, especially when writing code.
- Even for systems whose training data is acquired only via explicit consent (these are extremely rare and we don’t know of one that’s publicly available), the training data needs to be filtered. The internet is full of absolutely horrific images, stories, and other material, and to avoid these becoming part of the chatbot’s output, humans must look at this material and flag it. Similar to content moderation for a big platform like YouTube, the job of reading through and flagging these horrific things is mentally draining and potentially traumatic. To put it plainly: the relative “safety” with which we can use AI chatbots is bought by the traumatization of workers who filter out the horrific stuff. Rather than compensate these workers well for their time and give them plenty of time off and mental health support, companies outsource this work to desperate people and then force them to work long hours with little support. In CS111, this is the reason that we use Claude instead of ChatGPT for an AI assignment: it does not use human workers to flag problematic content (although its AI-based methodology for doing so is probably much more limited than the company claims).
-
Finally, despite the efforts made to prevent chatbots from echoing the most hateful and traumatizing sentiments from their datasets, these filtering tools are not perfect, and there is still the chance that these things come out. Additionally, the chatbots reflect and even amplify more accepted forms of bias in our society, and so their use perpetuates these biases. Biases such as ablism, sanism, fatmisia, and more sanitized forms of sexism and racism (such as assuming someone’s gender or race based on their profession) all go unfiltered in the data cleaning process and manifest in the outputs of the AI.
- The servers used to train and run these AI tools consume huge amounts of electricity, along with water for cooling. While they aren’t exactly a leading cause of CO2 emissions, they are not making the problem better, especially when put to frivolous use.
CS Department Guidelines
Note that CS240 follows the CS Department Guidelines for issues including submitting your own work, engaging meaningfully, and adhering to the course schedule.
Accommodations
Accessibility and Disability
Every student has a right to full access in this course. If you need any accommodations for CS 240, please contact Wellesley’s Disability Services. You should request accommodations as early as possible during the course, since some situations can require significant time for 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.
Public Health and CS 240
Masks are strongly encouraged in CS 240 labs. The current Wellesley College policies or logistics around public health 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.
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! The best answer is a thoughtful answer. We have more opportunity to learn if asking questions you cannot necessarily answer easily. 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 Zulip (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 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:
Classroom environment
It is extremely important that this course is a respectful and supportive environment. Computer science is a wonderful and exciting field, and we hope every student in this class feels that they belong in this discipline. To this end, we expect everyone in this course—students and the course staff—to do their part to make all students feel welcome. For CS 240, this includes avoiding making assumptions about your classmates’ backgrounds, being professional and kind when working together, and letting the instructors know of any issues if they arise.
Mental health
Your mental health is more important than any course. Please let an instructor know if you would like to talk. The college also has many resources available to you. If you feel you are falling behind in the course, please contact an instructor as soon as possible to work on possible solutions.
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 directly or use the anonymous feedback form if you would prefer.
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.
-
In the past, this course was named Introduction to Machine Organization and in some offerings unofficially titled Introduction to Computer Systems. ↩