Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Course Policies

Communication

Office Hours: Generally, answering questions about the assignments is much more efficient in person. As such, please ask questions about the assignments during office hours or class whenever possible.

Ed Discussion: We will primarily use Ed for discussion outside of class and office hours. We will also be using Ed to post announcements and other course updates. The system is highly catered to getting you help efficiently from classmates and the course staff. Rather than emailing, we encourage you to post your questions on Ed.

The following is the link to the course’s Ed Discussion board: https://edstem.org/us/courses/93906/discussion

Gradescope: We will use Gradescope for all assignment submissions. For assignments that have a autograder, you will be able to see your score and feedback immediately, and there will be no submission limit. Thus, it is in your best interest to submit early and often!

The following is the link to the course’s Gradescope instance: https://www.gradescope.com/courses/1220158. You should have already been added to the Gradescope instance for this course. If you do not have access, please reach out to an instructor so we can get you added.

Moodle: Moodle will only be lightly used in the course, primarily for hosting slide PDFs and source code. Instead, look to the Ed Discussion board for announcements, Gradescope for assignment submissions, and to this course website for the content and assignments.

Private Ed Posts

A private Ed post can be used to answer more specific questions about your work, especially if you do not want to share the details in a public Ed post.

If you have a question about a program you are writing, whether we are meeting in person or you are sending us a message, it is important to be specific about the problem you are encountering. In particular, you should be clear about:

What You’ll be Doing

Reading

We will be providing freely accessible online reading material at https://comsc205.github.io/readings. These readings will supplement and reinforce the material covered in lecture.

In-Class Activities

In most lectures, we will have in-class activities such as worksheets or PollEverywhere questions, often done in a group with one or two other students. These activities will give you a chance to self-assess your understanding of the material and work collaboratively with other students. This work is intended to help you master the material and is not graded.

Labs

Lab time will be devoted to working on questions and hands-on programming exercises with the support of Sage and TAs. These will be your first chance to put the new ideas from lecture to practice in code. Lab time is an opportunity for exploration and learning.

Written Assignments

These assignments conducted through Gradescope will let you apply the course content in a way that will serve as the first steps towards the larger programming assignment. The intent of these assignments is to be able to identify and resolve any confusion before embarking on the programming assignment. Each written assignment should take ~1-2 hours to complete.

Programming Assignments

Programming assignments will ask you to apply the algorithms and data structures from the lecture and lab to solve specific problems. You will practice planning out a solution, then writing, debugging, and testing your program. Each programming assignment should take ~5-8 hours to complete.

Written Tests

There will be a midterm and final exam to test you on the material that you have been learning and practicing in prior work. These will be pencil-and-paper tests focusing on the concepts, similar to the questions done on worksheets and written assignments.

Reflections and Feedback Surveys

Throughout the semester, we will periodically check in to ask what is going well for you, what difficulties you are encountering with the material, as well as how you are growing and learning throughout the course. These reflections and surveys will also be an opportunity to let us know about any challenges that you may be facing, such as health, technological, or other issues, so that we can work together on a plan to get you back on track. Reflections and feedback surveys will be graded on good-faith effort and completion.

Assessment

Component%
Written assignments20%
Programming assignments30%
Labs11%
Reflections and feedback4%
Midterm exam15%
Final exam20%

Due dates

The above general due dates may change as the semester progresses, and we will keep the course schedule updated on the course website!

Late Submissions and Late Days

Lab Assignments

We expect that everyone attends their designated lab each week and submit their lab assignment on time. The lab assignments will be graded on good-faith effort, no matter how far you get during lab -- our goal is to get you in lab and working alongside your peers with the support of Sage and the TAs. Therefore, there are no late days for lab assignments.

However, we also understand that there may be times when you are unable to attend lab due to illness or other extenuating circumstances. If you are planning on missing lab, please email the instructors ahead of time so that we can work together on a plan for you to get the lab assignment done on your own time.

Written Assignment Drop Policy

The lowest non-zero written assignment will be dropped from your grade. Thus, you should always try to submit something for every assignment!

Written Assignments

There are no late days for written assignments. They are expected to be submitted on time so that we can give you timely feedback on how well you are understanding the course material. We emphasize that these assignments should not take more than 1-2 hours, and that we have the drop policy above if something comes up during the semester.

Programming Assignments

You have 5 late days for programming assignments to use over the course of the semester. They may be used for any reason and you do not need to ask permission to use them. You can ask an instructor at any point during the semester for the number of late days you have remaining. After these late days have expired, you will lose 10% of the assignment’s value for each day that it is late.

Extensions will be given in the event of extenuating circumstances, such as illness or an unexpected emergency. If this is the case, please reach out to the instructors as soon as possible so we can work together on a plan and timeline for any make-up work.

Programming Assignment Resubmission

On your initial submission, the above late policy applies. You may resubmit a programming assignment within two weeks of the original due date. If you’d like to do so, you must reach out to an instructor indicating your plan to resubmit, and also include in your submission a short written reflection on what you did differently in your resubmission. Resubmitted programming assignments will receive up to 80% of the original credit.

General Course Policies

Attendance and Participation

It is important that you attend lecture and lab to engage with your peers and the course material. However, we also understand that unexpected situations sometimes arise. Ultimately, we expect that you communicate with us about what is happening, especially if you need to miss several classes.

In general, if you miss class, you should find out from a classmate what you missed and then contact the teaching staff if you need additional help. Please let us know about any extended absences so that we can work together to make a plan to make-up any missed work.

Collaboration

Collaboration can help you better understand course material. We encourage you to collaborate with other students in the following ways:

Online Resources

The Internet is a useful resource when learning to solve computer science problems, and in some cases you will be expected to use reference material found online (e.g., documentation for a programming language or library). It is okay to:

However, it is NOT okay to:

The general rule of thumb is that if you are looking for general knowledge, searching is ok. If you are looking for an answer to a specific homework question, that is not ok.

For example, suppose you are writing a program and you get a compiler error message that you do not understand. Searching for an explanation of the error message is ok. Suppose that you need to call a method and need more information on its parameters or exactly what it does. Searching for information on how to use the library function is ok. Posting a question on StackOverflow asking for help in getting your code to compile or run correctly is not ok.

Suppose a homework assignment asks you to write a program that plays Sudoku. Searching for Sudoku rules is ok. Searching for code of programs that play Sudoku is not ok.

As the situation arises, we will clarify more specific expectations or deviations from this policy, but it is always your responsibility to ask if you are unsure.

Academic Integrity

In order to protect the integrity and value of our work together, we expect that all of your work in this class will comply with the MHC Honor Code:

LLM / AI Policy

Large Language Model (LLM)-based assistants, like ChatGPT, Copilot, and Gemini are powerful tools that are having a profound impact across industry and society. These tools can assist in many aspects of programming such as through providing suggestions or even generating code snippets. However, one of the key shortcomings of these models is that they are prone to (often confidently) incorrect output. In order to use these technologies effectively, you must first have a strong conceptual foundation in order to identify and correct any mistakes they may make.

As you are still early in your computer science learning journey, one of the goals of this course is to help you develop the skills to create well structured programs and reason through programming design choices. This hands-on practice is essential for building your own understanding of the subject. Using LLMs to generate code not only gives you an unfair advantage over your peers but also robs you of the instructional value and the satisfaction that comes from writing and debugging your own code.

This policy is not just about fairness or compliance; it is primarily about your development as a budding computer scientist. Learning to code independently will enable you to understand the underlying principles of data structures, preparing you for more advanced topics. By mastering these fundamentals now, you will be better equipped to use tools like LLMs effectively later in your career.