(Last updated: 12 March 2021)

Syllabus

Due to the rapidly changing world that we find ourselves in, the policies of this syllabus are perpetually subject to change. Non-trivial changes to course policies will be announced in class in addition to being reflected in the syllabus online.

Overview

How do we harness the power of modern-day computation to solve problems? Why is computation so pervasive in this information age? What is this field, computer science, that drives much of this innovation?

To address these questions, we will introduce you to the basics of computational problem-solving: describing and decomposing problems of a computational nature so that we can implement their solutions with a computer. We will demonstrate that computational problem-solving is the essence of computer science and is an essential first step in understanding the discipline and its effects on society. By the end of this course, you should be able to:

  • Describe the fundamentals of computer science: algorithms, data structures, and abstraction.
  • Read and write computer programs in the small in the Racket programming language.
  • Solve problems using design strategies from functional programming: functional decomposition, computational pipelines, and recursive decomposition.
  • Carry out the basics of the software engineering process: design, documentation, development, testing, and debugging.

In addition to these primary outcomes, we also expect you will take away more general skills and knowledge related to the discipline:

  • Describe the benefits of collaboration in problem-solving and employ best-practices when working in groups.
  • Describe at a high-level why computer science is pervasive in the age of information.

Digital humanities

Computational thinking and computational techniques can be applied to a wide variety of domains. At Grinnell, we have a tradition of picking a domain or “theme” for each offering of CSC 151. The theme for this semester is the Digital Humanities, the application of computational techniques towards solving problems in the humanities. Because the humanities encompass a multitude of disciplines—languages, cultural studies, and performing arts—the problems we solve in this space are necessarily diverse. However, there exists a common thread among the solutions employed: the analysis and visualization of large amounts of data, frequently textual. We will pay particular attention to this approach to problem-solving and survey its applications to the digital humanities.

Why take CSC 151?

Basic knowledge about solving problems computationally is useful in careers involving every major and concentration offered at Grinnell. This course outfits you with some versatile concepts applicable to other programming languages and environments you will encounter in the wild. Finally, you have the opportunity to be creative in many ways, from problem solutions to finding new approaches to data. Creativity is highly encouraged!

Important Notices

  • Experience shows that CSC 151 exercises different parts of your brain than other courses (even other math and science courses). Expect some challenges, but have confidence that you can work through them and that you’ll come out of the course with much more knowledge.
  • Like learning a foreign language, learning in this course is cumulative: new ideas often build on ideas from earlier. If you feel like you’ve missed something important, please get in touch with the course staff as soon as possible for assistance!
  • Computers have no common sense or compassion. They are complex, and sometimes they do things we don’t expect. When things go wrong, don’t blame yourself. Ask your instructor, your mentor, or a tutor for help.

We are also using software developed at Grinnell and may still have some bugs lurking within. Thus, you should develop a habit of saving your work frequently!

Course and College Policies

Workload

You can expect to spend 24 hours per week on this course, including all in-class and out of class time. This number is based off of the Grinnell Guidelines for credit-hours, accounting for our “double speed” this semester. This is a significant amount of time!! I would not expect you to be able to complete things last minute, so we will work together on planning and organization. If you find yourself working much more than the expected amount in this course, please let me know. It could be that other approaches, or better support resources, can help.

Technology Usage Policy

Materials you have obtained from this course including lecture videos should not be distributed outside of the members of our class. Live synchronous sessions should not be recorded by students. I will record and distribute our synchronous sessions. During synchronous sessions, I encourage you to turn on your video in order to help us build a sense of community. Recordings of courses will be deleted and no longer available once the course finishes. Assignments and their solutions may not be uploaded to any third party website (excluding gradescope). Finally, an online course requires all of us to be generous and supportive. Be extra thoughtful in our online spaces with the words that you choose.

Incomplete Grade Policy

All work for the course is due by 5:00 pm on the last day of finals (05/25/2021). 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.

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.

Students with Disabilities

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, John Hirschman, 641-269-3089.

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.

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:

  • Need to Talk Line: 641-269-4404 (available 24/7 for counseling needs)
  • 24/7 Suicidal Hotline: 1-800-273-8255
  • If the situation is life threatening, call 911

Evaluation and grading

This course employs a grading system based on mastery grading and specifications grading to evaluate your work. These systems, inspired by adult learning theory, are designed to create a “low-threat” learning environment where:

  • Mastery obtained via exploration, experimentation, and failure is encouraged and valued as highly as “getting it right” the first time.
  • Your final grade accurately reflects your mastery of the learning goals of the course.
  • The expectations for grades should be easy to understand and easily trackable.

