Syllabus

This page lays out all of the work you are responsible for in this course, how it will contribute to your overall grade, and the policies around collaboration, outside resources, and other concerns you may have. We will begin with a brief overview of some high-level points, but please review the entire syllabus to make sure you understand your responsibilities for this course.

Overview

The work you do for this course will fall into four categories:

Participation
Most classes will include a discussion or other activity to help you practice the material for the day. You will need to be pepared, present, and actively engaged for the full class period to receive participation credit for that day. Prepare for class by completing assigned readings on the course schedule. If you need to miss class you can make up for missed participation points; see the participation section below for details.
Individual Assignments
Most weeks of class will include an assignment that you should complete outside of class. Assignments are meant to help you practice independently to prepare for class topics and labs, and should be completed on your own. See the assignments section below for details on assignment deadlines and the full collaboration policy.
Group Labs
Most weeks of class will include a programming-intensive lab that asks you to apply concepts we have been discussing in class. We will start labs in class with randomly-assigned groups. Most labs will require you to find time outside of class to finish them with your group. See the labs section below for information about deadlines and the policies for collaboration and resubmissions on labs.
Project
Toward the end of the semester, you will combine the concepts and skills you’ve practiced to design and implement a system you design. You will have the option to work individually or in groups. Requirements will be available later this semester, but your project will need to combine multiple concepts from class to address a problem you are interested in solving. See the project section below for more information about the project.

You will have the option to submit some work late or resubmit work that did not receive credit using tokens. See the tokens section for information on how you can earn tokens.

The grade you receive in this class will be calculated based on the work you complete in the four areas above. See the grading section for a complete explanation of how your grade is calculated.

The rest of this syllabus lays out detailed policies around grading, collaboration, academic honesty, and more. You are responsible for following all of these policies, so make sure you review them carefully. If you are ever unsure about a course policy or you find yourself in a situation this syllabus does not clearly address, please talk to me as soon as possible.

Graded Work

This section lays out the detailed policies around graded work for this class, as well as the method I will use to calculate your final grade.

Participation

You will receive one participation point for every day that you attend and participate constructively in class. To participate constructively, you will need to complete assigned readings, work actively with groups or partners when asked to do so, and remain in class for the entire class period. Part of your role as a participant in class is to serve as a resource for your peers; your insights, support, and questions will help them learn, and vice versa. Because of this, LLM/AI use is prohibited during class periods. If you are observed using an LLM/AI tool during class you will receive an automatic zero for that day and will not have an opportunity to make up the participation point.

Missing Class

If you need to miss class for any reason, notify the instructor by email at least 10 minutes before the beginning of class. You do not need to share the reason for your absence, just that you will be out. As long as you give advance notice of your absences you can make up for missed participation points by attending office hours within one week of your absence (appointment recommended). Complete any assigned readings, review class slides, answer any in-class discussion questions (from the slides), and attempt any in-class exercises before our meeting. We will discuss each of these elements during office hours, so you may find it helpful to keep notes as you work through these items. I may ask you to spend more time on the missed work before giving participation credit if you are missing elements or I think you need additional practice with the day’s material. You do not need to use a token to make up for a missed day of class.

If you need to miss consecutive days of class (e.g. for an extended illness or travel) just make sure we meet within a week of your last absence. We may need more time to meet if you miss multiple days of class, but we can arrange additional times to meet during our first appointment.

Missing Lab Days

If you miss a lab day, all the usual missed class day policies apply. You do not need to complete the lab before we meet but you should review the lab instructions and any additional detail from the class slides. I may pair you with other students who missed the first lab day, or if no other students were out I will ask you to complete the lab on your own.

Assignments

You will complete a series of individual assignments during the semester, each worth one point. You will receive credit for an assignment if your work meets all the requirements for the assignment and it is submitted on time. You do not have the option to resubmit assignments after the deadline, but if your work comes close to meeting the requirements but falls short in a few areas I will give half credit for the assignment.

Most assignments can be submitted late for credit, provided you have a token available. Late submissions are generally due before 10am on the next day of class after the deadline. You do not need to notify the instructor that you are using a token to submit an assignment late; just upload it to gradescope during the late submission period.

A small number of assignments will not be accepted late, as they are intended to help you prepare for a specific class period; I will remind you of these cases in class when these assignments are released.

