Table of Contents

Course Mechanics


Section 01: Monday, Wednesday 10:30am-11:45am in Barnum Hall, Room 008
Section 02: Monday, Wednesday 3:00pm-4:15pm in Robinson Wing SEC, Room 253


Labs are a required meeting once a week that will give practice on various concepts and reinforce your learning.

You must sign up for and attend a lab. That means registering, attending, and submitting the lab.
Your lab grade will be based on your attendance and your lab submissions. It is okay if you don't complete the entire lab assignment: you will receive full credit if you submit your best, good-faith effort.

Before some labs, we will release a pre-lab that you must do before the lab. This helps you be better prepared to take full advantage of your time in lab.

Lab attendance is mandatory. However, we understand that things come up, people get sick. So, for grading purposes, we credit you with full attendance if you miss up to two lab sessions. Labs cover essential material that you will need for the course. Therefore, if you do miss a lab, you should still go through and submit the lab on your own, talk to a fellow student, and ask the staff any questions you have. If there are extenuating personal circumstances that will cause you to miss one or more labs, please reach out privately.

Labs can be completed either using the lab computers, or using your personal laptop. If you feel more comfortable working on your laptop, bring it to the lab room and work on it from there.

During the term, if you would like to switch to another lab after the second week of class, you may, but you should do so using department lab registration page rather than SIS. This will ensure that when you get to that lab, there is a seat and a computer for you. You can use this if you have some unusual schedule constraint — afterwards, you can switch back to your previous lab. We discourage too much switching around: pick a lab and stick with it. Use switching privileges to accommodate unforseen and/or temporary conflicts.

Students often ask if they can attend a lab that the registration system says is full. Being registered for a lab guarantees you a space in that lab and, therefore, we cannot allow you to take a seat in a lab at the expense of a registered student. Labs only have a fixed number of seats, computers, and lab assistants, and it isn't fair to let some students diminish the lab experience for others.

That said, you may try to attend “stand by”: You may drop in on another lab, alert the lab leader that you are there stand-by. If there are too many students, the lab leader will take attendance and all non-registered students will be asked to leave.

You should submit whatever work you were able to complete at the end of lab the lab period. If you need or want to polish things up, you may (re)submit up until 1800 (6 pm) on Friday of that week.


Getting Started

There are a few steps to get set-up with the department servers if you have not taken a computer science class at Tufts. This involves an EECS account as well as learning how to access the Halligan server when not on a department machine. You also may want a text editor. It is important that all of this is done before the first lab so that lab time is not spent trying to set-up accounts or coding environments.

CS Accounts

This course requires the use of the department's remote login servers.

Students do not have to do anything to get an account to login to these servers: before the start of classes, the EECS IT staff gets a list of all students registered for a CS course, and they automatically create an account for any new students and send an email instructing you how to set your password. You must set your password.

To set your password, go to and click on “Enable or reset your existing ECE/CS UNIX account.”

If you didn't get such an email, be sure to check your Tufts email and any relevant spam folders.

If you are waitlisted or not registered as of a day or two before the start of classes, then you must contact EECS IT directly to request an account. Go to the EECS IT Help Desk in Halligan 231, or send them an email at for help.


Programming assignments will be in the C++ programming language and will be evaluated on the department's Linux server. If your program works in some other environment but does not work on the department server, it will be considered broken. Therefore, you will need to test your code on the department server.

Consult our System Setup Guide for other set-up information including instructions to access a terminal, ssh to the homework server, and to set up the VS Code text editor.


There will be shorter homework assignments (usually 7 days), and longer projects (usually two weeks). Both include programming implementations in C++.

Assignments will be submitted using provide on the department homework servers, and will be due at the published deadline on the course calendar.

Please be aware that we use automated systems to process and test your work. Thus, it is your responsibility to:

  • Follow all instructions in the assignment specification carefully!
  • Submit your work on time!

