CSC 161 Imperative Problem Solving and Data Structures

Spring 2 / 2021

Synopsis: This class broadens your means of "computational thinking" as a method of solving problems. With daily labs that help you become progressively fluent in a low-level programming language and its data representations, you will practice the design and analysis of algorithms, recognizing and creating abstractions, and manipulating important information structures.
Instructor: Jerod Weinman
E-mail: [weinman]
Mentors: Dongze (Lyn) Ye & Eamon Worden
E-mail: [] & []
Virtual Office:
Course web page:
Class meetings:
MTWF 1:00-2:50 pm


1  Accommodations
2  Overview
3  Textbook
4  Assignments and activities
    4.1  Reading: Participation Activities
    4.2  Class: Challenge Activities
    4.3  Homework: Lab Activities
5  Deadlines
6  Grading
7  Attendance
8  Academic honesty
9  Getting help
    9.1  Peer educators
    9.2  Discussion with Piazza
    9.3  Office hours
    9.4  Email
    9.5  Academic alerts

1  Accommodations

If you have any disability that requires accommodations, please meet with me right away so that we can work together to find accommodations that meet your learning needs. You will also need to provide documentation of your disability to the Coordinator of Disability Services, John Hirschman, located on the 3rd floor of the Rosenfield Center (x3124).

2  Overview

The official catalog description reads:
CSC161 emphasizes concepts closely tied to the architecture of computers, compilers, and operating systems, such as macro processing, compilation and linking, pointers and memory management, data representation, and software development tools. Additional topics include assertions and invariants, data abstraction, linked data structures, an introduction to the use of the GNU/Linux operating system, and programming in a low-level, imperative language. Includes formal laboratory work.
This means that you'll be introduced to the C programming language, learning how to adequately describe and decompose problems of a computational nature so that you can effectively tell a computer the steps it should take to solve the problem. We will study some beginning concepts that make this process possible, easier to undertake, and often elegant.
Our major objectives for this course include: Practically speaking, our topics will include:
*  Why take it?
Understanding another computational paradigm will increase your problem-solving abilities. Learning how your programs connect to the underlying representation and physical machine will give insight to their behaviors and limits.

3  Textbook

The operation of the course (detailed in the next section) is inseparably tied to our digital textbook, which is required. To acquire it,
  1. Sign in or create an account at
  2. Enter the zyBook code: GRINNELLCSC161WeinmanSpring2021
  3. Subscribe
The cost is $77. Subscriptions will last until Jun 08, 2021..
The publisher has a list of FAQs here:

4  Assignments and activities

This class will be taught in a workshop style with extensive collaboration. Some days we will work through problems or concepts together in an interactive fashion. Most days you'll work on solving small problems in discussion with another student.
To make class time most valuable for you, I do not plan to lecture on material that is covered in the reading. Instead, because experimenting and practicing is the best way to learn, you'll have the opportunity to ask (and answer) questions and then begin working collaboratively on the day's challenge exercises, with the instructor and class mentors available to provide assistance.
Grinnell College expects you to work a total of 180 hours for a 4 CR course. Over our 7.5 week term, that total amounts to 24 hours of work per week for this course. We will spend eight of those weekly hours in synchronous meetings where you will have the opportunity to ask questions and work on a form of "homework" called challenge activities (CAs). You will need to spend the remaining sixteen hours of your weekly work reading and completing participation activities (PAs) as well as applying your knowledge to solve problems in lab activities (LAs). Each of these is described in more detail below.

4.1  Reading: Participation Activities

Daily readings are assigned, mostly from the textbook with some from additional course web pages or eReserves.
These important readings are often brief, but dense, introducing non-trivial ideas. You should plan to spend at least an hour each day working on the material in the readings before class. At the end of the hour, you should be ready to discuss in class the material from the reading that is most important and that which may be most confusing to you. Thus, you should consider answering the following questions to be part of your daily preparation: It is also extremely helpful to read the material no later than the night before class. Studies have shown that a little bit of forgetting between when you try to recall the information (like we will do at the beginning in class) can actually help you remember it better in the long run.1
For most readings, the electronic textbook includes exercises designed to engage you with that day's learning objectives. Completing these participation activities (PAs) is required. Notably, completion must lead to eventual correctness, as this formative work is part of the learning process, and the textbook will offer helpful explanations when you answer incorrectly. Here is what the publisher has to say about them:
A participation activity (PA) is usually an animation or learning question, for which a student's completion is visible to an instructor, and for which any student can get 100% completion just by participating. An animation's steps just need to be viewed. A learning question must simply be eventually answered correctly, and answers are available to students.
Participation activities are NOT homework problems or quizzes. Nor are PAs supplementary to the text. PAs are an integral part of the reading material. Many concepts only exist in PAs. The questions' explanations are key elements, especially for wrong answers that seek to break down misconceptions (a proven-important part of teaching).
Sarah. (2020, Jan 19) About zyBooks.
You should also note that your answers are not stored after you submit them. Thus, you are able (and even encouraged) to complete them again as part of your study and practice. However, once they are completed correctly, you retain credit for having done so.
Although PAs for the week are not due until the last class of a week, you are expected to complete all PAs for the day's reading before that day's class.

