On this page:
People
Communication
Assignments and meetings
1 Lectures
2 Labs
3 Problem sets
4 Exams
5 Weekly rhythm
6 Submitting and returning homework
7 Getting and giving help
8 Grading
Contents
1 Topics covered
2 Readings
3 Computing environment
Courses shared with C211
CSCI-H211
CSCI-A591
Policies
1 Cell phones
2 Academic integrity
3 COVID-19
4 Sexual misconduct
8.6.0.14

General

People

Welcome to computer science at Indiana University! We are the course staff of C211 and H211:

Name

Email

Position

Chung-chieh Shan

ccshan@iu.edu

Lecturer

Sam Tobin-Hochstadt

samth@iu.edu

Lecturer

Joshua Crotts

ljcrotts@iu.edu

Assistant Instructor

Gillian Begg

gjbegg@iu.edu

Undergraduate Instructor

Charlie Blanz

cblanz@iu.edu

Undergraduate Instructor

Trevor Cunningham

trejcunn@iu.edu

Undergraduate Instructor

Rebecca Gross

rcgross@iu.edu

Undergraduate Instructor

Shiraz Jafri

shijafri@iu.edu

Undergraduate Instructor

Abe Leininger

aleinin@iu.edu

Undergraduate Instructor

Hazel Levine

hrlevi@iu.edu

Undergraduate Instructor

Kyle Li

kyleli@iu.edu

Undergraduate Instructor

Anshul Mangalapalli

ankmanga@iu.edu

Undergraduate Instructor

Abbey Martin

am227@iu.edu

Undergraduate Instructor

Alexander Mervar

amervar@iu.edu

Undergraduate Instructor

Adam Nan

anan@iu.edu

Undergraduate Instructor

Suriya Narayanasamy

surnara@iu.edu

Undergraduate Instructor

Shane O'Neill

shamonei@iu.edu

Undergraduate Instructor

Beck Peters

beckpete@iu.edu

Undergraduate Instructor

Haochen Sun

haocsun@iu.edu

Undergraduate Instructor

Haocheng Wang

haocwang@iu.edu

Undergraduate Instructor

Niyati Ramanathan

nramanat@iu.edu

Undergraduate Instructor

Communication

Use Indiana University email (@iu.edu) to reach any of the course staff. Addresses are given in the table above.

Check your Indiana University email (@iu.edu) daily. We sometimes send you private messages there.

The primary way we post information about this course is on this Web site here. We use Canvas only to record your grades. We also use a shared folder on Google Drive to return your homework with personal feedback, which you should review.

We have set up a course discussion forum using Discord. We will also make course announcements there. You must read the announcements and participate in the discussion. Sign up with the link we announced on Canvas when the course started. Change your nickname on Discord to the full name you’d like us to use in this class. Then, introduce yourself in the #introductions channel.

If you would like to talk to only instructors on Discord, type /breakout (with a forward slash at the beginning of the message) then hit Enter. This should create a “breakout channel” that only you and the staff can see.

Two safety tips on Discord (actually, on any network): First, enable two-factor authentication (next to your password setting). Second, don’t open any download you receive through a private message.

Assignments and meetings

This course requires you to do four kinds of assignments. For each kind of assignment, there is a corresponding kind of meeting designed to help you.

1 Lectures

There are 3 lecture sections. Each lecture section has 2 lectures per week:

C211

A591

H211

Time

Place

Instructor

3680

3929

Monday & Wednesday 9:45–11:00am

WY 005

Chung-chieh Shan <ccshan>

5866

5865

Monday & Wednesday 3:00–4:15pm

BH 203

Chung-chieh Shan <ccshan>

1499

Tuesday & Thursday 1:15–2:30pm

I 232

Sam Tobin-Hochstadt <samth>

Your attendance in person is required. However, if you cannot attend (for example, if you are sick), contact your professor as soon as possible to find out how you should do the work so that your skills stay on track with this course.

To prepare you for each lecture, we will post videos and exercises on this Web site—under Lectures always, and under Readings sometimes. Watch the videos and submit the exercises by midnight on Tuesday and Sunday before each lecture (except the very first lecture, and right after the midterms). We will grade your work quickly to confirm that you are keeping up.

If midnight rolls around and you’re not done yet with some lecture exercises, keep working on them and reviewing the videos. See “Ordering” below.

