CSC 161 is the second course in Grinnell’s three-course introductory computer science sequence. This course introduces the imperative problem solving approach to computation using the C programming language. This syllabus lays out the structure for the course and your responsibilities; please review it carefully and ask questions during class or by email if anything is unclear.
By the end of the semester, students who complete CSC 161 will be able to:
const.The time required for these activities will likely vary substantially from student to student and from one part of the course to another. Given that variation, it is difficult to estimate the time individual students will need to devote to this course. The college expects that a four-credit course should take approximately 12 hours per week, including time in class. That means you should expect to spend 8 hours outside of class on readings, labs, assignments, and reviewing for quizzes and exams each week. Some weeks will be lighter than others, but if you find you are consistently spending far more than 12 hours per week on this course please meet with me to discuss the workload and what we can do to address it. The solution may involve adjustments to class pacing but is also likely to include strategies you could take to complete your work in less time.
You can use resources linked on this website for most of your work in the course. Collaboration is an important part of learning in this course, but collaboration policies differ between labs, homework assignments, and other graded work. The use of AI tools like ChatGPT, Gemini, and Claude is not permitted for labs, class discussions, homework assignments, quizzes, exams, or the final project. Other resources may be acceptable, provided they are clearly cited in the work you submit.
This course includes several graded components, described in more detail in the rest of this syllabus:
You are expected to attend and participate during class. To participate in class you should:
You will earn credit for every day of class that you meet the above requirements, or for any day when you have an excused absence.
If you need to miss class you may do so without penalty provided you give timely advance notice. Please send me an email informing me that you will be absent the week before any foreseeable absences (athletic events, religious observances on the College’s high holy days, etc.). You do not need to share details about your absence for it to be excused; advance notice is sufficient.
If you are sick, please do not come to class. Absences for illnesses will be excused as long as you send notice by email at least 15 minutes before the start of class. You do not need to share any information about your illness or document your illness for it to be excused.
When you miss a day of class you are still responsible for the material covered in class. You should review readings, labs, and notes from class and consult with peers who were in class on the day you missed to catch up. Course staff will not give make-up lectures for missed days, although we are all happy to answer questions when students have made an effort to catch up on missed material.
If you miss class frequently—excused or not—it may be difficult for you to meet the learning outcomes for this course. I may ask to discuss frequent absences with you if I am concerned about your progress in the course.
See the grading section for an explanation of how attendance and participation impact your final grade in the class.
Most days of class will include a lab that you are expected to work on during class time. You will complete labs with assigned partners. These groups will change each week so you will not be working with the same students for the entire semester. You might not finish every lab exercise during class time, but you are responsible for the material in each lab.
You will submit your lab work in weekly lab reports, which you must complete with your assigned group. Lab reports will generally ask for responses to specific questions from the week’s labs, and should not take much time to complete beyond the time you spent on the lab itself. These reports serve primarily as a check to make sure you are putting in a reasonable effort to complete lab work and as an opportunity for early feedback. If you are unable to work with your lab group due to illness or an emergency you may be able to submit lab reports separately, provided you talk with me first.
Lab reports will be evaluated using the following scale:
You will have the option to submit lab reports late or resubmit lab reports that do not receive full credit. See the section on grading for an explanation of how lab reports impact your overall grade in the class and policies for late work and resubmissions.
Homework assignments go beyond the work we complete during in-class labs and provide an opportunity for individual practice and assessment. You may talk with peers about conceptual questions or course topics related to homework assignments, but the work you submit (usually code) should be entirely your own work, not collaborative work with peers. There is one exception: you may use code from a lab as part of a homework assignment as long as you cite the lab and your lab partner.
Homework assignments will be graded using the following scale:
As with lab reports, you will have the option to submit homework late or resubmit homework that does not receive full credit. See the section on grading for an explanation of how homework assignments impact your overall grade in the class and policies for late work and resubmissions.
The semester will conclude with a final project. The final project will be less prescriptive than homework assignments; you will have choices to make about the work you complete, and you can choose to work individually or with a group. You can read more on the final project page as we get closer to the end of the semester.
Your final project will also include a presentation during our scheduled final exam time. The presentation is a required element of the final project and must be completed during the scheduled time to earn full credit. If our scheduled exam time conflicts with your exam for another course, please meet with the instructor as soon as possible so we can make alternate arrangements.
Your final project will be equivalent to two homework assignments. Final projects will be evaluated with the following scale:
Because final projects are due at the end of the semester, late submissions and resubmissions will not be possible for the project unless you have an incomplete approved by the registrar. See the section on grading for an explanation of how the final project impacts your overall grade in the class.
Most weeks of class will include a ten-minute quiz on Thursdays that covers topics from the week, including topics from the reading assigned on that day of class. Quizzes are listed on the course schedule.
If you have an excused absence on a quiz day, you can make up the missed quiz during the next day of class. Please contact me if you need to miss the next day of class after a quiz so we can work out an alternate arrangement. If you miss a quiz without an excused absence, you will receive a zero on that quiz.
You will not have the opportunity to retake quizzes, but I will drop your lowest quiz grade before calculating your quiz average. See the section on grading for an explanation of how your quiz average will contribute to your overall grade in the course.
The class will include two in-class exams. The second exam will focus on material after spring break. However, because so much of what we learn in this class is cumulative in nature, you should expect material covered on prior exams to be necessary for later exams. Exams are listed on the course schedule.
Make-up exams are available only in extremely limited cases. If you must miss an exam for an athletic event you may be able to take the exam during one of the other sections of the course, provided you contact me at least a week ahead of time. If you need to miss an exam because of an emergency or serious illness, contact me as soon as possible, and no later than 15 minutes before the scheduled exam time. Make-up exam availability is not guaranteed, but may still be possible.
You will not have the opportunity to retake exams, but I will curve exams up to ensure the median score on each exam is at least 80%. See the section on grading for an explanation of how your exam average will contribute to your overall grade in the course.
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 | Unexcused Absences | Lab Reports | Homeworks (4) and Final Project (2) | Quiz Average | Exam Average |
|---|---|---|---|---|---|
| F | More than 8 | Fewer than 5 | Fewer than 3 | Less than 60% | Less than 60% |
| D | 8 or fewer | 5 or more | 3 or more | At least 60% | At least 60% |
| C | 6 or fewer | 7 or more | 4 or more | At least 70% | At least 70% |
| C+ | All columns reach C level and at least two reach B level. | ||||
| B- | All columns reach C level and at least three reach B level. | ||||
| B | 4 or fewer | 9 or more | 5 or more | At least 80% | At least 80% |
| B+ | All columns reach B level and at least two columns reach A level. | ||||
| A- | All columns reach B level and at least three reach A level. | ||||
| A | 2 or fewer | 11 or more | 6 | At least 90% | At least 90% |
As an example, if you were to finish the course with 4 unexcused absences (B level), 10 lab report points (B level), 6 homework/final project points (A level), an 85% quiz average (B level), and a 95% exam average (A level) you would receive a B+. If you were to reach the A level with one more column you would instead receive an A-. To earn an A, you would need all five columns to reach the threshold for an A.
Lab reports and individual assignments can be submitted up to 48 hours after the published deadline by using a token. You do not need to notify the instructor to use a token; all assignments will have a 48 hour late window and you can use a token simply by submitting during that window. You cannot combine multiple tokens to submit work more than 48 hours late.
Late submissions are not available for quizzes, exams, or the final project.
If you received less than full credit on a homework assignment or lab report you can use a token to resubmit the work to potentially improve your grade. However, if you did not submit the original assignment by the deadline or during the 48 hour late window you cannot resubmit the work with a token. It is always best to submit your work by the deadline or during the late window, but incomplete work must show evidence of significant effort to be eligible for resubmissions. Submitted work that does not show evidence of significant effort will be treated as if there was no submission.
You can resubmit an assignment or lab report as many times as you like (using one token each time), but you will be limited to two submissions during each week of the semester (not counting spring break). Some weeks will have both a lab report an individual assignment due, while others will have fewer deadlines. You cannot “bank” unused resubmissions from weeks when you submit fewer than two items for grading, so if you need to resubmit work you should identify a week when you will have an available submission and plan your work to meet that timeline.
Quizzes, exams, and the final project are not eligible for resubmissions.
Every student will start the semester with two tokens that you can use to submit work late or resubmit work that did not receive full credit. You can earn more tokens by attending approved community events and submitting a short reflection on the event. Only approved events will earn tokens, and events must be approved before they occur so all students have an opportunity to attend.
Some events are automatically pre-approved, including:
To request approval for another event, add it to this spreadsheet at least a week before the event. The CSC 161 instructors will mark them as approved in column D.
After attending the event, submit a one-paragraph reflection on the event in the tokens assignment on Gradescope. Reflections must be submitted within one week of the event.
Work on labs in this course is done collaboratively (in pairs, occasionally in a group of three). Many studies suggest substantial benefits to learning with this type of group work, and it is an industry practice in some software development methodologies. In recent surveys, up to 70% of developers have worked in paired programming situations. However, to be successful, collaboration requires partners to actively participate.
Each partner should come to class and actively participate throughout the class session.
The navigator should guide the work of the driver by suggesting approaches to problems, raising concerns, and checking work as it is typed in.
The driver should follow the navigator’s guidance, answer the navigator’s questions, and stop to explain or discuss any time the navigator asks.
All group members should take time to discuss solutions before beginning an implementation, and to answer each others’ questions as they come up.
Partners should make arrangements to meet as needed in the lab outside of class to finish labs.
Each partner has an obligation to show up and actively participate during planned meetings outside of class time. If you cannot attend a planned meeting you must contact your partner as soon as possible.
Make sure that you share your code, even if you are at an intermediate stage, at the end of a lab session. That way, your partner can pick up and work if something comes up so that you cannot meet.
When you turn in a lab report to Gradescope, make sure you add your partner to the group.
When you fail to meet your responsibilities to your group that impacts everyone in the group. Thus, except in exceptional circumstances (e.g., illness, family emergencies, serious injury), failure to follow through with one’s responsibilities as a partner may have a significant impact on one’s course grade and/or one’s standing in the course. Possible ramifications of repeated absences include receiving only partial credit for a lab submission, reduced participation credit, or a reduction in overall course grade in extreme circumstances.
If you find that you cannot make your schedule work with that of your assigned partner, contact me as soon as possible to discuss possible solutions.
Students are expected to know and abide by Grinnell College’s Academic Honesty policy. Except where explicitly prohibited, you may collaborate with peers in class, tutors, mentors, and the instructor on work for this course provided that collaboration is attributed. Limited collaboration is allowed on homework assignments, provided the work you submit is your own. Collaboration is prohibited on quizzes and exams.
Any group work you turn in should include the names of all group members at the top of the first page. Turning in work with multiple people listed as authors implies that all members of the group agree with what is presented. If a group member does not agree with some part of the work, the group should continue to discuss and revise the material until agreement is reached. In summary, a group activity is a joint effort, and all group members have equal responsibility for the finished product.
There are specific rules about collaboration on homework. You are allowed to discuss homework assignments, especially as you explore the problems and begin to develop ideas on how to answer. However, you must write your solutions on your own. You may work at a whiteboard with classmates or evening tutors to develop ideas for a homework assignment, but when it is time to write down the code for your solution you must work individually. Evening tutors and class mentors can help you with debugging. Any assistance on homework assignments must be attributed.
You may be tempted to look for answers and ideas online when things get difficult; feeling stuck is a normal part of learning, and there are resources to help you. However, you may not use any online materials besides those linked on our course website. Prohibited resources include ChatGPT, GitHub Copilot, other AI assistance tools, websites that gather homework solutions, or any other outside resources without explicit permission from me. The resources you can use include class readings, the course website, labs, your peers (when collaboration is permitted), course staff, and Linux manual pages.
If you have questions about the academic honesty policy or how to appropriately attribute collaborative work, please ask. Asking about course policies is never an academic honesty violation, but violating academic honesty policies is a serious issue whether you do so knowingly or unknowingly.
You may not use your cell phone during class. You should turn off or at least silence your phone during class time. Using these devices distracts you and those around you.
You may use laptops or tablets for notetaking in class, but only during whole-class discussion periods. All laptops and tablets must be put away during lab time unless you have a documented accommodation that requires you to use a device other than the MathLAN computer you will share with your lab group.
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.
AI assistance tools like ChatGPT, Gemini, Claude, and GitHub Copilot are not permitted in this class. This prohibition also applies to the AI output presented at the top of Google search results. AI tools can do a very good job of imitating the work of beginning computer science students. Sometimes they even produce useful code that could help a professional developer work faster. However, because you are learning the basics, these tools are more likely to interfere with your learning than to support it. We may discuss productive ways to use AI assistance tools in class, but you should not use them unless you are given explicit permission to do so.
Submitting work produced by an AI tool without citation is a violation of the academic honesty policy and will be handled through the College’s formal academic honesty process. Submitted work that includes text or code produced by an AI tool (with citation) will receive an automatic zero and may not be eligible for resubmission.
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.
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.
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.
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.
You are responsible for keeping up with any information about the course that is distributed via this website or by email. The website is the definitive source for the course schedule and policies. I will send occasional reminders and announcements by email, so make sure you keep up with your inbox.
There is no required textbook for this course; all readings will be provided or linked from the course website.
There are many people working to support you in this course. They include:
The department can provide individual tutors on a limited basis. These tutors are only available at instructors’ request. Please meet with me if you are struggling in the class. If I think an individual tutor would be helpful I will make the requst on your behalf.
If you want a compact reference book, you may want to check out The C Programming Language, Second Edition, Prentice Hall, 1988, ISBN 0-13-110362-8 (paperback), 0-13-110370-9 (hardback).
Some students have asked for additional opportunities to practice C. One source of practice problems is HackerRank’s C practice exercises. You can work on syntax online and read other programmers’ problem solving approaches. But please be careful; not every proposed solution is correct!
Henry Walker, An Introduction to C Through Annotated Examples, available at https://walker.cs.grinnell.edu/~walker/c/examples/intro.pdf
The GNU make Manual, Free Software Foundation, 2006.
Henry Walker’s Debugging Hints.
Databases, journal articles, and more at the Grinnell Library