4.2  Class: Challenge Activities

Like playing an instrument or speaking a foreign language, the only way to become proficient is to practice, practice, practice!
Thus, most sections of your reading feature ways to concretely apply your knowledge via challenge activities (CAs). The publisher explains:
A challenge activity (CA) requires the student to answer correctly, without us giving away the exact answer. A CA is comparable to traditional homework: Small tasks that give students practice. In education lingo, they are formative assessments. CAs give immediate feedback, aiding learning. Some CAs are algorithmically-generated. Some provide solutions if a wrong answer is entered, requiring the student to then answer a different problem. Some are "progressions," algorithmically-generating an easy problem initially and increasing in difficulty (usually 3-5 levels) after the student gets a level right.
Sarah. (2020, Jan 19) About zyBooks.
Unlike PAs, please DO NOT complete these CAs before coming to class. You will work on these collaboratively during our class meetings; I will randomly assign in-class lab partners that rotate regularly.
You might not complete the exercises during class; you will be required to complete these CAs outside of class to be sure you are engaging in all the course material. At which point you may complete them individually or in discussion with peers from the class or with assistance from tutors.
Like PAs, you may not be able to see your previous solutions to some CAs, thus inviting you to solve them again. However, once they are completed correctly you retain credit for having done so.

4.3  Homework: Lab Activities

Homework assignment problems, known as lab activities (LAs) extend the range of problems considered in the course and help sharpen problem-solving skills. To support this objective, all homework problems are to be done individually.
You may ask the instructor about any part of the course (including any homework problem) at any time. However, you must not discuss LAs with other students (e.g., students from the class, CS majors, or any others), except for your peer educators (i.e., the CS evening tutors). Allowable help from peer educators is more limited for LAs. See Allowable Help from Peer Educators
Although several LAs are due each week on the previous week's material, you should read and begin working on them as you are able. You should not leave them all to the last moment.

5  Deadlines

Work is due by the time and date specified in each assignment. The specific problems and deadlines for each assignment are given within the zyBook "Assignments" panel. The three categories of activities each have regular deadlines.
Activities Deadline
Participation (PA) Fridays, 1 pm
Challenge (CA) Mondays, 1 pm
Lab (LA) Wednesdays, 10 pm
Assignments due on days for which you have a prior excused absence must still be completed by the deadline.
You will not need to submit PAs and CAs, as correct completion constitutes their submission. However, LAs do have an explicit "Submit for Grading" button that you will need to use. You can read more about these mechanisms here:
No late work will be accepted. Do note that each assignment features a variety of activities, and there are multiple assignments. Your strategy should therefore be to complete what you are able. In the event you do not complete an assignment, this policy encourages you to move on, so as not to fall (further) behind.
More importantly, if you find your self stuck after 10-15 minutes on any particular item in a Lab Activity, you should move to a different question, returning to it after a break (or you have completed the remaining problems). If you remain unable to make progress on a problem after returning to work on it for about another 10-15 minutes, you should ask for help and move on to other problems.
Exception: Deadlines for assignments involving programming will automatically be extended by at least 24 hours if zyBooks is down or significantly slowed for an unscheduled period of 3 or more hours during the two days preceding the assignment due date.2

6  Grading

My goal is for everyone taking this course to be able to demonstrate familiarity, fluency, and excellence with the course concepts. I would be very happy if you all met the goals above and received "A"s. The following weighting of individual activities will provide a basis for evaluation.
Participation Activities 15%
Challenge Activities 35%
Lab Activities 50%
Some work may be graded by someone other than the instructor. However, all questions or concerns about grading should only be directed to the instructor.
The following is proposed as the grading scale for the course.
Average % Receives Grade Points Definition
93-100 A 4.00 Excellent
88-92 A- 3.67 Excellent
85-87 B+ 3.33 Good
81-84 B 3.00 Good
78-80 B- 2.67 Good
74-77 C+ 2.33 Satisfactory
68-73 C 2.00 Satisfactory
55-67 D 1.00 Passing
0-54 F 0.00 Failing
To compensate for the unpredictability of learning exercises' outcomes, the numerical brackets (in the left column) may be adjusted downward (i.e., to the students' advantage).

