Syllabus

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.

Course Basics

Learning Outcomes

By the end of the semester, students who complete CSC 161 will be able to:

  1. Work collaboratively with others to solve problems in a low-level imperative language.
  2. Work productively in a UNIX-style environment by navigating and manipulating the filesystem, running programs, and searching documentation through a command-line interface.
  3. Write programs using imperative control flow and side effects.
  4. Write programs that interact with the world through user input and output as well as files.
  5. Explain the binary representation of integers and floating point numbers.
  6. Write programs that manipulate binary data using shifting and bitwise operations.
  7. Write memory-safe programs using strings, arrays, pointers, and structures.
  8. Use common development practices to work comfortably in C, including Makefiles and separate compilation.
  9. Identify and correct errors in C programs manually and with tool support.
  10. Implement sequential data structures and their fundamental operations using dynamically allocated arrays and linked lists.
  11. Use common strategies to design and implement memory-safe C programs, including memory ownership and const.
  12. Reason about the data representation and behavior of existing programs.
  13. Analyze stateful programs using preconditions, postconditions, invariants, and runtime assertions.

Workload

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.

Coursework

This course includes several graded components. These components will contribute to your final grade in the following propotions:

Participation
10%
Weekly Labs
15%
Individual Homework
25%
Final Project
10%
Weekly Quizzes
10%
Exams
30%

The following sections discuss each graded component in detail.

Participation

You are expected to attend and participate during class. To participate in class you should:

  • Prepare for class by completing assigned readings
  • Arrive on time and stay for the entire class period
  • Actively engage in whole-class discussions and activities
  • Work respectfully and supportively with classmates

Students who meet all of these expectations should expect to earn a participation grade of 90%. Participation grades above 90% 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.

Over a semester with 27 non-exam class meetings, each day of class is worth 3.33% toward your participation grade. Because participation contributes to 10% of your overall grade, that means each day of class is worth a third of a percent toward your total grade.

Missing Class

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.

Weekly Labs

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 work 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

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 25% 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.

You may choose to submit homework assignments late, but there will be an automatic 20% penalty for your grade on the assignment. In other words, if your work would have earned 100% for an on-time submission it would receive an 80% after the late penalty. Late homework can be submitted up to one week past the original deadline. After that point, late homework cannot be submitted for credit.

Final Project

The semester will conclude with a final project that takes the place of an individual homework assignment. The final project will be less prescriptive than homework assignments; you will have choices to make about the work you complete. You will also have the opportunity to work with a group on the final project, although you may choose to work individually if you prefer. You can read more on the final project page.

Quizzes

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. Quizzes will make up 10% of your overall grade in the class. I will drop your lowest-scoring quiz when tabulating your overall quiz grade.

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.

Exams

The class will include two in-class exams. Each exam will account for 15% of your overall grade in the class (so 30% total). 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.

Letter Grades

There will be no curves or competitive grading in this course; every student has an opportunity to earn an A. I will use the following scale to translate percentages to letter grades:

A
93–100%
A-
90–93%
B+
87–90%
B
83–87%
B-
80–83%
C+
77–80%
C
70–77%
D
60–70%
F
0–60%

Course Policies

Collaborative Work

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.

Academic Honesty

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 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 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 and textbook. 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 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.

Technology Usage Policy

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 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 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.

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.

Resources

Course Website and Email

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.

Textbook

The required textbook for this course is K. N. King, C Programming: A Modern Approach, Second Edition, W. W. Norton, 2008, ISBN 978-0393979503. The course schedule lists readings from this text as well as online resources that can help you with course material.

Course Staff

There are many people working to support you in this course. They include:

Your Instructor
Ask questions during class and arrange times to meet during office hours. You can also contact me by email if you have questions that do not require an office hours appointment.
Class Mentors
Your section’s class mentor is there to help you during class. You can also attend mentor sessions, which will often be led by mentors from the other sections of the course.
Evening Tutors
The Department has evening tutors who can help with material from this course. Many students arrange times to work during evening tutor sessions so they can ask questions when they get stuck.

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 woudl be helpful I will make the requst on your behalf.

Additional Resources