2 Labs

There are 6 lab sections. Each lab section has 1 lab per week:

Letter

C211

A591

H211

Time

Place

Instructors

A

5701

Thursday 9:10–11:05am

LH 030

Joshua Crotts <ljcrotts>,
Anshul Mangalapalli <ankmanga>,
Adam Nan <anan>

B

6444

6437

Thursday 1:50–3:45pm

BH 308

Charlie Blanz <cblanz>,
Trevor Cunningham <trejcunn>,
Abe Leininger <aleinin>,
Abbey Martin <am227>

C

1489

1478

Thursday 6:30–8:25pm

BH 308

Shiraz Jafri <shijafri>,
Kyle Li <kyleli>,
Alexander Mervar <amervar>

D

5426

Friday 9:10–11:05am

I 109

Gillian Begg <gjbegg>,
Rebecca Gross <rcgross>,
Haocheng Wang <haocwang>

E

7127

7126

Friday 12:40–2:35pm

BH 118

Joshua Crotts <ljcrotts>,
Suriya Narayanasamy <surnara>,
Shane O'Neill <shamonei>,
Haochen Sun <haocsun>

H

1500

Friday 1:50–3:45pm

SB 230

Hazel Levine <hrlevi>,
Beck Peters <beckpete>,
Niyati Ramanathan <nramanat>

We will post the instructions for each lab on this Web site under Labs. You don’t need to read those instructions before you show up to lab, but you can if you want. We will grade your work at the end of the lab session to give you friendly feedback.

3 Problem sets

There will usually be a problem set due every Wednesday by midnight. We will post the instructions for each problem set on this Web site under Problem sets. We will grade your work in a week to evaluate your learning and give you feedback.

Before you tackle each problem set, first make sure you have finished the preceding lecture exercises. See “Ordering” below.

To help you with problem sets and answer any questions, the instructors will conduct Tutoring, both in person and online. Your attendance of tutoring is optional but highly recommended. You can come to tutoring and hang out even if you don’t have a specific question but just want to study!

4 Exams

There will be two midterm exams and one final exam.
  1. The first midterm will be on Tuesday, September 20, at 7:00–9:30pm, in JH 124 and SW 119.
    • If your last name is between A and L, go to JH 124.

    • If your last name is between M and Z, go to SW 119.

  2. The second midterm will be on Tuesday, October 25, at 7:00–9:30pm.

The final exam will follow the campus-wide schedule:
  • If you’re registered for the Monday & Wednesday 9:45–11:00am lectures of C211 (3680) or A591 (3929), you must take the final exam in the same room (WY 005) on Wednesday, December 14, at 8:00–10:00am.

  • If you’re registered for the Monday & Wednesday 3:00–4:15pm lectures of C211 (5866) or A591 (5865), you must take the final exam in the same room (BH 203) on Monday, December 12, at 12:40–2:40pm.

  • If you’re registered for the Tuesday & Thursday 1:15–2:30pm lectures of H211 (1499), you must take the final exam in the same room (I 232) on Thursday, December 15, at 5:20–7:20pm.

We will provide more information to help you to study as each exam approaches. To accommodate exam schedule conflicts and disabilities, please contact us as soon as possible.

5 Weekly rhythm

The following diagram shows how you should study on each day of a typical week.

Posted assignments are listed by due date in the Due dates section of this Web site.

6 Submitting and returning homework

You must use the Handin system to submit lecture exercises and problem sets. The second lecture shows you how to set up and use Handin. Your homework is only accepted if you submit it in time to the correct destination, and if the message “Handin successful” appears. We encourage you to submit your work as early and often as possible; you can resubmit as many times as you want up until the due date.

We will return your homework with personal feedback in a shared Google Drive folder, which you should review. We will post your numeric grades on Canvas.

We do not accept late homework submissions. But if you submitted something for a problem set, see “Corrections” below on correcting it.

Corrections

If you receive a grade less than 9/10 on a problem set, you will have the opportunity to raise your grade to 9 by correcting all errors (including stylistic errors) and then presenting your corrected work to one of us during tutoring or other scheduled appointment. All corrections must be presented during the two weeks following the week in which your graded problem set becomes available back to you. You should be prepared to demonstrate the correct operation of your code, defend your solutions, and answer questions related to the constructs and techniques used in the programs.

