Syllabus


Course work: Course Format Learning Outcomes Course Components Submitting Work Anticipated Work Load
Resources: Instructor Beyond the Instructor Reference Materials In-class Slides
Collaboration: Pair Programming Pair Responsibilities Academic Honesty
Course Policies: Attendance and Late Policy
Religious Observance
Technology Usage Accommodations Inclusion Policy Grading
Extra Credit
Incomplete Grade Policy
Misc: A Note on Typos Take Care of Yourself Syllabus Acknowledgements

CSC 161 is the second course in Grinnell's 3-course, introductory computer science sequence

The course explores elements of computing that have reasonably close ties to the architecture of computers, compilers, and operating systems. The course takes an imperative view of problem-solving, supported by programming in the C programming language. Some topics include:


Part 1: Course Work


Course Format and Activities

This course follows a lab-based format. Thus, work related to [almost] all class sessions proceed in four stages:

  1. Read Before Class: Reading assignments will incorporate both assigned readings from the textbook and online readings linked from each module. Textbook readings are assigned on most days, and those assignments can be found noted on the schedule. Online readings are linked from the module(s) for most days. Students are expected to complete assigned readings prior to each class session. Each student should prepare a list of questions or topics for class discussion, should questions arise on the reading.

  2. Short Lecture and Q & A Session: There is generally a 15 to 20 minute mini-lecture on the topic for the day. I try to clarify challenging material and highlight the most important points from the readings. However, all material in the assigned reading, including textbook examples, may appear on quizzes and tests. The PowerPoint slides for the day are linked before class so that you have them for note-taking during class (printouts or load onto a tablet for annotation).

  3. Ask Questions and Work on Lab during Class: Each class will begin with questions from students, based on the reading. Following this initial discussion, the course may involve some opening comments or a short quiz on the reading. After these preliminaries, students will work collaboratively, in pairs, on a lab exercise based on the reading.

  4. Finish Lab for Homework: Although the in-class labs will help students get started on the lab exercises, students might not be able to complete the lab during the class period. Any lab work not completed during class should plan be finished as part of homework. I will assign lab partners, with pairings changed approximately every class period.

In addition to an in-class, lab-based format throughout the semester, additional homework is assigned to provide additional practice and to suggest a range of applications.

Learning Outcomes

By the end of the semester, students will be able to:

  1. In the context of low-level, systems programming:
  2. Architect and analyze stateful programs:
  3. Productively develop software within a Unix-style command-line interface (CLI):
  4. Architect programs that effectively combine aspects of pure and stateful program design.
  5. Apply strategies for collaborative problem solving to work productively with others.
  6. Identify the three primary memory safety issues that arise in C programs: access errors, memory leaks, and uninitialized values.
  7. Reason about the data representation and behavior of existing programs:
  8. Author small, memory-safe programs that interact with the world:
  9. Author sequential data structures and fundamental operations over them:
  10. Apply tools, e.g., debuggers and dynamic memory analyzers, to assist in the creation of correct, memory-safe programs:

Course Components

Course work contributing to your final grade will involve a combination of several activities. Submission instructions vary somewhat according to the type of the assignment.

Anticipated Work Load

As noted above, this course includes a variety of activities, including class preparation (reading), labs and projects (started in class and finished for homework), and homework problems, as well as quizzes, tests, and a final exam. From past experience, the time required for these activities will likely vary substantially from student to student and from one part of the course to another. For example, a student may need to devote considerable time and effort when starting a new or different topic, but the workload may drop noticeably when that material is mastered.

Such variation in student experiences complicates any estimation of the time individual students may need to devote to homework for this course. However, from past experience, students working steadily on the course likely should expect to allocate 10-15 hours per week to this class. Some students may require additional time for some weeks; some students may complete work in less time for some weeks. Conversations with computer science faculty and others suggest this time allocation is consistent with expectations for many courses at Grinnell College.


Part 2: Resources


Instructor

Nicole Eikmeier (pronouns used: she/her)

Beyond the Instructor

Beyond the course instructor, this class has a number of other resouces to help you succeed. Each class has a student mentor. Our mentor will attend class each day and assist with labs. Mentors will also hold weekly mentor sessions to solidify course material and help you prepare for upcoming assessments. Our mentors for each section this semester are:

Mentor sessions this semester will be held at TBD.

The Grinnell Computer Science department also employs students as evening tutors. Please refer to the Academic Honesty section of the syllabus to understand how evening tutors may help with labs and homework. Evening tutors are available this semester at the following times in Noyce 3813: Sunday 3-5pm, Sunday-Thursday 7-10pm.

If you find that you still need more help in this course, the department also employs students as individual tutors, and these are available on a limited basis. The procedure for obtaining an individual tutor is to first talk with me. Please note that I will inquire about your current study habits for the class including your use of office hours, mentor sessions, and evening tutors.

Reference Materials

Required Textbook

K. N. King, C Programming: A Modern Approach, Second Edition, W. W. Norton, 2008, ISBN 978-0393979503.

King often covers details that are not in the online readings, especially regarding the evolution of the language. Students in prior semesters have noted that King's examples are very good illustrations of the concepts being discussed, but the writing style for the prose can be difficult.

Readings and examples for this course are under development. As noted in the day-by-day schedule, complete readings, examples, projects, and labs are available for most class sessions throughout the semester.

Additional References and Resources


Part 3: Collaboration


Pair Responsibilities

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 working in paired programming situations. However, to be successful, collaboration requires partners to actively participate.