As a consequence of this model, at any point in the semester, you should know approximately where you stand in the course and what work you need to put in to earn the grade of your choosing. (Although, that work will likely be challenging!)

Ideally, all of you should be able to meet all of the goals in a reasonable amount of time (see the note about time and workload above).

Deliverables

There are four sorts of deliverables I use to assess your mastery of the material. Details on the S/N and E/M/R/N scales can be found on the grading page.

  • Reading problems: quick assessments of the concepts found in the daily reading in preparation for in-class activities. To earn an A, one should show appropriate work on most of the reading problems for the semesters. Graded on S/N scale
  • Lab exercises: practice problems worked on during class, frequently collaboratively, with a partner. To earn an A, one should turn in most of the lab exerises. Graded on S/N scale.
  • Mini-Projects: individually completed, small-scale programming projects that apply the weekly concepts to the themes of the course. (We may, on occasion, refer to “mini-projects” as “demos”, using the terminology from the prior term.) To earn an A, one must do an excellent job on most mini-projects. (You will be able to re-do any project that earns less than excellent.) Graded on E/M/R/N scale.
  • Learning assessments: individually completed problems that directly assess your mastery of the learning goals of the course. To earn an A, one must pass learning assessments for 26 of the 28 learning objectives. (You will have the opportunity to retake any of the learning assessments you do not pass.) Graded on S/N scale.

Reading problems and lab exercises are designed for you to practice and explore the concepts of the course in a supportive environment. Consequently, you may collaborate on these problems with your classmates, consult external resources, or ask the course staff for questions, provide that you cite them in your produced deliverable. These deliverables are checked primarily for completion and effort rather than total correctness.

Mini-Projects and learning assessments are designed to demonstrate your mastery of the material and the course’s learning goals. You may only discuss these deliverables with the course staff. These deliverables are checked extensively for both correctness and appropriate design.

Letter grades

Letter grades for the course are determined by bundles, a collection of required grades for each of the deliverable categories. You will receive the grade corresponding to the bundle for which you meet all of the requirements. All bundles list minimum amounts, you may exceed the requirements for a bundle and still qualify for it.

Note that I reserve the right to update requirements for grades as circumstances dictate over the course of the semester, e.g., if a deliverable is cut. I will always update the requirements so that they are approximately as strict as they were previously.


(Last updated: 19 May 2021)

Overall Readings (25) Labs (24) Projects (5) LAs (26)
C 13xS 17xS 2xR+, 2xM+, 1xE 20xS
B 17xS 17xS 1xR+, 2xM+, 2xE 22xS
A 21xS 21xS 1xR+, 1xM+, 3xE 24xS
  • D: 3 requirements of a C are met.
  • F: 0–2 requirements of a C are met.

Plus/minus grades

To earn a plus/minus grade, you must have completed the requirements of one tier and meet the requirements of the next tier for at least one of Projects and/or LAs. This will arise in two situations: C/B and B/A. For example, you may completely meet the requirements of a C and at least one of Projects and/or LAs is a B.

  • If both projects and LAs fulfill the requirements for the next tier, then you earn a minus grade for the higher tier, i.e., B- if you are between a C and B.
  • Otherwise, one of Projects and LAs fulfill the requirements for the next tier. If all of readings and labs fulfill the requirements for the next tier, you earn a minus grade for the higher tier, e.g., B- if you are between a C and B. Otherwise, you earn a plus grade for the lower tier, e.g., C+ if you are between a C and B.
  • Note that Grinnell does not award C- or D+ grades.

Tokens

Tokens reflect that life inevitably rears its ugly head in some fashion and ruins your best-laid plans. You begin the course with 3 tokens, and you may:

  • Spend 1 token to turn in any reading problem or lab exercise late.
  • Spend 1 token to revise a project marked as an N (which, otherwise, counts as normal towards your turn-in limit for the current window).
  • Spend 1 token to turn in projects for the current project window one or two days late (i.e., up to 48 hours).
  • Spend 1 token to turn in the first redo one or two days late.
  • Spend 1 token for a second redo on any project.
  • Spend 2 tokens to turn in a resubmission for a project you never submitted.
  • Spend 1 token to show up to class late (after we take attendance).
  • Spend 2 tokens to miss class without reasonable notification.

To use a token, please DM or email me when you intend to use a token so that I can let the graders know to look for the additional deliverable to grade. (You may still have to remind me.)

There will be opportunities to earn additional tokens throughout the semester by participating in extra-curricular activities such as attending CS community events—CS Table (most Mondays at noon CST) and CS Extras (most Thursdays at 5:00 p.m. CST). To earn a token, attend the event (or watch a recording within one day) and submit a one-paragraph reflection on the event via email to the instructor. Additional information about these opportunities will be posted to Teams as they arise.