You might get lucky if you submit very close to the deadline, but you should assume that any submission after the deadline (according to the time on the Halligan servers' clock) will cost you one or more late tokens (see below), or will prevent your work from being acceepted at all.

So, make sure to submit well before the deadline. This also gives you time to fix any unforeseen problems and re-test before submitting again.


Homework is expected to be submitted on time. However, we recognize that the exigencies of life occasionally interfere with on-time submission. If you have difficulty getting homework in on time, there are two types of extensions:

  • Dean-requested extensions
  • Automatic extensions

No extensions are granted merely on the basis of a student request.

Dean-requested extensions are for cases of serious illness, family emergencies, or other unforeseeable, severe, longer-term difficulties (more than a few days). In these special circumstances, extensions are granted after we receive a request from your associate dean. The deans can protect your privacy, get you appropriate help, and coordinate with all your instructors.

Automatic extensions are designed to cover less severe, shorter-term issues, such as short-term illness, catching a cold, stomach bug, headache, migrane, etc. They can also be used for other interruptions, like the need to secure a loaner laptop. Something that sets you back a few days. To support automatic extensions, we use a token system. Here's how it works:

  • At the start of the semester, each student receives a bank of 5 (virtual) tokens.
  • If you submit your work late, token(s) will be automatically deducted from your account in the following manner:
    • If your work is less than 24 hours late, one token will be used.
    • If your work is greater than or equal to 24 hours late, and less than 48 hours late, two tokens will be used.
    • Work submitted later than or equal to 48 hours after the initial deadline will not be accepted and receives a 0.

  • If you have no tokens left, we will not accept late work from you (unless you have a dean-sanctioned extension).
  • Projects may have multiple submissions, e. g., there may be project part 1 and part 2 submissions. In such cases, each part counts as a separate assignment for token purposes. That is, if you use a token for the first part, you do not automatically get an extension on subsequent parts. Extending those would require their own tokens.

Grading, Testing, and Submission Limits

We use an autograder for student submissions. The autograder runs student code against our own tests and generates a score. This autograder score will comprise a significant fraction of your final submission grade.

After you submit your code using provide, you can see your autograder score on Gradescope (wait a few minutes after submitting, as it takes time to upload your submission and run the autograder). You will also see a description of a subset (usually 10) of the autograder tests we ran. We will not provide a description of the remaining tests; we leave it up to you to come up with other test cases yourself.

We provide you with your autograder score to prevent small, simple bugs in your program from having a big impact on your grade. For example, a single misplaced character in a program's output may cause the program to fail many autograder tests. Seeing your autograder score can help you catch such cases. However, seeing your autograder score is not a replacement for testing your own program.

To encourage testing, we will limit you to five submissions for an assignment. After the final submission, we will not take any more. Therefore, you should test your code thoroughly, and use your five submissions wisely. Even if you change what you believe is a non-functional part of the code (comments), you should run your tests again. Submit your homework when you are confident that it is correct.

Tokens (mentioned above) are for lateness. They are not a generic currency, and they cannot be used for extra submissions. The submission limit is to encourage testing, which is a separate issue from lateness.

Style Guide

Organization and style are things we care deeply about in this course. When you write code, you must write for a human audience; code that is not understandable is as useless as code that does not work. To emphasize this, a fair portion of your grade on each assignment will be based on adherence to the course style guide which lays out our policies for organization, style, and documentation. You should read it at the start of the term and return to it before submitting each assignment to ensure that you are following all of the requirements.

We know that getting deductions because you forgot a space somewhere or you used the boolean symbol && instead of writing and can be frustrating. We promise that there are reasons for these policies in the style guide. You should not come to a staff member to ask if a certain instance of breaking the style guide is acceptable or if you will get points off for it. Anything in the style guide could be a rubric item, and the rubrics might change throughout the term to emphasize stylistic issues we have seen. Just because some style guideline has not come up in past grading does not mean it will not.

Documentation is one of the biggest things you can do to get points back even when your code does not fully work. Thus, it is in your best interest to thoroughly comment and write code that is as clear as possible.


There will be one midterm exam and a final exam during the final exam period. See the course calendar for dates. The final exam is cumulative, but with greater emphasis on the last part of the course.

There are no make-up exams

Academic integrity and exams: You will be instructed what materials, if any, you may bring to an exam. As a rule, our exams are closed book, closed notes, and you may not bring any electronic devices (computers, cell phones, music players, calculators, etc.). Tuft's policy on this is very clear. Do NOT bring unauthorized materials, information, or electronic equipment to an exam. Do NOT engage in behavior that gives the appearance of cheating, such as passing a note to a friend, whispering to another student while the exam is in progress, or looking at another student's exam. Do NOT bring your cell phone, tablet, music player, calculator, or any other electronic device to the exam. If you are seen handling an electronic device, even to silence a phone, the Judicial Affairs Administrator will treat it as an academic integrity violation. A typical penalty is 1 or 2 semesters suspension from Tufts. We are obliged to report all such incidents to Judicial Affairs. Please do not make us do that!

Course Policies


Your final grade will be based on a weighted sum of your homework, projects, labs, and exam scores. Specifically, 55% of the score comes from homework (including projects, see below), 5% from labs, 20% from the midterm exam, and 20% from the final exam. I. e., your final course grade (G) is determined by the following formula:

G = 0.55 × HW + 0.05 × Lab + 0.20 × Emidterm + 0.20 × Efinal

All homework assignments are normalized to a 100-point scale. All homeworks are weighted equally, and each project counts twice as much as a weekly homework.

Each project will comprise multiple installments submitted separately; that is, there may be an initial part of the project due one week, a more involved version a week later. We do not publicize the formula for combining the scores, but most of the score (80–90%) will come from the final submission.

We do not promise to curve exams. However, at the end of the term, we may make statistical corrections. Such corrections are not usually more than 3–5 points, but they depend on the data. The corrections, if any, will never make your grade lower, only higher.

Lab scores are generally good. If you've missed no more than 1 or 2 labs, and you've submitted a good faith effort for each lab, then your score will be excellent. If you've missed more, then use the portion of labs you've attended and submitted as your approximate grade.

Questions about grades

You will receive all your evaluations online: both homework and exam grades will be reported on GradeScope

When you receive evaluations of your work, you may have questions. You may suspect we've made a mistake. In fact, though we do our best, in a course this large, there will be mistakes in grading. This is normal, and we have a procedure to deal with it — we want to get things right! If there is a mistake in your favor, there is no need to report anything: it's your lucky day. If you feel there is a mistake that counts against you or if you would like clarification of an evaluation, follow this procedure, which is designed to help us support a large number of students and resolve issues that inevitably come up. We can't do this if all grading questions go through one or two people.

  1. Do not email grading questions. Follow the rest of these steps.
  2. First, read, re-read, and think about the comments in your evaluation. We often get questions that are directly answered in the evaluation, because students ask before they've even read the entire evaluation! Please read and think first. Often, figuring out what is meant on your own helps you learn more.
  3. Regrade requests on exams are done directly via Gradescope (see the link above). Click on the Regrade request link and follow the instructions.
  4. For homework, bring your remaining questions to any member of the course staff during regular office hours. You do not need an appointment. Any member of the course staff (TAs or instructors) can explain things and fix errors. Do not email or post grading questions to the course forum. We have extensive office hour coverage, so you can get help quickly without the need for any special arrangements.
    When you ask for a correction, the grader will re-evaluate you work in whole or in part. It is possible for a grade to go down as a result. Therefore, remember step number 1 above.
  5. If a TA cannot help you in office hours, then consult your lab leader.
  6. If the situation is still not resolved, then contact the instructors by posting a staff-only question on the course forum.
    • Put [CS15] Regrade request for assignment your_login in the subject.
    • Describe the steps you've followed inlcuding the names of any staff members you talked to. Briefly describe the issue and the way in which your previous efforts were not satisfactory.
    • Clearly say what you want done (e. g., if you would like us to reconsider a particular part of an answer on an exam, rerun some tests for a homework, etc).
    We'll check with the TAs you name and get your situation resolved. We will not look at cases that have not gone through the proper process. Contacting instructors or a grad TA outside of office hours does not count as a contact for purposes of the 2-week statute of limitations (see below).

Statute of limitations
You can get explanations and clarifications from the course staff at any time.
However, to encourage students to read and think about their feedback in time for them to benefit, there is a two week statute of limitations on grading corrections. We will work to address questions that come up on an assignment or exam for 2 weeks after the evaluations are made available to you.

Collaboration and Academic Honesty

All of us should read the Tufts handbook on academic conduct located on the publication website of the student affairs office:

We can and do make routine use of automated systems for detecting plagiarism. We do catch people, and Tufts does issue sanctions (up to and including suspension or even expulsion from the university). We take it seriously, and so should you.

Some critical guidance:

Some work you do is to further your understanding. Some work will be used to evaluate your understanding (this work is graded). You may work with other students to further your understanding. Work submitted for evaluation is, unless otherwise stated, to be your work alone. You are bound by the basic principles of academic honesty and integrity.

It is never acceptable to present someone else's work as if it were your own. It violates the basic principle of academic honesty. All work you hand in is to be yours and yours alone, unless there is specific instruction to the contrary.

While you are working on a homework assignment, you may collaborate with other students by talking about the problem or your solution in a natural language (e.g., English), but you may not use any formal language, and especially not program code: high-level discussion is good, but each student must do an individual write-up in C++. In other words, you should not be looking at other people's code (assignment solutions), and you should not show your programs to anyone else. This applies to family members, roommates, anyone, and to solutions from previous terms as well. Only you and the course staff are allowed to see your code.

You are encouraged to use the online forum to discuss course-related work, but the same rules apply: discussions should be in English and should not include code that is part of a homework solution.

One way to avoid accidental plagiarism is to ensure that you are never looking at anyone else's code while you are writing your own. The only reason to look at somebody else's code is if you are helping them find a particular isolated bug. If this becomes an extensive project (e.g., you are asked to help a friend figure out why their linked list is seg-faulting and it becomes apparent that your friend does not understand the use of pointers in C++), please refer the student to a member of the course staff, or go away from the computer and talk to them about the general concept rather than collaborating on an extensive rewrite.

Discussion with others should be documented. An example might be including the following in a README file or in file comments: “Thanks to Sam Hugg for showing me how to initialize the linked list.” This includes TAs from whom you receive help. Academic honesty requires it. If you are not sure what constitutes collaboration or significant help, err on the side of caution. Giving others credit is good, and they will appreciate it, too.

You may consult public literature (books, articles, the web, etc.) for guidance. However, you must reference any sources that contribute to your solution. For example, “I used the Wikipedia page on the Poisson distribution to learn more about generating random arrival times.” You may not use generative artificial intelligence tools to do work for you.

While computers enable easy collaboration and copying both from other students and materials from the internet, it is possible to use these same computers to detect plagiarism and collaboration. The course staff reserves the right to use any available computational tools, or to write new tools, to search for infractions.

If any student does not understand these terms or any material outlined in The Academic Code of Conduct it is his/her responsibility to talk to the instructors or teaching assistants.

Assignments, exams, solutions and even notebooks from previous terms' versions of this course are not considered to be part of the public literature. You must refrain from looking at any solutions from previous versions of the course (unless that information is distributed this semester). Remember: We have every project that has ever been submitted for this course available to us.

Policy on sharing course materials: It is against Tufts policy for anyone to share any content made available in this course including course syllabi, reading materials, problems sets, videos, handouts, and exams with anyone outside of the course without the express permission of the instructor. This especially includes any posting or sharing of videos or other recordings on publicly accessible websites or forums. Any such sharing or posting could violate copyright law or law that protects the privacy of student educational records.

Classroom Health

When physically in person and indoors for this course, you are strongly recommended to wear a mask that covers your mouth and nose. It is imperative that we work together as a community to uphold these standards to help mitigate the risk of spreading the virus. For more information about expectations, please review the guidance here.

Getting Help

The course can be challenging. Remember that sometimes sleeping on something will help to clarify it (a good reason not to wait until the last minute!). If you've been stuck on something for a while and you've given it a good effort, then seek help. Here are resources in the order you should try them:

  1. Course web site You're already here!
  2. Course on-line forum Sign up! See the description of the forum in this document.
  3. Course resources The reference page has many useful resources that we have made or found specifically for a CS 15 level of understanding.
  4. On-line resources The web is a wonderful trove of information. Some of it is good! Do be aware of the course collaboration policy. Do not use things you don't understand!
  5. Staff office hours During the term, the course will hold office hours as well as review sessions. The TA office hour schedule is on our course forum. Any permanent schedule changes will be reflected in the office hours post. Temporary changes, additional office hours, or one-time cancellations as well as any workshop information will be posted in individual notes there as well. Since the schedule may change, please check the forum before you come in. If you cannot find the TAs at the appointed time check the forum to see if there were changes. If they forget to post, then a gentle reminder on the forum is appreciated.

    The instructor(s) will also hold regular office hours (see front page) and are also available by appointment. If you see us in our office, you are welcome to ask whether we are free, and if we are, then we can do impromptu office hours.

  6. Email Generally, please use office hours for course questions. You can post staff-only messages on on the the course forum, too. Emails may be monitored only loosely, and you will get quicker responses using the forum or office hours.

You are welcome to ask any member of the staff questions. However, when you go to see undergraduate TAs, we recommend you try to work with the TAs from your lab. This will allow some member(s) of the staff to get to know you personally, what you're working on, and how you learn. They can coordinate to help you better.

Please note: The course staff is not here to debug your programs. We are here to help you learn the material and gain the skills of the course. We will help you develop good programming and debugging skills, because those are crucial course skills for you to develop.

When you come to office hours with a program bug, we will ask you to describe your plan, show us diagrams of data structures, outline your algorithms, and summarize what you have done so far. You can therefore help us to help you by coming in with a plan, pictures of your data structures, etc. If you don't have these ready, the staff will ask you to do them, and you can come back when you are prepared to receive help. Staff will also ask you what you have done so far and may ask you, for example, to determine exactly where a failure occurs and the values of all relevant variables at that point in the program.

For more tips on how to succeed in CS 15, see CS 15 Tips for Success.

Course Staff

There is a large staff here to help you: your instructor, graduate TAs, and a legion of able and helpful undergraduate TAs. Please come see us!

For questions of a general or technical nature, your first resource will be the course online course forum. Generally, you'll get much faster turnaround there.

  Name Office
Professor Milod Kazerounian Joyce Cummings Center, Room 469
Graduate TA Chami Lamelas See office hour schedule
Undergrad teaching fellows Lexi Blair See office hour schedule
Kristin Ng See office hour schedule
Dameli Utembayeva See office hour schedule
Amelia Cook See office hour schedule

Undergraduate TAs Lexi Blair Kristin Ng Dameli Utembayeva
Amelia Cook Alana Sendlakowski Amanda Westlake
Annika Tanner Anush Parikh Arya Prasad
Austen Money Ava Delaney Bowie Bello
Caroline Chin Chase Wagner Chris Ahn
Eddy Abban Grace Fielding Hameedah Lawal
Irene Chang Jack Tobia Jeff Lin
Kathy Quintanilla Liam Drew Luke Ito
Luxi Liu Matt Hui Matt Ung
Micah Payton Nadim Barakat Niall Sheridan
Noah Stiegler Oliva Byun Phila Dlamini
Sean Reilly Skylar Gilfeather Tom Lyons

Course Forum

We have a course forum at Piazza for class discussion ( you should be added to this automatically). This is your forum. Use it to communicate with each other and the course staff. Just remember the cautions below. Send questions related to course material there rather than to the course staff via email: the next person who checks the site and knows the answer can respond. (The time between question and response is often just a few minutes, and the average is well under an hour!)

Check the forum at least once a day: Important information and announcements will be sent there, including assignment clarifications and schedule changes.


In addition to lecture and lab materials, there are numerous other resources we suggest you use. These have been selected as roughly correct for the level of experience of CS 15 students. Other resources online can often over-complicate topics or present material in a way that is contrary to how this course is taught, so we highly suggest you use these resources before going to the general internet.


Although not necessary, there are many textbooks that can help you understand the course. I often recommend Data Structures and Algorithm Analysis by Clifford A. Shaffer (mainly because it is free and online). I will assign readings there cooresponding to the topics we will cover in class. If you prefer a printed copy, take a look at Data Structures and Algorithm Analysis by Mark Allen Weiss, which is pretty thorough. You can read equivalent material from any reasonable text (use the table of contents and index to find the material for the topic we're discussing). Note that digital versions of both books are also available.

Course Materials

There are also a number of materials you can find on this website. It is always a good idea to see if the calendar has a resource on the given topic. You can also find a number of materials on the reference page that may help to clarify a concept.

Course Support


In CS 15, we strive to create a learning environment that is welcoming to students of all backgrounds, regardless of race, class, gender identity, sexuality, religion, and ability. In a nutshell: computer science is for everyone. If ever you are made to feel uncomfortable or unwelcome in the class, please do not hesitate to speak to the instructors or anyone in our teaching staff, and we will work to make things better. You may also speak to your academic advisor, the department TA ombudsperson, our department chair, or your dean.

StAAR Center: Subject Tutoring and Accessibility

The Student Accessibility and Academic Resource (StAAR) Center provides general academic support, in the form of study assistance, note taking, writing assistance, as well as specific subject tutoring, including for this class. They can help reinforce subject material, help you develop effective study strategies, and help you take responsibility for your own learning. Tutoring is available via drop-in hours as well as by appointment. There is more information available via the StAAR Center website. Their Academic Coaching web page has information and links for workshops and tutors among other things.

We want to ensure equal access and support for all qualified students by providing reasonable accommodations to ensure each student can fully participate in the course. The Tufts StAAR Center accessibility services team helps us accommodate students with special needs. Students with special needs should contact the StAAR Center via the above link to determine and authorize appropriate accommodations.

Accoommodations cannot be applied retroactively (e. g., you cannot get extensions for exams or assignments already done), so it is important to do this right away.

If you qualify for accommodations, it is important to give that imformation to me as soon as possible — within the first 2 weeks of the term or within a week of adding the course. It can take several days to work out accommodations, so I usually need the letter a week in advance. If you receive accommodations during the term, then please send the letter right away. This helps me plan so I can meet accommodations and support all the students in the course.

Mental Health Support

As a student, there may be times when personal stressors or emotional difficulties interfere with your academic performance or well-being. The Counseling and Mental Health Service (CMHS) provides confidential consultation, brief counseling, and urgent care at no cost for all Tufts undergraduates as well as for graduate students who have paid the student health fee. To make an appointment, call 617-627-3360. Please visit the CMHS website: to learn more about their services and resources.

TA Liaison/ Ombudsperson

The TA ombudsperson (AKA TA liaison) is here to help mediate conflicts that arise involving TAs. Specifically, the TA ombudsperson/liaison will help with the following situations:

  • A student having a problem with a TA
  • A TA having a problem with a student
  • A TA having a problem with another TA
  • A TA having a problem with an instructor

If you are involved in or aware of such an issue, please contact our TA ombudspeople, Mark Sheldon and Karen Edwards, at