Instructors: Marty Allen, James Skripchuk
Email: martin.allen@tufts.edu, james.skripchuk@tufts.edu
Office: JCC 461 (Marty), JCC 323 (James)
Instructor Office Hours: Mondays 1:30-3:00PM (Marty), Fridays 10:00AM-11:00AM (James)
CA Office Hours: See Piazza for CA hours
Email: martin.allen@tufts.edu, james.skripchuk@tufts.edu
Office: JCC 461 (Marty), JCC 323 (James)
Instructor Office Hours: Mondays 1:30-3:00PM (Marty), Fridays 10:00AM-11:00AM (James)
CA Office Hours: See Piazza for CA hours
Lecture: Joyce Cummings Center, Room 270
Section 1: Tues/Thurs 10:30am-11:45am
Section 2: Tues/Thurs 12:00pm-1:15:pm
Lab: Joyce Cummings Center, Rooms 235 and 240 (see SIS)
Section 1: Tues/Thurs 10:30am-11:45am
Section 2: Tues/Thurs 12:00pm-1:15:pm
Lab: Joyce Cummings Center, Rooms 235 and 240 (see SIS)
Midterm Exam: We will have an in-person midterm exam in class on Thursday, March 12th in your assigned lecture.
Final Exam: This course will have an in-person final exam on Monday, May 4th. In order to take CS11, you must be able to attend this final exam. The Section 1 exam is from 12:00-2:00pm. The Section 2 exam is from 3:30-5:30pm.
Table of Contents
This page contains course information pertaining to:- Course Overview
- Final Grade Breakdown
- Homework Logistics
- Lab Logistics
- Technical Resources
- Collaboration and Academic Integrity
- Inclusivity and Accessibiliy
Course Overview
This course serves as an introduction to computer science via the programming language C++. You will learn how to devise precise procedures for solving problems, and how to specify these procedures using the C++ programming language. Along the way, you will strengthen your computational thinking skills (helpful for any form of problem solving) and begin to form a mental model of how a computer operates.CS11 is a fast-paced, challenging course that may require more of your time and effort than what you’ve experienced in other courses. By staying aware of the course policies, following the advice of the course staff, and taking advantage of the provided resources, you will set yourself up for success in this course regardless of your background.
Course Goals
By the end of this course, students should be able to:- Demonstrate computational problem solving with basic programming constructs.
- Interpret a sequence of English instructions (an algorithm) as a C++ program and vice versa.
- Apply computational thinking to solve problems.
- Assess a C++ program’s aesthetic value and functional correctness.
Course Expectations
These expectations are designed to prevent students from missing important information or misunderstanding policies that are essential for succeeding in the course. If you experience a negative outcome in CS11 (e.g. losing points on an assessment, missing a regrade request window, not begin granted an extension) due to a failure to meet one of these expectations, that outcome will not be changed.As a CS11 student, you agree to:
- Read this entire syllabus during the first week of class.
- Adhere to all the policies outlined in this syllabus.
- Read all pinned Piazza posts carefully throughout the semester (Piazza is explained below). This is the main mechanism for distributing course information such as changes to policies, deadlines, etc.
- Follow the three CS 11 axioms:
- Start early. Unlike a set of individual problems, a program has to function as a whole. The more you build, the more carefully you must think about how the various components fit together. If you’re in a rush, it will be difficult to build a functional program; give yourself as much time as possible!
- Think before you code. A program is just a faster and more reliable version of a procedure that can be done with a pencil and paper. If you do not have a clear idea of how you would solve the problem with a pencil and paper, then you are not ready to write code for it.
- Write a little, test a little. Finding a bug in 5 lines of code is far easier than finding a bug in 500 lines of code. A good program is written in small, testable increments. You should not write the next section of your program unless you have a clear plan for how to test it.
Final Grade Breakdown
Your course grade will be produced as a weighted sum of your scores in four categories:- Labs (10%)
- Homework (60%)
- Midterm Exam (10%)
- Final Exam (20%)
Homework Logistics
In general, homework assignments will go out every Wednesday and will be due at midnight the following Tuesday. There will be a longer project towards the end of the semester. Each homework assignment will consist of three components:- A written component that will be submitted via Gradescope
- A programming component that will be submitted via our
submit11system - A style component that evaluates how well your code conforms to our style guide
Written
The written component of your homework must be submitted as a PDF via Gradescope. Failing to submit your written component or submitting a document that cannot be viewed on Gradescope will result in a loss of credit for this component.Programming
The programming component of each assignment must be submitted via oursubmit11 system.
First and foremost, the programing component of your homework must compile on our Halligan servers in
order to receive any credit. Once your submission has compiled, it is evaluated by comparing its output to the
output that our solution code produces.
With the exception of HW0, programming submissions will be graded by an automated system that uses the program
diff to compare a submission's output to our ground truth. Students will learn to use
diff during their second lab session and are expected to use it for testing before submitting
all of their subsequent homework assignments.
For the majority of the homework assignments, we will be providing one or more sample input files that students may use for testing. While these tests are designed to be generally representative of the tests we will be using for grading, they are not intended to be comprehensive. Students are expected to create their own input scenarios and test them using
diff.
The triplicate of compile-diff-submit should become the cornerstone of every student's submission process.
Late Homework
The Late Token SystemWe recognize that in some circumstances, it is not possible to meet an assignment deadline. In these circumstances, you can utilize the late token system. Each student is automatically issued five “late tokens” to be used on homework assignments or the final project; a maximum of two tokens can be used on a single assignment. A late token grants you a 24-hour extension on an assignment, and requires no action on your part; our grading software will automatically check the date and time of your submission and deduct the appropriate number of tokens. Note the following late token rules:
- Once you are out of late tokens, late homework will receive no credit.
- If you don't want to use a token, don't submit anything after the due date. We grade your most recently submitted work!
Late tokens are designed to accommodate short-term setbacks like catching a cold or an ill-timed deadline in another class. Again, there is no need for any emails or explanations. Just turn in the assignment when you get it done, and the late token accounting will happen automatically.
Dean-Approved Extensions
In more extreme extenuating circumstances, the late token system may not be enough. In these cases, students must proactively reach out to their dean to request an extension (note that we rarely grant extensions that are requested on or past the due date). Your dean will then work with the course instructor to make appropriate arrangements.
Regrade Requests
You are always welcome and encouraged to ask for an explanation of the grade you received; simply post on Piazza to Insturctors privately.If you want to request a regrade, you must submit a request via Gradescope or post to Instructors privately on Piazza. To ensure a timely response, submit your request within one week of the assignment grade being released. If you're unsure of how to submit a regrade request for a particular component of an assignment, it's fine to submit the request on the first problem of the assignment on Gradescope or just use Piazza.
A regrade request may or may not result in a new grade being assigned. In some cases, a regrade request will be granted but incur a point penalty. If we have to make a small manual change to your code to regrade your assignment successfully, your grade for that component will take a 10 point penalty (so your max grade would be a 90%). If this change could have been avoided by running the
diff program appropriately before submitting the assignment, a 20 point
penalty will be applied (so your max grade would be an 80%).
Lab Logistics
Lab attendance is mandatory. Our weekly labs are designed to prepare students for the current homework. In lab, students will work with a partner to complete a small problem or activity in the allotted time.Ideally, you will finish the lab in the allotted time, but it’s completely fine if you don’t. Simply submit what you have at the end of your lab session and, if you feel comfortable with the concepts involved, move on to your weekly homework assignment. You’re also welcome to keep working on the lab after your lab session, and bring lingering questions to office hours.
To receive credit for a lab, you must submit it by end-of-day on Thursday of that week. As long as you’ve put in a good faith effort, you will receive a complete (100%) lab grade. Lab grades will be posted to Gradescope as a component of the weekly homework grade and adhere to the same regrade deadlines described above.
Technical Resources
Textbook
This course has one optional textbook, which serves as a helpful supplementary reference: Problem Solving with C++ by Walter Savitch. ISBN: 0133591743 (7th Edition or higher).Piazza
The preferred means of contacting the course staff is via Piazza, an online forum where students can ask and answer questions. General questions about the homework, course policies, C++, etc. should be posted publicly so that your classmates can benefit from the answers and any resulting discussion. Before posting a question, please check to see whether your question has already been asked. Questions that are personal in nature, or that pertain to specific pieces of code that you have written should be posted privately to the course staff.Piazza will host all of our major course announcements. It is your responsibility to check it regularly to avoid missing any information.
Tech Guide
You'll rely on a small number of programs and scripts to complete and submit labs and homework assignments. It is crucial that you arrive at a basic understanding of these tools in order to complete your work without issues. You will learn about these tools during the first few weeks of class, but further descriptions and instructions for them can be found on our CS11 Tech Guide.TAs and Office Hours
This course is challenging, but we want to help you succeed! If you need help understanding a concept, tackling an assignment, or dealing with a bug, you can participate in our teaching assistant (TA) office hours (OH) sessions, which take place in the large room overlooking the baseball fields on the 4th floor of the Joyce Cummings Center, Room 401. When you arrive, you will “join the queue” by writing your name on a list maintained on a whiteboard. If you plan to wait somewhere other than the OH room (which must be somewhere nearby), write your location next to your name and a TA will come find you when it's your turn. The full OH schedule is posted and kept up to date on a pinned Piazza post.OH assistance is meant to get you un-stuck or provide a nudge in the right direction; we expect that you will try to grapple with your issue yourself before asking for help. TAs may turn away students who cannot provide evidence of attempting to solve their problem on their own. For example, “What does this compiler error mean?” or “I don’t understand this part of the assignment’s directions.”
Out of respect for our TAs' time, office hours will end at the posted time regardless of the length of the remaining queue. The queue will be longer closer to the assignment deadline, so don’t assume that you’ll receive help if you join the queue during the last 30 minutes of office hours on a Tuesday night.
Collaboration and Academic Integrity
You are encouraged to discuss general CS11 concepts with anyone. This includes lecture slides and coding demos, lab handouts, reading material, and C++ concepts (functions, pointers, classes, etc.) and syntax (“how do I write a for loop?”, “how do I create an integer variable?”). You are also welcome and encouraged to fully collaborate on labs with a partner.The collaboration policy for homework assignments is more nuanced. As described above, homework assignments will consist of two components, a written component and a programming component. For each of them, we have slightly different policies about which forms of outside help and collaboration are acceptable:
Written
The goal of our written problems is to give you practice finding pieces of information that you have not expressly been given in class and lab. This skill allows you to eventually function independently as a programmer, and is critical for all computer scientists to master. Thus, you are expected to find the answers to written problems yourself. You may not confer with classmates, and may only minimally query the TA staff. However, any means of finding an answer is fair game. You may search the internet, consult the textbook, write test programs - anything.Programming
Both your classmates and the internet can be invaluable resources when programming, so long as they are used according to the following policies:- You may search the internet and talk to other students about general programing concepts and C++ syntax, but not about assignment-specific code or strategies. For example, it is fine to ask "How do you structure a 'while' loop in C++?", but it is not fine to ask "How do you write a Caesar Cipher decryptor in C++?" Assignment-specific questions should only be posed to the course staff.
- You should never be looking at or discussing another student’s code and no one outside of our course staff should be looking at or discussing your code. This also applies to testing and debugging: you may not help test or debug another student’s code, and you may not receive help testing or debugging your code from anyone other than the current course staff. If a TA sees you participating in any of these activities, it will be reported.
- Only submit code that you can explain. We reserve the right at any time to ask you to explain a piece of code that you submitted. If you cannot explain the code, then we will have no choice but to assume that it is not your work.
- Do not plagiarize code! Lifting partial or complete solutions from anyone (classmates, online sources, strangers) is completely prohibited. You must not submit code that others wrote or that you wrote for a previous class (or a previous iteration of CS 11).
- No questions, student solutions, or instructor-provided solutions should be posted online in any capacity (except as a submission to Gradescope). This means that you are prohibited from posting any of your work for CS11 in a public Github repository.
Inclusivity and Accessibility
Respect is demanded at all times throughout the course. We realize that everyone comes from a different background with different experiences and abilities. In the classroom, participation is encouraged, and should always be used to better everyone in the class.Tufts University values the diversity of our students, staff, and faculty, recognizing the important contribution each student makes to our unique community. Tufts is committed to providing equal access and support to all qualified students through the provision of reasonable accommodations so that each student may fully participate in the Tufts experience. If you have a disability that requires reasonable accommodations, please contact the StAAR Center to determine appropriate accommodations. Please be aware that accommodations cannot be enacted retroactively, making timeliness a critical aspect for their provision.