Everything you submit in your assignment must be your own work. However, you can discuss general concepts, approaches to problems in assignments, and any associated class readings with other students in the class. You should limit these discussions to conceptual details and general programming challenges, and you must cite the students you discussed the assignment with in your code using comments close to the relevant code. You are welcome to talk about errors, useful functions, and C language quirks with other students, but you may not share your assignment code or rely on another student’s code for an assignment. You can also use other resources such as Linux manpages, online guides, videos, etc. as long as you cite them in the work you submit.

Labs

You will complete a series of labs during the semester, each with a different randomly-assigned group. Unless you are given explicit permission to do otherwise, you must work with your assigned group for each lab. While I expect that you understand how to work collaboratively, I have found it is sometimes necessary to clearly state some expectations for group work: I expect every member of your lab group to contribute to the work you submit, and that work must be a product of your collaborative effort. That means you cannot divide the lab into parts and work separately, you cannot allow other members of your lab group to complete the lab for you, and you cannot complete the lab on your own without your group’s involvement.

Your will receive credit for a lab if it meets all of the requirements laid out in the lab instructions, and no credit if it is missing any major elements. As with assignments, you can use a token to submit a lab late (typically 5 days past the original deadline). Every member of your lab group will need to use a token to submit a lab late. If your group disagrees about whether or not to use a token for a late submission, notify my as soon as possible and we will find an alternate arrangement.

Unlike assignments, you also have the option to resubmit labs that do not receive credit using a token (one per group member). You should plan to work with your original lab group on resubmissions, but if not all group members want to resubmit you can complete the revisions on your own. To request a resubmission, email the instructor to request that the gradescope assignment be reopened and include any group members that will be contributing to the resubmission on the email.

Project

We will finish the semester with a project that combines concepts from class into a system of your design. You may complete your project individually, or in a group of your choosing with up to three members. We will begin work on the project in week 11, starting with a proposal for a system that you will implement. The system you build will be up to you, but it must draw on several topics from the course. After completing a project proposal, you will implement your system and present the results of your work at the end of the course.

Your project will be treated as equivalent to two labs (see details in the grading section) To receive full credit on the project you must propose and submit a project that meets all requirements, and present your work during the scheduled project presentation time. All project components must be turned in on time unless we arrange alternate deadlines. The project implementation is due at the final cutoff time for work this semester and cannot be extended unless you are approved for an incomplete in the course.

Note that you do not need to complete your entire proposed project to receive full credit on the project implementation or presentation. I want you to be ambitious with your projects, and I understand that some groups may not be able to produce a working system in the final three weeks of the semester. That is okay. We will discuss the ways that your work will be assessed when we start the project so you understand what you would need to earn a grade you are happy with even for a project that doesn’t go exactly as planned.

Grading

Your overall grade in the class will be the highest one that satisfies the conditions over an entire row in the table below.

Letter Grade Participation Days Assignments (11 available) Labs and Final Project (7+2 available)
A missing 2 or fewer 10 or more 9
A- One column reaches B level and two reach A level.
B+ Two columns reach B level and one reaches A level.
B missing 3 or fewer 8 or more 8 or more
B- One column reaches C level and two reach B level.
C+ Two columns reach C level and one reaches B level.
C missing 4 or fewer 6 or more 7 or more
D missing 5 or fewer 4 or more 6 or more
F missing 6 or more fewer than 4 fewer than 6

As an example, if you were to finish the course with 3 missed participation points (B level), 9 assignment points (B level), and 9 lab/project points (A level), you would receive a B+. If you were to reach the A level with one more column (e.g. only 2 missed participation points) you would instead receive an A-. To earn an A, you would need all three columns to reach the threshold for an A.

On days when class is canceled for any reason you will not need to make up the missed participation point. If we skip any assignments or labs this semester the thresholds for these grades will be reduced.

Tokens

Every student will start the semester with two tokens that you can use to submit a lab or assignment late, or to resubmit a lab that did not receive full credit. You can earn more tokens by attending computer science department events such as CS Table, CS Extras, and other events I announce in class. After participating in the activity, send me an email to let me know you attended the event (even if I saw you there) and I will record the additional token.

You can use tokens to submit assignments and labs late without notifying me ahead of time; just upload your work to gradescope before the late deadline and I will record your token use.

To resubmit a lab, send me arequest by email and include any group members who will be participating in the resubmission. I will reopen the lab submission on gradescope for one week, although you can request to reopen the lab again without using an additional token. Each student is limited to one resubmission per week, so if you plan to resubmit several labs you should not wait until the last week of the semester to complete them.

Course Policies

Technology Usage Policy