Exceptions: Grades of 0 cannot be corrected, except for the first problem set. A grade above 9 cannot be promoted to a higher grade. The last problem set cannot be corrected. The second-to-last problem set can only be corrected for one week.

7 Getting and giving help

Tutoring is a great way to get help. Hours are listed on a separate page. Tutoring begins with the second week of classes, so there won’t be tutoring during the first week of classes. There also won’t be tutoring on the Wednesday after each midterm, and during final exam week.

Even when we don’t have tutoring scheduled, you can come to Luddy 0121 or Discord to talk with the other students (without sharing solutions).

Getting help online. We encourage you to look for help and to help others on Discord, but you are not allowed to post or share homework code there. If you would like an instructor to look at your code, don’t post it in a public channel, but first type /breakout (with a forward slash at the beginning of the message) then hit Enter. This should create a “breakout channel” that only you and the staff can see. You can post your code and concern there. If that doesn’t work, send the staff an email or a DM (direct message: right-click on their name and choose “Message”).

8 Grading

Your grade in this class will be determined by the following:
  • Online lecture exercises (10%). These exercises are automatically graded, and due by midnight before each corresponding in-person lecture.

  • Reading exercises (5%). These exercises foster discussion, and are also due by midnight before a corresponding in-person lecture.

  • In-person lectures and participation (10%). This is considered broadly, including helping and being helped by others in person and on Discord.

  • Labs (10%). This includes your lab submission and your engagement in the lab activity. Helping and being helped by others is an essential part of computer science and of each lab.

  • Weekly problem sets (30%). C211 students get full credit for finishing at least 80% of each problem set, but are encouraged to complete all problem sets.

  • Exams (35%).

Final letter grade in the class will be determined as follows. Everyone who gets at least 90% will get some form of A, everyone with at least 80% will get at least some form of B, and everyone with at least 70% will get at least some form of C. If you have questions about your grade, please see your instructor.

Ordering

The assignments of this course build on each other: to solve harder problems, you first have to solve easier ones. In particular, you should master lecture and lab exercises before tackling problem sets. To encourage you to build up your skills in this order, we will cap your grade on each problem set by your grade on the relevant lectures at the time you submit the problem set (or correct it—see “Corrections” above). The relevant lectures are listed at the top of the problem set. You can resubmit them at any time.

For example, Problem set 3 lists Lectures 2–4 at the top. If your average grade on Lectures 2–4 is 50% when you submit the problem set, then your grade on the problem set cannot exceed 50%. To lift this cap, you should first redo Lectures 2–4 to perfection, then submit the problem set (before the due date of the problem set) or correct the problem set (before the correction deadline of the problem set).

Contents

1 Topics covered

The topics of this course build on each other, so to understand later topics, it is crucial that you first master earlier ones.

A great way to study is to do from scratch the exercises we provide in lectures, labs, and problem sets, rather than merely reading or watching. This practice is important whether you are encountering a topic for the first time or reviewing it; the course staff is happy to answer questions not just about current homework but also about past homework. To help you find the material relevant to a topic, here is a list of topics and where they are taught in this course:
  • Arithmetic: lecture 1, lab 1, problem set 1

  • Definitions: lecture 2, lab 1, problem set 2

  • Design recipe: lectures 4–5, lab 2, problem set 3

  • Enumerations: lectures 6–7, lab 3, problem set 4

  • Structures: lectures 8–9, lab 4, problem set 5

  • Unions: lectures 10–11, lab 5, problem set 6

  • Recursion: lectures 12–15 and 19, labs 6–7, problem sets 6–7

  • Abstraction: lectures 16–19, lab 9, problem sets 8–9

  • Mutual recursion: lecture 20, lab 10, problem set 10

  • Generative recursion: lectures 22–24 and 26, labs 11–12, problem set 11

  • Accumulators: lectures 25 and 27, lab 13, problem set 12

2 Readings

Our textbook is How to Design Programs, Second Edition by Felleisen, Findler, Flatt, and Krishnamurthi. It is available in print and freely online.

This course will also require you to read and discuss papers (and a talk) about computer science:

3 Computing environment

We will use DrRacket version 8.6 (not 8.2 or 8.3), a programming environment for a family of programming languages. We will stick to DrRacket’s student languages plus a small number of libraries.