If you use more tokens than you have, I will count the extras against lab writeups or readings, whichever affects your grade the least.

Course Materials

There are several software packages we use in this course both for learning how to program as well as conducting learning online.

  • Dr. Racket: an Integrated Development Environment (IDE) for the Racket programming language.
  • Your Grinnell Office365 account for the following services:
    • Microsoft Teams: a collaboration tool for discussion, Q&A, and video/voice conferencing.
  • Gradescope: The place you will submit all of your work for this course. Sign up for our course using the entry code which is posted in the Questions and Answers channel in Teams.

Please make sure you can access all of these resources, and please let me know if you have any problems with access.

There is no required textbook for this course, as the material is written by Grinnell faculty and posted on the course website. However, there are some useful textbooks and references you may want to bookmark or keep handy.

Books

References

  • Racket Documentation The canonical resource for the Racket language definition as well as documentation for its support tools and libraries.

Internet Connectivity

In addition to software, you will also need a stable Internet connection capable of streaming audio and video. Because of the importance of collaborative work in this class, participating in synchronous lab sessions is required. If your Internet connection does not meet these requirements, please contact me as soon as possible so we can work with Grinnell’s Information Technology Services (ITS) group to get you an adequate connection.

Help, collaboration, academic honesty, and academic integrity

To help expedite your learning, you can rely on me, our class mentor, and your peers as outlets in this course.

The Instructor, course staff, and other resources

When contacting the course staff, please use direct messages (DM) on Microsoft Teams. While we will generally not respond immediately—we will check our messages at fixed times throughout the day—we will prioritize responses to student questions over Teams versus queries sent through other means, e.g., email.

The course mentors also hold optional mentor sessions outside of regular class time. In these sessions, the mentors guide you through practice problems designed to help you master the material and answer any questions you have about the material. I highly recommend you attend each of these sessions, even if you feel like you understand the material. You never know what you don’t know, and the purpose of these sessions is to bring these blind spots to light!

The CS department provides evening tutors most days of the week. I encourage you to make use of the evening tutors. With the move online, the tutors have been trying a variety of ways ot meet; I’ll do my best to keep you informed.

The CS department also provides individual tutors as needed. If you find yourself struggling with the material, please let me know and I’ll work with our peer education coordinator to get one assigned to you.

Finally, if you would like to discuss things in more detail—–course content, more general questions about computer science, or other things—–feel free to schedule a (virtual) meeting with me, either during office hours or, if those don’t work, by sending me a message with available times.

Note that if I find that you have fallen behind on assignments or are showing difficulty on learning assessments, I will invite you to meet with me. Please accept those invitations; they are intended to be supportive, not punative.

Peer learning

Utilizing discussion with peers to facilitate your learning is a critical skill for success in computer science. However, at the same time, you must be aware that getting stuck and pushing through challenging problems is essential for robust learning. To this end, we allow the following forms of collaboration.

  • You are encouraged to collaborate with your peers on reading exercises, labs, and projects. You may also consult the course staff as well as other people and external resources. In all cases, you (or your group in the case of group work) should independently write up your solutions and cite all the resources you used in authoring your work.
  • You may only discuss learning assessments with the course staff. When completing assessments, you may only consult the course website and the Racket Documentation page in developing your program. You may not collaborate with peers, consult external resources beyond the ones mentioned above, or share information about these assignments with others.

Keep in mind that adaptation of pre-existing code whether it comes from a peer, myself, or the Internet, requires a citation in cases where it is allowed. Also, whenever you are expected to show your code’s output, you are expected to reproduce the output faithfully. In other words, you should not forge the results of your programs!

In all cases, the work that you produce should be your own. The golden rule is that you should be capable of reproducing your deliverable on the spot with minimal effort if it was accidentally deleted.

If you feel that the stress and pressure of the course are compelling you to violate the academic honesty policies of the course and the college as explained in the student handbook, please talk to me as soon as possible. The course’s grading policies as designed to help you manage your time in light of the different stressors in your life. I will do my best to work with you to figure out how to help you better manage your time relative to your learning goals and desired achievement level for the course.

Acknowledgements

I expect you to appropriately cite where you obtain material (see the preceding section), and you should expect me to do the same.

  • The inclusion statement has been taken verbatim from here.
  • The Take Care of Yourself Section has been taken verbatim from here.
  • Many of the policies (Incomplete grades, Religious Observance, Disabilities) come directly from Grinnell College recommendations.
  • Much of this syllabus has been developed by previous 151 instructors (see complete list at the bottom of this page), but most recently by Samuel A. Rebelsky and Peter-Michael Osera.