Teaching team
Contacting us
Assignments
Readings
Labs
Project
Student responsibilities
Honor Code
Credit your sources
Classes
Syllabus
Office Hours
Grading
Homework Grading/regrading
Crashing programs
Late lab submissions
COVID-19 Info
Special accommodations
Communication
Ed Discussion
Canvas
Systems
GitHub
Linux
Religious observations
Inclement weather


CS50 Teaching Team

The CS50 team includes Professor Prioleau, 1 graduate teaching assistant, 5 undergraduate teaching assistants, and 3 learning fellows.

Professor: Temiloluwa Prioleau, Sudikoff 109

Graduate assistant: Holds office hours and oversees grading

Undergraduate assistants: Hold office hours and serve as graders

Learning Fellows: Support in-class active learning and guide project teams

Contacting us

If you need a private communication with the teaching team, you can contact us via email, visit us during office hours, or make an appointment.

Classes

Period 12: MWF 12:50 pm - 1:55 pm
X-hour: Tu 1:20 pm - 2:10 pm
Location: LSC 200

Syllabus

Please see the schedule for the complete list of topics that we will cover. The schedule is subject to change and I will try to update this pdf when changes occur. For example, please note that some assignment deadlines, further out in the term, are still tentative. We will use most of the x-hour periods for additional lectures, discussions, lab and help time.

Office hours

  • Prof. Prioleau:
    • Wed 2:30 - 4:00 pm, Location: Sudikoff 109
  • Abigail (Grad TA):
    • No office hours during the project (weeks 8 & 9)
  • Undergraduate TAs:

Project Week (Nov 8 - Nov 13, 2021)

Day Time Room Leader
Mon 4 - 5 pm Sudikoff 114 Annabel Revers
Tue 4 - 5 pm Sudikoff 241 Amittai Wekesa
Fri 5 - 6 pm Sudikoff 114 Sylvester Coch
Sat 2 - 3 pm Sudikoff 114 Chahak Goyal

Each lecture topic will be supported by lecture notes. These will be available by before each class time and will complement what is presented in class. We try to include in the class notes most of what we will discuss in class, but there will often be additional material that is included in class.

Course Announcements

We will use a combination of Canvas and Ed Discussion in this course. Canvas will primarily be used for posting grades, while Ed Discussion will be used for discussions and announcements (especially as it relates to assignments).

Canvas

All lab assignments will be announced in the Assignment section of our Canvas site. You will receive all your grades via that site. It is important to note that access to the Canvas site is limited to only those that are enrolled in the course.

Ed Discussion

You are responsible for reading announcements we make in Ed Discussion. The Ed Discussion platform is also a great tool for seeking help, quickly and efficiently, from classmates and the teaching team. Rather than emailing questions to the teaching staff, please post your questions on Ed Discussion. This allows your classmates to benefit from seeing the question and subsequent responses from the teaching team. You are also encouraged to contribute answers to other people’s threads, or initiate open-ended discussions.

Warning! If your question reveals part of a solution, do not post it publicly! Mark the question as private and only you and the instructors will be able to see it.

To get set up in Ed Discussion, you need to connect to Canvas first. Once in Canvas, select our course (“Software Design&Implement’n”), and then click on Ed Discussion on the left side. Please do not register directly on Ed Discussion’s website as that will confuse Canvas ;-).

Assignments

Readings

You are encouraged to do the weekly readings. While this is not compulsory, it is highly recommended as it will broaden your knowledge and appreciation for the course material.

Labs

Students will work individually on a series of six coding assignments (“labs”), which get progressively harder through the term. All labs are submitted through GitHub Classroom (GitHub). We will test all your solutions on the Thayer Linux servers, so you should develop and test (or at least test) your code there.

Project

Students will work on a final project in small groups assigned by the instructor; details will be announced later in the term. After the project is submitted, each member of a group will submit a confidential assessment of themselves and the others in their group.

Grading

There are no exams in this class – instead, a series of programming exercises and a final project.