DrRacket is freely available on the Web for you to install on your own computer. It runs on most popular platforms (Windows, Mac OS X, Linux, and other *nixes). Programs behave similarly on all platforms, so you do not need to worry what kind of machine you use when you run your programs.

Computer lab availability. We urge you to download DrRacket to your own computer so that you can work wherever, whenever you like. But DrRacket is installed on the school computers if you need to use them.

Courses shared with C211

CSCI-H211

Students enrolled in H211 will cover similar material and will use the same Web page, submission server, and Discord discussion. However, students in H211 will have additional homework requirements, lab exercises, and exam problems.

H211 will have separate lectures and labs, listed above. H211 students should plan to attend their assigned lectures and labs.

All instructors are able to help with both H211 and C211 problems, but the H211 instructors are able to provide more specific assistance for H211 students. Corrections for H211 students must be presented to H211 instructors.

CSCI-A591

For graduate students enrolled in A591, the course will be identical to C211.

Policies

1 Cell phones

Research has shown us that even having our cell phones on the table in front of us diminishes our ability to learn well. Checking texts, emails, and messages is also unprofessional and disrespectful to our class community. Please silence and store your phones during class. We will do so as well.

2 Academic integrity

Like with a musical instrument or a sport, practice is the only way to learn the material in this course, and it can only be done by yourself. That is why we will strictly enforce the university’s academic integrity policy.

All homework assignments must be completed strictly by you. You are free to discuss an assignment with other people, so long as you acknowledge them by name in a comment in the homework you submit. However, you may not share code in any way, whether by voice, by writing, by print, by phone, by computer, or by any other way. Sharing code violates the University’s Code. Violations of academic integrity will be reported to the Office of Student Conduct and will hurt your grade.

One way to avoid sharing code is for each person who talked to erase everything afterwards. Then, each person who talked should do something unrelated to this course for 30 minutes, such as taking a walk or watching a show. Finally, each person who talked should redo the assignment from scratch without talking to anyone. This is not the only way to avoid sharing code.

We don’t want this policy to stop you from getting and giving help. If you’re not sure whether it is ok to share something in public, just ask first! You can always talk to any instructor (listed under “People” above), and you don’t need to acknowledge them by name in the homework you submit. You can share code with any instructor, whether by voice, by writing, by print, by phone, by computer, or by any other way. In particular, to share anything with instructors on Discord, you can first type /breakout (with a forward slash at the beginning of the message) then hit Enter. This should create a “breakout channel” that only you and the staff can see. You can post your code and concern there. If that doesn’t work, send the staff an email or a DM (direct message: right-click on their name and choose “Message”).

3 COVID-19

Wear a mask in person, as part of helping others.

If you have a positive COVID-19 test, have COVID-like symptoms, or have been instructed to quarantine, you should not attend class.

We all share responsibility for keeping us healthy. Being healthy is a prerequisite for learning (whereas prior programming experience is not). To help keep us healthy, here’s what to expect at lectures:
  • The professor will group you into teams and ask you to work together. Each team will have about 4 people.

  • You will be within 6 feet of your teammates. As you work, the professor will also come within 6 feet of you. Let’s make our close contact count.

  • The professor will wear a KN95 mask. You should wear at least a surgical mask (available at IU building entrances), not just a cloth mask. Press down on the nose wire to better cover your nose and mouth. Don’t take off your mask to talk, eat, drink, or take photos.

4 Sexual misconduct

One of our responsibilities is to help create a safe learning environment on our campus. Title IX and our own Sexual Misconduct policy prohibit sexual misconduct. If you have experienced sexual misconduct, or know someone who has, the University can help. Visit http://stopsexualviolence.iu.edu/ to learn more. If you are seeking help and would like to speak to someone confidentially, you can make an appointment with a Mental Health Counselor on campus (contact information available at http://stopsexualviolence.iu.edu/employee/confidential.html).

It is also important that you know that federal regulations and University policy require me to promptly convey any information about potential sexual misconduct known to me to our Deputy Title IX Coordinator or IU’s Title IX Coordinator. In that event, they will work with a small number of others on campus to ensure that appropriate measures are taken and resources are made available to the student who may have been harmed. Protecting a student’s privacy is of utmost concern, and all involved will only share information with those that need to know to ensure the University can respond and assist.