You are welcome to use laptops, tablets, and similar devices to take notes during class or to refer to assigned readings. However, when you are asked to work or discuss with peers you are expected to give them your full attention. During labs and exercises, you are expected to complete all of your collaborative work on the classroom computers. If you need to look back at your notes it is fine to use a personal device, but programming, reading documentation, searching for resources, and any other work that happens in class must be done on the shared classroom computer.

You may not record video or audio from class unless you have a documented accommodation that requires it. If this applies to you, please notify me before class period if you intend to record during class time.

The use of wearable devices that capture video and/or audio is prohibited in class. Prohibited devices include smart glasses, audio recording pendants, or any other device that could be used to discretely record class. These devices may not be used in class regardless of whether they are set to record; please leave them at home when you come to class.

Academic Honesty

I encourage collaboration when it promotes learning. However, it is important for you to understand the course materials and demonstrate your own learning on assignments. As an instructor, I will meet my obligation to bring any work suspected to be in violation of the College’s Academic Honesty Policy to the attention of the Committee on Academic Standing, after which point there is no recourse with me.

You are free to discuss course readings and labs with other students, but copying is not acceptable. You are allowed to discuss labs and assignments with peers in the class, but these discussions should not lead to sharing of code beyond short snippets that aid in a discussion of general programming challenges or high-level approaches to assigned work. Work that you submit should be your own, and must acknowledge the contributions of others. When you submit individual work, I expect that work to be the result of your individual effort; likewise, group work should be a product of the collaboritive efforts of your entire group.

Misrepresenting who has contributed to work you submit is a violation of the academic honesty policy, and I will inform the committee on academic standing of any such violation. These cases could result in a zero on the assignment, or in the entire course. If you find that your lab group is not contributing, or if your partner(s) completed a lab without you, please tell me immediately so we can resolve the issue before you submit any work.

AI Use

The use of artificial intelligence or large language models is prohibited for all work in this course. You may not use these tools to summarize readings, generate discussion points, write reading journals, write code, or as any other type of resource. This policy is designed to incentivize the activities that best support your learning: reading, thinking, discussing, and writing code on your own and with other students learning along with you. If you are struggling with anything for this course you will get much more out of a conversation with the instructor, a mentor, or another student than you would from an AI tool generating a solution for you.

It is acceptable for you to use AI-generated summaries from search engines like Google as a starting point when you are looking for appropriate resources, but you must review and cite the actual sources of the information you use (usually linked at the end of the summary). Citing the AI tool is not appropriate, as it is synthesizing information from other sources. These summaries have improved, but they are still prone to misrepresenting the information in the actual sources they cite. It is your responsibility to accurately cite the source of information and ideas you use, so review the source carefully.

You should be aware that AI tools often produce similar code for different users, so if you chose to violate course policy and use an AI tool to complete a programming assignment, you could easily end up submitting work that is nearly identical to another student’s work. If I see these kinds of similarities in students’ work I am obligated to report them as an academic honesty violation, even if I do not know whether the similarity is the result of inappropriate collaboration or inappropriate AI use.

Acceptable Resources

You are welcome to use non-AI resources when completing your work for this class, provided you cite them. Linux manual pages, tutorials and guides, posts on StackOverflow, and discussions with other students are all acceptable resources. However, you may not use an outside source for the majority of your implementation. If your assignment is to implement a shell, you cannot simply submit someone else’s shell implementation, even if you provide a citation. If you find an outside source you would like to use but you are unsure whether that would be acceptable, please ask me before using it.

While I expect the work you submit to be the result of work with your group, you may discuss labs with other groups. You are welcome to discuss conceptual details and programming-related challenges with others as long as you cite them (see an example in the citations section), but please do not discuss the code you plan to submit with anyone other than your group. As a general guideline, discussions between groups that take place away from a computer screen are generally acceptable, even if you do end up writing down some small code snippets on a whiteboard or notepad.

Citations

Any time you use a resource to help with work you submit for this course you must cite it. Cite your discussions with mentors or other students in the course, assigned readings, class discussions or notes, or any website or book you refer to when completing your work.

When you are citing a resource in the code you write, include the citation in a comment close to the part of the work that was informed by that resource. You are not required to use a specific formal citation style (e.g. MLA, APA) but please do begin all citation comments with the prefix Citation: so they are easy to locate.

Here is an example of a good citation for a discussion with a mentor or another student in the class:

// Loop over elements of the array in reverse to show in descending order.
// Citation: discussion with Jordan Smith (smithjor@grinnell.edu)
for (int i=length-1; i>=0; i--) {
  ...

Here is an example of a good citation of an outside resource (Stack Overflow) in code:

// Move characters left one space in the message using memmove because source and destination may overlap.
// Citation: https://stackoverflow.com/questions/4415910/memcpy-vs-memmove
memmove(&message[0], &message[1], message_length - 1);

Notice that both citation examples include an additional comment that explains what the code is doing. This explanation is required, and must accurately describe the guidance you received from the cited resource. Citing a resource but misrepresenting what it says can rise to the level of an academic honesty issue, so make sure your citation accurately describes what you learned from the cited source.

In many cases, you might have several things you want to say in comments to explain what your code does, not just the information you drew from the cited resource. In this case, keep the citation and explanation together, and separate the rest of your comment from the citation as in this example:

// Create an array to return from this function.

// Returned array must be allocated with malloc.
// Citation: https://stackoverflow.com/questions/11656532/returning-an-array-using-c
int* result = malloc(sizeof(int) * length);
...

The first comment describes what the code is doing and has nothing to do with the citation, while the second and third comment lines make up the inline citation.

Please use this formatting whenever possible, but if you feel that it does not clearly identify how you have used an outside resource, please cite as clearly as possible using your best judgement. If you are unsure how to cite some resource you can always ask the instructor for guidance.

Getting Help

Instructor Office Hours

Please come by during my office hours to discuss course content, get extra assistance, or just talk about how the course is going. My office hours are bookable, but you are also welcome to drop in if I have open times. You can reserve a time for us to meet using the link on the home page.

If you cannot make it to regular office hours, email me to schedule an alternate time to meet. Please send at least three possible meeting times if possible so we can quickly find a time that works for both of us.

Mentor Office Hours

Mentors for CSC 213 hold regular evening sessions during the semester where they can answer your questions and assist with debugging. The schedule for these sessions will be posted on the home page.

Evening tutors may be able to answer questions for CSC 213 material, but not all evening tutors have taken this course so your first stop should be instructor or mentor office hours.

Direct Communications

I am happy to answer questions by email, but please allow 24 hours for a response (except on weekends, when I may not be able to answer at all). If you have an urgent issue that must be resolved quickly, email is the best way to reach me. If an issues comes up and it cannot wait until the next class period, please include the text “URGENT” at the beginning of your subject line.

Accommodations

My goal with this course is to ensure every student has the opportunity to learn and succeed in the class. The subsections below outline the institutional and course policies to support students with disabilies, who need additional support in their learning, or who must miss class for religious observations or preganancy-related conditions.

Students with Disabilities

Grinnell College makes reasonable accommodations for students with documented disabilities. Students with disabilities partner with the Office of Disability Resources to make academic accommodation letters available to faculty via the accommodation portal. To help ensure that your access needs are met, I encourage individual students to approach me so we can have a discussion about your distinctive learning needs and accommodations within the context of this course. If you have not already worked with the Office of Disability Resources and believe you may require academic accommodations for this course, Disability Resources staff can be reached via email at access@grinnell.edu, by phone 641-269-3089, or by stopping by their offices on the first floor of Steiner Hall.

Religious Observances

I encourage students who plan to observe holy days that coincide with class meetings or assignment due dates to consult with me in the first three weeks of classes so that we may reach a mutual understanding of how you can meet the terms of your religious observance and also the requirements for this course.

Academic Support

If you have other needs not addressed above, please let me know soon so that we can work together for the best possible learning environment. In some cases, I will recommend consulting with the Academic Advising staff: http://www.grinnell.edu/about/offices-services/academic-advising. They are an excellent resource for developing strategies for academic success and can connect you with other campus resources. If I notice that you are encountering difficulty, and I have reached out to you and not received a response, or if you have missed multiple class sessions or are not meeting our class objectives repeatedly, I will submit an academic alert via Academic Advising’s SAL portal. This notifies you of my concern, along with the Academic Advising team and your advisor(s), so that they can reach out to you with additional offers of support.

Grinnell College is committed to compliance with Title IX and to supporting the academic success of pregnant and parenting students and students with pregnancy related conditions. If you are a pregnant student, have pregnancy related conditions, or are a parenting student (child under one-year needs documented medical care) who wishes to request reasonable related supportive measures from the College under Title IX, please email the Title IX Coordinator at titleix@grinnell.edu. The Title IX Coordinator will work with Disability Resources and your professors to provide reasonable supportive measures in support of your education while pregnant or as a parent under Title IX.