Component Percentage
Lab 0 (setup) 0%
Lab 1 (bash) 8%
Labs 2-3 (C) 20%
Labs 4-6 (TSE) 36%
Final project team grade 26%
Class engagement 10%

The final project is a team grade – every team member gets the same grade – but there is an opportunity for peer evaluation to address variance in members’ contribution.

Class engagement will be assessed on attendance and/or participation in class-related activities. Engagement requires both preparation and participation - you should read ahead, think ahead, and actively participate.

Class Attendance/Participation counts toward “engagement”; you have three ‘free’ absences that you can use at your discretion. However, we will be accommodating of COVID related absences. At the core, you are expected to participate and engage actively in class activities.

Lab grades depend on whether your submission meets the requirements for that lab, and being submitted on time. See the lateness policies below.

Homework grading/regrading

Your work is normally graded each week by the teaching assistants, according to a grading rubric that I discuss with them. If you have any grading questions on a homework or quiz, please follow the procedure below.

If the grader made an obvious mistake (e.g., totaling error), you can see me or the TA and we’ll make the correction right away.

If you feel the grader did not grade your answer accurately, then you should send email to both the grader, the graduate TA, and me to explain which program(s) need regrading and why. We will arrange for your answer to be reviewed again. After you hear the outcome on your regrade request, if you still feel the matter is not resolved satisfactorily, then you should see the instructor to discuss further.

Please note that you must submit your regrade request within four days from when the homework/exam was returned, or 5PM November 16, 2021, whichever is earlier. Any regrade request that comes after the deadline stated above will not be considered, regardless of its merit.

Programs that crash

Your lab solutions are graded for correctness, style, design, and documentation. Each lab requires you to document your own tests and test results; the graders will also compile and run your program with their own test cases. If your program crashes when the graders run a particular test, your program will be marked as incorrect for that test. If your program does not compile, you will lose all correctness points. The best way to avoid that situation is to ensure that your program doesn’t crash in the first place. Learning how to debug and test your programs is a key part of this course.

Late assignments

This is a challenging course and we are all in a challenging season, so self-discipline and planning will be very important. It is highly recommended that you start ALL assignments early!

Every student is allowed one late submission within 24-hours of the deadline that they can use at their discretion for any individual assignment in the term. This is to accommodate for unexpected happenings. However, ALL other late submissions will be penalized as follows:

  • 10% off the whole lab’s points if submitted within 24 hours after the deadline,
  • 20% off the whole lab’s points if submitted within 48 hours after the deadline,
  • 30% off the whole lab’s points if submitted within 72 hours after the deadline.

As an example, if it’s due at 11:50PM on 25-Sept and you submit it at 1:00AM on 26-Sept, and the total points of the lab is 100 points, 10 points will be deducted from your final score.

No assignments will be accepted 72 hours after the original deadline. At that point, you will receive zero points for the lab.

Systems

GitHub

In this course we will use GitHub for managing and submitting your source code. This service will be essential for the project.

Linux

You will do all your programming on Linux servers at Dartmouth’s Thayer School of Engineering. You will have to connect to the Dartmouth Campus network to access Thayer’s Linux servers. If you are off campus, please use Dartmouth’s VPN.

The primary CS50 server is called plank.thayer.dartmouth.edu; you may also use equivalent servers called babylonX.thayer.dartmouth.edu, where X is 1 through 8. You can check their status here. Your laptop must first be on the campus network, or on Dartmouth VPN, to access these servers.

In CS50 we support development only on Thayer’s Linux systems. Not MacOS, not Windows, not even other Linux systems. Linux systems differ in subtle ways; MacOS is a form of Unix different from Linux, and Windows is even more different. Our graders will use plank for all testing.