Failure to meet one's responsibilities to a group not only impacts the individual, but also impedes the education of the partner. 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 a change in partners.

Academic Honesty

Students are expected to know and abide by Grinnell College’s Academic Honesty policy. In addition, in this course, it is my expectation that students may collaborate (with each other, with mentors, with tutors, with the course instructor) on labs and homework, however your collaboration must be attributed. Collaboration is not allowed on quizzes and exams.

When you work in a group on a lab, the names of all students in the group should appear 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, it is my expectation that your solutions are written individually. For example, you may work at a whiteboard with classmates or evening tutors to develop ideas, and then type up code individually. Evening tutors can also help you debug. No-one other than you should be typing any portion of your solution. In any case, help should be attributed in the academic honesty certification.

I know that there is great temptation to look for answers and ideas online when things get difficult, however you may not use any online materials besides those found on our course webpage (this includes ChatGPT, GitHub Copilot, websites that gather homework solutions, among many other resources). I will provide you with numerous resources to get help which include office hours, group class work, mentor sessions, and evening tutors. It is my hope that these resources ease some of the pressure that you might feel to look online. If you have questions about how a particular assignment relates to the college or course academic honesty policy, or how to attribute your collaboration, I will gladly consult with you in advance of the assignment’s due date.


Part 4: Course Policies


Attendance and Late Policy

I highly encourage you to attend all class sessions. Attendance affects your learning in this course, and thus affects your grade. If you know in advance that you will miss class due to a college-sponsored sport or a religious holiday, please let me know in the first two weeks of the semester. If you have another emergency come up, please let me (or the college) know when safe for you.

This class moves along at a pretty brisk pace after the first few days, and it is essential that you stay on top of class preparation, in-class labs, and handing in homework and projects. Your classmates and weekly lab partners depend on your contributions to learn new material and complete the required work for this course. Don’t let them down! You are expected to arrive on time and participate actively in every class. I will aim to have your reading assignments and lab work visible a week before class so that you can read ahead.

Deadlines are shown on the Class Schedule , and work is due by 10:30 pm 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. Please refer to the Anticipated Work Load statement, to emphasize that you should attempt to follow the posted deadlines. Please keep in mind that if you turn in work late, I may not be able to grade it 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.

Religious Observance

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

Technology Usage Policy

Cell phones, text-messaging devices, and other social-networking connections may not be used in this class. If you bring such equipment to the classroom, it must be turned off (or at least, silenced) before the class starts and stay off throughout the class period. Use of such equipment is distracting to those nearby.

Also, do not use your laptops or iPads to watch videos unrelated to the class material - I will ask you to put them away. You MAY use them to access course materials while working on labs.

Materials you have obtained from this course including homework, quizzes, and exams should not be distributed outside of the members of our class. Live synchronous sessions should not be recorded by students.

Using text or code generated by ChatGPT, GitHub Copilot, or any other Artificial Intelligence and submitting it as your own work is in violation of our academic honesty policy.

Accommodations

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

Inclusion Statement

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 background, family education level, ability – and other visible and nonvisible 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.

Grading

This instructor's grading philosophy dictates that the final grade should ultimately be based upon each student's demonstration of their understanding of the material, not on the performance of the class as a whole. The following scheme is used as a base for how the various assignments and tests will be counted in the final grade.

Lab Write-ups:
20%    
Homework:
20%    
Quizzes:
10%   
Midterms & Final:
45% (15% each)    
Best Individual: 5% (best of average homework, average quiz, or average exam)

Regarding Attendance & Participation, recall from the course components that you will be marked as S or NS for each of the 41 class days. Attendance and Participation affect your grade, but only by penalty. If you receive an NS for more than 3 days, you may not receive a grade higher than a B+ in our class. Similarly, if you receive an NS for more than 6 days, you may not receive higher than a C+ in our class. Finally, if you receive an NS for more than 10 days, you may not receive a grade higher than a D.

Letter grades will be assigned by this schema:

Percentage Letter Grade
94 - 100 A
90 - 93 A-
87 - 89 B+
84 - 86 B
80 - 83 B-
77 - 79 C+
70 - 77 C
60 - 69 D
0 - 59 F

You may notice gaps in this table. If your grade falls in a gap (such as 83.5%) at the end of the semester, it will be at the instructors discretion whether to round up or down.

Extra Credit

To encourage you to support your peers and be an active member of the Grinnell community, I will award extra credit for attending certain events. You can earn extra credit for up to six activities (three academic and three peer support). Elligible extra credit opportunities will be announced at the start of class each day.

For each extra credit activity you complete, you will gain an opportunity to re-do one problem of your choice from a Homework or Exam. More details about this process can be found our page about Extra Credit.

Incomplete Grade Policy

All work for the course is due by 5:00 pm on the last day of finals (12/15/2023). In exceptional circumstances, incomplete grades can be granted. Talk with me if you think you might need an incomplete to complete all the requirements of the course. Please be aware that granting incompletes this semester will be particularly challenging for me.


Part 5: Misc.


A Note on Typos

Planning and development of materials for this course represent an extensive effort:

Although the developers have read, re-read, and refined the materials extensively, one can be confident that typographical errors remain.

If you find an error, if something does not read well, if deadlines on one page do not seem to match those stated on another page, etc. — don't panic (or use colorful language). Rather, please talk to the instructor (nicely please). I usually have my laptop computer handy and can change it while you work on the day's lab. Thanks!

Take Care of Yourself

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:

Syllabus Acknowledgements