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 your instructor if you have any questions.
This course is taught in a workshop style. Your work related to most class sessions will proceed in four stages:
Some days will use a different format, notably days with quizzes or exams. Pay close attention to the course schedule to make sure you are prepared for each day of class.
By the end of the semester, students who complete CSC 161 will be able to:
const.This course includes several graded components, each discussed in more detail in the following sections:
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 7.5 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 the instructor 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.
Attendance is required for this course because the work we do in class contributes to your learning. Class will start promptly at the start time each day, thus you should be sure to arrive before class starts. If you are more than a couple minutes late you will be marked as absent. I will hold my end of the social contract by making sure we end class on time every day.
When you miss a day of class (excused or unexcused) 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. Mentors, evening tutors, and the instructor 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 a significant number of class days (including via excused absences) it may be difficult for you to meet the expectations for this course.
Additionally, if you miss more than one class period in a row without notice tothe instructor, you should expect to hear from the instructor and student advi
sing (via SAL). The goal here is not to scold you, but to make sure you’re aware of the situation and have the information you need to stay on track or withdraw from the course if completing it successfully is no longer feasible.
Excused absences Certain reasons for missing class are excusable provided you give notice. 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. Likewise, please let me know in the first three weeks about planned absences due to athletic events.
Additionally, you may be exused for emergency situations or if you are ill. You do not need to share any information about your illness or document your illness. Please communicate with me about your absence as soon as you are able. If you do attend class with respiratory symptoms, please consider wearing an N-95 mask to protect others.
Unexcused absences An excessive number of unexcused absences will impact your grade in the following manner. If you are unexcused for more than 3 days, you may not receive a grade higher than a B+ in our class. Similarly, if you are unexcused for more than 6 days you may not receive higher than a C+ in our class. Finally, if you are unexcused for more than 10 days, you may not receive a grade higher than a D.
In addition to attending class, you are also expected to participate productively in class activities. Participation accounts for 10% of your overall grade in the class. To participate in class you should:
Students who meet all of these expectations should expect to earn a participation grade of 90%. Higher participation grades are reserved for students who consistently go above and beyond in their work by shaping class discussion in productive ways, through exceptional support for their peers in class, and other positive contributions to the other students’ learning.
I will share an assessment of your class participation near the middle of the semester so you have time to address any areas where you may be falling short. If there are recurring issues with preparation or collaborative work we may need to talk earlier in the semester to make sure you are on the right track for the course.
Most days of class will include an in-class lab activity. 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.
The only work you will turn in for labs is a weekly lab report, 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 your instructor first.
Lab reports will account for 15% of your grade in the class. Each part of a lab report (usually corresponding to one day of class) will receive full credit, half credit, or no credit. Work that is correct or nearly correct with evidence of significant effort will earn full credit. Incomplete submissions or work that is incorrect with little evidence of further effort will earn half credit. Missing work or work that shows very little effort will earn a zero.
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 account for 20% of your grade in the class. The grading will differ from assignment to assignment, but homework will generally be evaluated with more attention to detail than lab reports.
Most weeks of class will include a ten-minute quiz on Fridays 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, provided you begin the process of scheduling a make-up quiz before your absence. In most cases, the best time to take the make-up quiz is before your planned absence.
Opportunities to take make-up quizzes will sometimes be limited and are not necessarily guaranteed, so please ask for make-up quiz times as soon as you know you will be absent.
Quizzes will make up 10% of your overall grade in the class. Your lowest-scoring quiz will be dropped when tabulating your overall quiz grade, so if you miss one quiz because of an unexcused absence or are unable to schedule a make-up quiz your grade will not be affected.
The class will include three in-class exams. Each exam will account for 15% of your overall grade in the class (so 45% total). The second and third exams will be targeted at recent material, but 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 please contact the instructor as soon as possible, and at least a week in advance. If you need to miss an exam because of an emergency or serious illness, contact the instructor as soon as possible. Make-up exam availability is not guaranteed, but may still be possible.
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 project or lab submission or a reduction in overall course grade.
If you find that you cannot make your schedule work with that of your assigned partner, contact the instructor as soon as possible to discuss possible solutions.
Students are expected to know and abide by Grinnell College’s Academic Honesty policy. For this class, collaboration is allowed on labs and homework assignments. This includes peers in class, tutors, mentors, and the instructor provided that collaboration is attributed. 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 achieved. 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 collaborate on 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 found 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 the instructor. The resources you can use include the textbook, 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 the instructor before class period if you intend to record during class time.
AI assistance tools like ChatGPT and GitHub Copilot are not permitted in this class. These 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 rather than to support it. We may discuss productive ways to use AI assistance tools in class, but please do not use them unless you are given explicit permission to do so. Submitted work that includes text or code produced by an AI tool will receive an automatic zero. Submitting AI tool output without citation is a violation of the academic honesty policy and will be handled through the College’s formal academic honesty process.
I encourage students with documented disabilities, including invisible disabilities such as chronic illness, learning disabilities, and psychiatric disabilities, to discuss appropriate accommodations with me. You will also need to have a conversation about and provide documentation of your disability to the Coordinator for Disability Resources, located on the ground level of Steiner Hall (641-269-3124).
Deadlines are shown in the Course Schedule, and work is due at 10:30pm on the date indicated. However, I will attempt to be as flexible as possible in accepting late work. I am aware that there are a number of things outside of your control that may affect your ability to complete work on time. Any lab or homework may be turned in up to 48 hours late without penalty, without prior approval (however I appreciate if you let me know if you plan to turn in work late). Assignments turned in more than 48 hours late, without prior approval (before the original due date) of the instructor will not be accepted.
Though I grant this flexibility, I highly recommend following the posted deadlines. Your lab partners depend on your contributions to learn new material and complete assignments. Please keep in mind that if you turn in work late, it may not be graded as quickly as you or I hope.
I reserve the right to grant class-wide extensions to stated deadlines under certain circumstances. For example, if the Linux network (MathLan) is down for a significant amount of time, or if there are difficulties with Gradescope.
It is my intention that students from all backgrounds and perspectives will be well served by this course and that the diversity that students bring to this class will be viewed as an asset. I welcome individuals of all ages, backgrounds, beliefs, ethnicities, genders, gender identities, gender expressions, national origins, religious affiliations, sexual orientations, socioeconomic backgrounds, family education levels, abilities, and other visible and invisible differences. All members of this class are expected to contribute to a respectful, welcoming, and inclusive environment for every other member of the class. Your suggestions are encouraged and appreciated.
This text is adapted from the LGBTQ+ Advocacy in STEM syllabus inclusion statement.
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.
Do your best to maintain a healthy lifestyle this term by eating well, exercising, avoiding drugs and alcohol, getting enough sleep and taking some time to relax. This will help you achieve your goals and cope with stress.
All of us benefit from support during times of struggle. You are not alone. There are many helpful resources available through campus and an important part of the college experience is learning how to ask for help. Asking for support sooner rather than later is often helpful.
If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, I strongly encourage you to seek support. Student Health and Wellness (SHAW) is here to help: call 641-269-3230 and visit their website. Consider reaching out to a friend, faculty, or family member you trust for help getting connected to the support that can help.
If you or someone you know is feeling suicidal or in danger of self-harm, call someone immediately, day or night:
This text is adapted from the Carnegie Mellon University’s Teaching Excellence Center information on supporting students.
The graded components for this course will contribute to your total grade in the following proportions:
Recall from the section on attendance that there is also a penalty that may be applied for unexcused absences.
There will be no curves or competitive grading in this course; every student has an opportunity to earn an A. Your letter grade will be determined with the following scale:
Tokens are meant to give you the opportunity to revisit work from our course that challenged you the first time around. Ideally our tokens will remove some of the pressure of “performance” in our course, since you may resubmit some things without penalty.
You may earn tokens by supporting your peers and being an active member of the Grinnell computer science community. Elligible opportunities will be listed at the start of each class. You will be limited to 6 total tokens, 3 supporting your peers and 3 attending academic events.
Revise Homework: You may use one token to resubmit a homework assignment. You may not resubmit a homework assignment which you did not turn in. This system is meant to encourage you to take a second look at concepts that you may have struggled with initially, not as a way to turn in things late. Homework problems in particular must show a good faith effort initally in order to be resubmitted.
Revise Exam Problem: You may use one token to revise one exam problem. After each of the first two exams, the instructor will announce which of the problems are elligible for revision, and you may choose to revise up to one of them. You are not allowed to obtain help from any person or resource other than the instructor, textbook, and course webpage(s). Include an academic honesty statement in your revision similar to ones that we use on homework and labs, listing any person you talked to about the problem and any resources you used.
Token Frequently Asked Questions
All work for the course is due by 5:00 pm on the last day of finals (12/20/2024). In exceptional circumstances, incomplete grades can be granted. Talk with your instructor if you think you might need an incomplete to complete all the requirements of the course.
The required textbook for this course is K. N. King, C Programming: A Modern Approach, Second Edition, W. W. Norton, 2008, ISBN 978-0393979503. This book is our primary source for readings and includes helpful reference materials in the latter portions of the book.
There are many people working to support you in this course. They include:
The department can provide individual tutors on a limited basis. If you are struggling in the class and you think an individual tutor would be helpful, please meet with your instructor. You should be prepared to discuss your current study habits for the class and any resources you have used so far.
You are responsible for keeping up with any information about the course that is distributed via this website, email lists, or Gradescope. The website is the definitive source for the course schedule and policies. Gradescope is the main location assignments will be turned in. Announcements and reminders may also be distributed by email.
If you want a more 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
Time management, study strategies, and other resources for students from Academic Advising
Information about emergency funds, textbook lending library, student food pantry, and loaner laptops from CRSSJ