If you find yourself stuck or confused about Linux or any of the tools we use, here are some places to look:

  • For help with Dartmouth-supported services check the Knowledge Portal or email help@dartmouth.edu or call the helpdesk. Their phone number is at the bottom of every page on the Knowledge Portal page.

  • For help using the Thayer Linux computer systems, look here first. If you don’t find an answer there, search on Ed Discussion to see if others may have had and resolved your issue or post a question there. If neither of those help, then send email to Thayer Computing Services for support. Keep in mind that they are only active during normal business hours.

Student responsibilities

  • Have successfully completed Computer Science 10 – or permission of the Professor.
  • Attend class (with your laptop) and engage in classroom activities. We do take attendance - you are permitted three absences.
  • Attend weekly Section meetings, and engage in their activities.
  • Do the weekly reading - it’s short.
  • Pay attention to Canvas for announcements.
  • Code and submit Labs 1-6; see the policies on extensions and late submissions.
  • Engage fully with your final project team, striving to produce well-designed, well-documented, well-tested, well-styled code.

Take care of yourself!

The academic environment at Dartmouth is challenging, our terms are intensive, and classes are not the only demanding part of your life. There are a number of resources available to you on campus to support your wellness, including: your undergraduate dean, Counseling and Human Development, and the Student Wellness Center. I encourage you to use these resources and feel free to speak with me as needed to take care of yourself throughout the term.

Honor code

Dartmouth’s Honor Code and policies apply to your conduct in this course. Please read about Dartmouth’s Academic Honor Principle.

First, you may discuss and help each other (help in debugging, sharing knowledge, giving moral support, getting coffee, etc.). This support is the type of team spirit and joint problem-solving skills that are the essence of the course and necessary to do a great project. However, you cannot work jointly on coding up (i.e., writing) your individual programming assignments. You can talk, discuss solutions to solve a problem but you cannot work jointly on the code development and writing. Submitted code for the labs has to be yours and yours alone.

The project phase is different. You can work jointly with your project team on writing code and documentation. The project submission has to be the joint product of the team. Teams can use small fragments of source code from online resources to enhance their project (e.g., for extra credit or toppings) but they must cite the references and outline the specific code segment that came from a given reference. No sharing of code between teams is allowed. Teams can discuss design strategy, but cannot share implementation or source code.

In either case, you should not read or incorporate solutions for assignments/projects found on the Web from previous terms, inside or outside of Dartmouth.

SPECIFIC GITHUB WARNING

We will also be learning how to share files using the git versioning system. We will use git with GitHub, which is an open repository of projects (including source code) from programmers around the world. Some past students of CS50 uploaded their assignment or project solutions to GitHub for reference by potential employers. While this is may be a good idea for their job search, it is extremely disruptive, distracting, and misleading for you and future students.

Keep in mind:

  • Anyone can upload code to GitHub. That doesn’t mean it’s good code, working code, or even code that will compile and run!
  • If you need to upload your work for reference by potential employers, GitHub offers free private repositories to students.
  • Any student found to have uploaded any CS50 assignment solutions, including TSE and the final project, to a publicly available GitHub repository, or to a private GitHub repository while sharing its access credentials with other Dartmouth students, will be reported.
  • Anyone caught using the work of prior CS50 students, whether from GitHub or other sources, will be reported.
  • The graders have a list of existing public repos hosting CS50 related labs, and will compare your submission to them to detect plagiarism.

The following is repetitive, but it is necessary to be explicit here (this is Prof. Campbell’s version):

You would be amazed at how easy it is to tell when people work together on problem sets, particularly coding exercises. Think about the simple shell commands we run against your source code from labs and projects to compare your lab assignments and projects against every other assignment and project ever submitted since this revision of course started in 2008 - it takes less that a millisecond to run these checks - no effort on our behalf. Similarly, we know how to use google too. You should not under any circumstance look at or use code from students that have previously taken this course. The message is simple - please don’t make life unpleasant for all of us by breaking these rules. The penalties for cheating at Dartmouth are severe, starting with suspension and including expulsion. If you are unsure about anything, please ask.

We can assure you that violations of the Honor Code have been, and will continue to be, treated seriously.