7  Attendance

We will attempt for the course to be entirely inverted. You are expected to read (and think about!) the textbook material before coming to class, where our meetings will involve a mix of discussions and collaborative activities (e.g., response questions and exercises from the text). In short: You are expected to attend and actively participate in class. I am expected to make class worth attending.
Because our synchronous class meetings are based on collaborative problem solving, your presence is integral to your learning.
Although class sessions will be recorded for those unable to attend, and I will not explicitly grade based on your attendance, I want to be abundantly clear that I do expect you to attend our synchronous meetings.
If you miss a session for any reason, I would appreciate a note from you acknowledging that fact. I strongly prefer you notify me before class. (After all, you wouldn't call in sick for work at the end of the work day.)
You do not need to give me a reason for your absence (I understand that current circumstances present innumerable complexities), but I want to ensure you are heeding the fact that you will have (make-up) work to do in order to meet our desired learning outcomes. You should expect to hear from me if I find you missing significant amounts of class, particularly if you are not communicating with me about it.
Our discussions (and your learning) benefit from your contributions, so I trust you are making every effort to attend. However, if you do miss a class, you must first review the recorded session and discuss with a classmate your questions about any material that you may have missed. After that, you may follow up with the instructor about any further questions or concerns.

8  Academic honesty

You are members not only of the academic community, but an intellectual community of technology innovators and practitioners. Both the College and I expect the highest standards of academic honesty and respect for intellectual property, as explained in the Grinnell College Student Handbook,\#Honesty_in_Academic_Work.
Among other things, this means clearly distinguishing between work that is your own, and work that should be attributed to others. This includes ideas, examples, and code that you draw from textbook readings, the wider web, and your student colleagues, tutors, and mentors
It is expected that the collaboration policies given in this syllabus, on particular assignments, and in the allowable help from peer educators will be followed. In addition: 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 there can be no recourse with me.

9  Getting help

9.1  Peer educators

Our course mentors will hold weekly evening mentor sessions to review, connect, and/or go further in-depth on the course topics.
The Computer Science Department makes tutors for CSC 161 available for drop-in help in the "drop-in tutoring" channel in the CS Team, (Sundays 3-5 and 7 10 PM, Mondays-Thursdays, 4-7 PM).
Peer tutors may also be available for regular, more intensive one-on-one tutoring. As the course gets underway, please let me know if you are interested in regular weekly individual tutoring. I may also recommend individual tutoring.

9.2  Discussion with Piazza

For online class discussion or Q&A we will use Piazza, which is designed to get you help fast and efficiently from your classmates, mentors, and myself. Rather than emailing questions, please to post your questions on Piazza: You must ensure your queries and responses respect the academic honesty and collaboration policies for the course and specific problem.

9.3  Office hours

Please come by during my office hours to discuss the course content, get any extra assistance, or just talk about how the course is going. Note that if multiple students have similar questions or issues, we may work together as a group. If you cannot attend a scheduled office hour, you may also email me to schedule an appointment; please include 3-4 possible meeting times so that I can find one that works for my schedule as well as yours.

9.4  Email

Email is also a reliable way to contact me, but please allow 24 hours for a response (except on weekends, when I do not read email as regularly).

9.5  Academic alerts

Because I value your success as a student in my course, there may be times when I reach out to our Academic Advising staff if I notice you experiencing difficulties. For instance, if you miss more than one class, do not turn in an assignment, or fail an assignment or exam, I will submit an academic alert using the college s SAL system.
I will do my best to notify you ahead of submitting an alert but may need to act quickly depending on the circumstances. The academic alert is a way for us to invite one or more trained professionals on campus to work in partnership with you and me to address these difficulties and to ensure your ultimate success in the course and at Grinnell.
You are always welcome to reach out to me if there is a significant issue impacting your learning, and I will be happy to help you connect directly with campus resources.
Thanks to Janet Davis, Sam Rebelsky, and Henry Walker for many elements of this syllabus. Thanks to Angelo Mercado and Cynthia Hansen for the section on academic alerts.


1Soderstrom, N.C., & Bjork, R.A. Learning versus performance, (2013) in Dunn, D.S. (ed.). Oxford Bibliographies in Psychology (New York: Oxford University Press).
2The zyBooks status board will be used to adjudicate the timing of the issue.
More precisely, I am subscribed to status updates, and I'll use the time stamps on those updates, since they disappear into the synopsis once the issue is resolved.