Indeed, I agree with Professor Cormen, who wrote:

I reserve the right to assign you a failing grade on an entire homework assignment or on an entire exam if I believe that you have violated the Academic Honor Principle, apart from any finding by the COS. I will give you every opportunity to convince me that you did not violate the Academic Honor Principle, but I take the Academic Honor Principle very seriously. You have read Sources and Citation at Dartmouth College. I was co-chair of the committee that wrote this document. In fact, I wrote the first draft. So I know exactly what it says. Cheaters—whether or not they are caught—bring dishonor upon themselves and upon everyone else at Dartmouth. To do that, for just a few lousy points in a course, is [insert your favorite strong adjective meaning “stupid” here]. You cannot fool me into thinking that you did not cheat if, in fact you did. So don’t cheat.

Please let me know if you have any questions—better to be safe than sorry!

Credit your sources

Any ideas you get from other teams or any other source should be carefully cited both in the code and in the documentation.

  • In your assignments, list all your collaborators (e.g., “I discussed this homework with Alice, Bob, …”) and credit any sources used.
  • You must also credit specific sources that are provided by the instructor. For example, you must credit code that we give you if it helps you with your work (either by direct use of the code, or by simply enhancing your understanding by reading the code).
  • References for any non-trivial algorithms you employ should be included in the code and documentation to ensure others will know where to learn more about it.

Copying code from StackOverflow or other online sources is strictly forbidden. The code you submit must be your own.

For more general information, see Dartmouth’s guidelines for proper citation of sources, particularly the section on Computer programming assignments.

COVID-19 Information

Attendance

You are expected to attend class in person unless you have made alternative arrangements due to illness, medical reasons, or the need to isolate due to COVID-19. For the health and safety of our class community, please, do not attend class when you are sick, nor when you have been instructed by Student Health Services to stay home. You will be able to review the lecture notes, class activities, and assignments on the course website.

Safety

In accordance with current College policy, all members of the Dartmouth community are required to wear a suitable face covering when indoors, regardless of vaccination status. This includes our classroom and other course-related locations, such as labs, studios, and office hours. If you need to take a quick drink during class, please dip your mask briefly for each sip. Eating is never permitted in the classroom. (The only exception to the mask requirement is for students with an approved disability-related accommodation; see below.) If you do not have an accommodation and refuse to comply with masking or other safety protocols, I am obligated to assure that the Covid health and safety standards are followed, and you will be asked to leave the classroom. You remain subject to course attendance policies, and dismissal from class will result in an unexcused absence. If you refuse to comply with masking or other safety protocols, and to ensure the health and safety of our community, I am obligated to report you to the Dean’s office for disciplinary action under Dartmouth’s Standards of Conduct. Additional COVID-19 protocols may emerge. Pay attention to emails from the senior administrators at the College.

Special Accommodations

Students requesting disability-related accommodations and services for this course are required to register with Student Accessibility Services (SAS; Getting Started with SAS webpage; student.accessibility.services@dartmouth.edu; 1-603-646-9900) and to request that an accommodation email be sent to me in advance of the need for an accommodation. Then, students should schedule a follow-up meeting with me to determine relevant details such as what role SAS or its Testing Center may play in accommodation implementation. This process works best for everyone when completed as early in the quarter as possible. If students have questions about whether they are eligible for accommodations or have concerns about the implementation of their accommodations, they should contact the SAS office. All inquiries and discussions will remain confidential.

Religious observations

I realize that some students may wish to take part in religious observances that fall during this academic term. Should you have a religious observance that conflicts with your participation in the course, please come speak with me before the end of the second week of the term to discuss appropriate accommodations.

Inclement weather

On rare occasions, Dartmouth may cancel classes or even close the campus. If this occurs, general notice will be given in three ways:

  • Local broadcast media;
  • Campus-wide BlitzMail messages; and
  • A recorded message at a College toll-free Inclement Weather Phone Line: 1-888-566-SNOW (1-888-566-7669).